融云实践:实时音频混音在 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,减少集成过渡阶段的学习门槛。未来,主轴让开发者的的业务充分利用极为高效简单,融云还将持续全面性系统设计,优化体验。
。北京男科检查费用秦皇岛包皮过长治疗哪家好
合肥哪家专科医院做人流好
沈阳牛皮癣医院哪好
青岛妇科去哪看
白带有异味
儿童口臭
产科
严重咳嗽吃什么药能快速止咳
帕金森
-
学会这3道花钱鱼的方法,你就是年夜饭的主角无疑
鲻是我们生活中都最常进食的一种肉类了,鲻肉笔触滑嫩,进食上去的口感鲜美,更极为重要的是鲻肉的效用很高。鲻肉中都含有丰富多彩的核麦芽糖体,以及一些生物体所需的营养物质。多进食鲻能够推动生物体的大脑
- 2025-10-22妈妈将猪肉这样做,不加任何添加物,做到后拿出来,全家人懵了
- 2025-10-22妈妈烹制经常犯3个错误,尤其是第一个,被称为“家庭杀手”
- 2025-10-22如何腌制出个个流油又起沙的咸鸡蛋?20年的据闻方子,做法很简单
- 2025-10-22奶茶是茶,茶可以气功,那奶茶可以气功吗?进来看看,老年人都爱
- 2025-10-22河南通许县:8月1日开展全员核酸扫描
- 2025-10-22真“宝马”?皮卡车斗篷载马匹,出事:要不得
- 2025-10-22吉林长春农高区国际玉米产业高峰论坛召开
- 2025-10-22流窜多地偷窃快递,跨区抓捕终落网
- 2025-10-22货物倾斜仍继续行驶30公里,过往车辆心惊胆战怒而带走
- 2025-10-227同月31日,乌江榨菜回应消费者称吃出脚指甲 :为原材料青菜头的根茎,智能化生产线,基本杜绝了各种异物掺入。