本文主要介绍如何通过 RTC Web SDK 获取格式为 PCM 的原始音频数据,以便进行二次处理,例如本地录制、内容审核等。
创建和初始化一个音视频引擎类。
如果你需要获取远端的音频数据,还需要加入房间并发布音频流,参考 实现音视频通话 获取详细步骤。
const engine = VERTC.createEngine(appId); await engine.startAudioCapture(); // 开启本地音频设备采集
定义一个用于处理音频数据的回调函数,SDK 会在获取到每一帧音频数据时调用此函数。然后调用 setAudioFrameCallback 方法,将您定义的回调函数注册到 SDK。
// 定义一个用于处理音频数据的回调函数 const callback = (data: AudioFrameData) => { console.log('AudioFrameData', data); } // 开启本地主流的回调 engine.setAudioFrameCallback( StreamIndex.STREAM_INDEX_MAIN, /* userId */undefined, // userId 为空表示获取本地音频,获取远端数据时需指定 userId callback, frameSize ); // 开启远端主流的回调 // engine.setAudioFrameCallback(StreamIndex.STREAM_INDEX_MAIN, userId, callback, frameSize);
不再需要获取音频数据时,再次调用 setAudioFrameCallback 并将回调函数参数设为 undefined 来取消注册,以节省性能。
// 关闭本地主流的回调 engine.setAudioFrameCallback( StreamIndex.STREAM_INDEX_MAIN, /* userId */undefined, /* callback */undefined, frameSize ); // 关闭远端主流的回调 // engine.setAudioFrameCallback(StreamIndex.STREAM_INDEX_MAIN, userId, /* callback */undefined, frameSize);
通话结束后,销毁音视频引擎以释放资源。
如果用户已经进入房间,则需要在销毁所有房间实例后再销毁音视频引擎。
// 销毁引擎 engine.destroy();
| 功能 | Web |
|---|---|
| 设置并开启指定的音频数据帧回调 | setAudioFrameCallback |