您现在的位置:首页 >> 建材导购

融云实践:实时音频混音在 Web 端的追寻与实践

发布时间:2025/08/11 12:19    来源:润州家居装修网

本地播映背景音乐转换成KKBOX

// 创建者一个 audio 字句播映本地回放

const audioEl = document.('audio');

audioEl.src = '/media/bgmusic.mp3';

audioEl.loop = true;

audioEl.play();

// 从 audio 字句里面抓由此而来一个 mediaStream 普通人,以在 chrome IE里面为例

let mediaStream = null

audioEl.edmetadata = () => {

mediaStream = audioEl.captureStream();

}

// 转换成本地回放对应的 mediaStream 回放非同

const bgMusicSourceNode = audioContext.createMediaStreamSource(mediaStream);

创建者播映自产

// 创建者KKBOX播映自产

const destination = audioContext.createMediaStreamDestination()

相连链表

将两个回放非同链表相连至同一输自产。

// 对讲机回放非同相连反向自产

micSourceNode.connect(destination)

// 背景音乐回放非同相连反向自产

bgMusicSourceNode.connect(destination)

获由此而来DEMO小样

从反向链表所在位置由此而来得混合成后的小样 MediaStreamTrack。

// 获由此而来DEMO audioTrack

const mixAudioTrack = destination.stream.getAudioTracks()[0]

由此而来到DEMO小样 mixAudioTrack 后,我们所需解决的问题是,如何在单单的核心内容情景里面,无需再次建立对等相连,就能使对尾端听到对讲机和交换音乐的人声。

DEMO小样在 WebRTC 里面生效

此时就可以把DEMO小样 mixAudioTrack 透过起来了。从 RTCPeerConnection 上找出送达对讲机回放的 RTCRtpSender 普通人,使用 mixAudioTrack 替换已经发行的对讲机小样,具体情况充分利用如下:

// 发行对讲机海洋资非同从前创建者的 RTCPeerConnection 最简单普通人

const rtcPeerConnection = new RTCPeerConnection([configuration])

// 获由此而来送达回放的 RTCRtpSender 普通人

const micSender = rtcPeerConnection.getSenders().find((sender) => {

return sender.track.kind === 'audio'

})

// 使用 audioContetx 里面拿到的DEMO mixAudioTrack 替换对讲机 audioTrack

micSender.replaceTrack(mixAudioTrack)

接;大内部设计规划

融云实时核心内容 SDK 提供了 createMicrophone

AudioTrack、createLocalFileTracks 法则,分别常用创建者对讲机小样、本地或在线回放小样。

DEMO几乎建立在这两个法则创建者的最简单高台,在 RCRTCRoom 和 RCLivingRoom 上减少 start

MixAudio 和 stopMixAudio 法则常用DEMO、停止DEMO的接;大支持。

表列出展示的业务层DEMO的执行系统内部设计,rtcClient、rtcRoom 为的业务尾端由此而来得的 RTC 客户尾端最简单和房中间最简单。

创建者、发行一个对讲机海洋资非同

// 创建者一个对讲机小样

const micAudioTrack = rtcClient.createMicrophoneAudioTrack()

// 发行对讲机小样

rtcRoom.pushlish([micAudioTrack])

创建者一个本地回放小样

// 创建者一个本地回放小样,file 为 获由此而来到的 File 最简单

const localAudioTrack = rtcClient.createLocalFileTracks('bgmusic', file)

开始DEMO

将本地回放偷盗已发行的对讲机回放里面,startMixAudio 的第一个参数为已发行的小样,第二个为要偷盗的本地回放小样。

// 开始DEMO

rtcRoom.startMixAudio(micAudioTrack, localAudioTrack)

停止DEMO

传入所需去掉DEMO的小样。SDK 会从对讲机回放里面去掉本地回放的人声。

// 停止DEMO

rtcRoom.stopMixAudio(micAudioTrack)

基于以上极为迷人含蓄的方案,开发者可以更加再捷、低成本地连接线DEMO,减少集成过渡阶段的学习门槛。未来,主轴让开发者的的业务充分利用极为高效简单,融云还将持续全面性系统设计,优化体验。

北京男科检查费用
秦皇岛包皮过长治疗哪家好
合肥哪家专科医院做人流好
沈阳牛皮癣医院哪好
青岛妇科去哪看
白带有异味
儿童口臭
产科
严重咳嗽吃什么药能快速止咳
帕金森

上一篇: NFC | 品牌与卖家无缝连接的解决方案

下一篇: 吉利汽车厂商玩真的!首款手机外观专利揭露:居中三摄抢眼

友情链接