自定义音频采集与渲染
更新时间: 2024/08/05 15:02:55
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;
此文档是否对你有帮助?