实时音视频
  • iOS
  • Android
  • macOS
  • Windows
  • HarmonyOS
  • Linux
  • Web : JavaScript
  • 小程序
  • Flutter
  • Electron
  • Unreal Engine
  • Unity3D
  • uni-app
  • React Native
  • Cocos Creator
  • 产品简介
  • 下载
  • 体验 App
  • 快速开始
    • 跑通示例源码
    • 集成 SDK
    • 实现视频通话
    • 场景化音视频配置
  • 通信能力
  • 房间能力
  • 音频能力
  • 视频能力
  • 直播能力
  • 其他能力
  • 播放器插件
  • 最佳实践
  • 客户端 API
  • 服务端 API
  • 常见错误码
  • 常见问题
  • 文档中心
  • 实时音视频
  • 音频能力
  • 混音

混音

更新时间:2024-01-30 20:57

功能简介

混音是指 SDK 将第三方音频数据与麦克风采集的音频数据整合为一路音频流,以实现在通话或直播过程中播放音效(如掌声、口哨声)、自定义声音、音乐文件等,并且让房间内的其他成员也能听到声音。

示例源码下载

请参考 下载示例源码 获取源码。

相关源码请查看 “src/Examples/AdvancedAudioProcessing/AudioMixing” 目录下的文件。

前提条件

在使用混音功能之前,请确保:

使用步骤

1 (可选)变调

开始混音前,开发者可以根据需要,选择是否对媒体标签的音频进行变调

在混音前,开发者可以根据业务需要,通过 setAudioChangerParam 接口改变音频数据的音调。例如,在 KTV 独唱场景中,对伴奏进行升、降调,同时保持人声不变。

  • 同一时间内,一个 <video> 或 <audio> 标签的数据仅能进行一种音效处理,不可同时进行多种处理,即变声、混响、立体声、变调只能选择一种使用。
  • 针对同一个 <audio> 标签的音频数据,如果开发者调用了 setAudioChangerParamenableLiveAudioEffect(两个接口都包含 mode 参数,用于设置音效生效模式),则音效生效模式以最后调用的接口设置为准。
const result = await zg.setAudioChangerParam(
    document.getElementById("audio"),
    3,
    3
);

2 开始混音

推流后,调用 startMixingAudio 方法开始混音,通过 streamIDmediaList(媒体标签列表:videoaudio)将音频混入正在推的流中。

  • 通过 videoaudio 媒体标签来控制已混入音频的暂停、恢复操作。
  • 自 Chrome 86 开始,混第三方音频时,如果本地音频设置静音,拉流端将无法听到对应的声音。
  • 受 Safari 浏览器策略影响,将 audio 标签设置为静音,会出现播放后自动暂停、无法混入多条音频的情况。
  • 通过能力检测接口 checkSystemRequirements 检查到 customCapturefalse ,即浏览器不支持获取媒体元素的 MediaStream,则不能使用该接口。
const result = zg.startMixingAudio(publishStreamId, [
    $('#extenerVideo1')[0] ,
    $('#extenerVideo2')[0] ,
]);
console.warn('混音', result);

3 停止混音

  • 通过能力检测接口 checkSystemRequirements 检查到 customCapturefalse ,即浏览器不支持获取媒体元素的 MediaStream,则不能使用该接口。

调用 stopMixingAudio 方法停止混音。

zg.stopMixingAudio(publishStreamId);
本篇目录