You need to enable JavaScript to run this app.
导航
Web 端获取原始音频数据
最近更新时间:2025.10.15 22:27:27首次发布时间:2025.07.30 21:48:38
复制全文
我的收藏
有用
有用
无用
无用

本文主要介绍如何通过 RTC Web SDK 获取格式为 PCM 的原始音频数据,以便进行二次处理,例如本地录制、内容审核等。

适用场景

  • 本地音频录制:将自己或远端的音频数据保存为本地文件。
  • 客户端内容审核:将获取的音频数据交给第三方服务进行实时内容审核。
  • 自定义音频处理:对音频数据进行变声、降噪等自定义处理。

功能实现

1. 创建引擎并开启音频采集

创建和初始化一个音视频引擎类。

如果你需要获取远端的音频数据,还需要加入房间并发布音频流,参考 实现音视频通话 获取详细步骤。

const engine = VERTC.createEngine(appId);
await engine.startAudioCapture(); // 开启本地音频设备采集

2. 开启回调

定义一个用于处理音频数据的回调函数,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);

3. 停止获取数据

不再需要获取音频数据时,再次调用 setAudioFrameCallback 并将回调函数参数设为 undefined 来取消注册,以节省性能。

// 关闭本地主流的回调
engine.setAudioFrameCallback(
    StreamIndex.STREAM_INDEX_MAIN, 
    /* userId */undefined, 
    /* callback */undefined, 
    frameSize
);

// 关闭远端主流的回调
// engine.setAudioFrameCallback(StreamIndex.STREAM_INDEX_MAIN, userId, /* callback */undefined, frameSize); 

4. 销毁引擎

通话结束后,销毁音视频引擎以释放资源。

如果用户已经进入房间,则需要在销毁所有房间实例后再销毁音视频引擎。

// 销毁引擎
engine.destroy();

API

功能Web
设置并开启指定的音频数据帧回调setAudioFrameCallback