自定义音频采集和播放

最近更新时间:2022-09-20 05:17:40

功能介绍

实时音频传输过程中,anyRTC SDK 通常会启动默认的音频模块进行采集。在一些场景中,你会发现默认的音频模块无法满足开发需求:

  • 项目中已有自己的音频模块
  • 使用非麦克风采集的音频源,比如 MediaStreamTrack
  • 经过处理后的音频(变声等)
  • ...

本文介绍如何使用 anyRTC Web SDK 满足以上场景的开发需求。

实现方法

自定义音频采集

SDK 提供 createCustomAudioTrack 方法,支持通过传入一个 MediaStreamTrack 对象来创建本地音频轨道,通过这个方法实现自定义音频采集。

通过调用 getUserMedia 方法获取 MediaStreamTrack 对象,再将该对象传入 createCustomAudioTrack 创建可以在 SDK 中使用的本地音频轨道对象。

示例:

navigator.mediaDevices.getUserMedia({ video: false, audio: true })
  .then((mediaStream) => {
    const audioMediaStreamTrack = mediaStream.getAudioTracks()[0];
    // create custom audio track
    return ArRTC.createCustomAudioTrack({
      mediaStreamTrack: audioMediaStreamTrack,
    });
  })
  .then((localAudioTrack) => {
    // ...
  });

同样,你也可以利用强大的 Web Audio API 来获取 MediaStreamTrack,实现定制化的音频处理。

自定义音频播放

通过 createCustomAudioTrack 方法创建可以在 SDK 中使用的本地音频轨道后,就可以使用 LocalAudioTrack.play 方法渲染音频

localAudioTrack.play()

API 参考