Android

自定义音频采集与渲染

更新时间: 2021/07/13 07:36:29

NERTC SDK 支持自定义音频采集与渲染功能,可以向 NERTC SDK 提供自定义的音频输入源数据,使用自定义的渲染器,并由 NERTC SDK 进行编码推流。

一般情况下,App 采用默认设备采集音频数据,通常是本设备的内置麦克风。但在部分场景下可能需要使用自定义的音频源,例如:

  • 需要使用自定义的音效或美声库、前处理库等场景。
  • 需要使用外部音频源、或使用外接设备进行音频数据采集,例如在音视频通话或互动直播中播放音频文件等场景。
  • App 无法获取音频采集设备的控制权限,例如音频采集设备已被其他业务占用、硬件设备的默认音频采集模块损坏等场景。

基于以上场景,NERTC SDK 支持使用自定义的音频源或渲染器,以实现业务场景中的相关需求。本文档将介绍如何实现自定义音频采集功能。

自定义音频采集

通过 createStream 创建音频流时,可以通过 audioSource 指定自定义的音频输入源,以此实现自定义音频采集。

const mediaStream = await navigator.mediaDevices.getUserMedia({audio: true});
const audioSource = await mediaStream.getAudioTracks()[0];
// 处理一番audioSource
const localStream = NERTC.createStream({
  audio: true,
  audioSource: audioSource
});
await localStream.init();
await client.publish(localStream);

自定义音频渲染

远端 Stream 对象提供接口 getAudioStream(),用于返回一个 MediaStream 对象。您可以通过自行渲染这个对象实现自定义的音频渲染。

例如,将 audio dom 节点的 srcObject 属性设为该对象。

使用自定义音频渲染功能时,需要在播放远端流时,关闭默认的音频渲染。

//播放源端音频流时,关闭默认的音频渲染
remoteStream.play({
  audio: false,
  video: true
});
const audioStream = remoteStream.getAudioStream();
// audioDom为自行创建的DOM节点
audioDom.srcObject = audioStream;
此文档是否对你有帮助?
有帮助
去反馈
  • 自定义音频采集
  • 自定义音频渲染