Google chrome Webrtc Web音频向传入流添加延迟节点
我正在使用Google Chrome中的Web audio API为传入的纯音频WebRTC流添加延迟Google chrome Webrtc Web音频向传入流添加延迟节点,google-chrome,webrtc,signal-processing,html5-audio,web-audio-api,Google Chrome,Webrtc,Signal Processing,Html5 Audio,Web Audio Api,我正在使用Google Chrome中的Web audio API为传入的纯音频WebRTC流添加延迟 connectionRecv.onaddstream=(事件)=>{ const recvAudio=新音频(); recvAudio.srcObject=event.stream.clone(); recvAudio.autoplay=true; recvAudio.onloadedmetadata=()=>{ //控制是否也应播放原始流 //如果为true,则会导致WebRTC getSt
connectionRecv.onaddstream=(事件)=>{
const recvAudio=新音频();
recvAudio.srcObject=event.stream.clone();
recvAudio.autoplay=true;
recvAudio.onloadedmetadata=()=>{
//控制是否也应播放原始流
//如果为true,则会导致WebRTC getStats()接收曲目音频级别==0
recvAudio.muted=muteOriginalStream;
const recvAudioSource=audioContext.createMediaStreamSource(recvAudio.srcObject作为MediaStream);
const delayNode=audioContext.createDelay();
delayNode.delayTime.value=1;//延迟1秒
recvAudioSource.connect(延迟节点);
delayNode.connect(audioContext.destination);
};
};
这是一个小问题。我想静音原始流,这样我就不会听到双重音频(原始流和延迟流)。但是,当我将原始流静音以便只听到延迟流时,rtpeerconnection
getStats()
为接收曲目audioLevel
返回0
我已经尝试了许多不同的方法围绕接收到的流进行管道传输,因此我只听到延迟版本,但要么根本听不到任何音频,要么getStats()
audioLevel
为0。我正在寻找一种实现,它可以保留WebRTCgetStats()
中的非零audioLevel
,而只有延迟的流通过音频输出设备播放。简言之:
如何仅播放延迟流而不将WebRTCgetStats()归零
receive trackaudioLevel
?
我在stackblitz上创建了一个问题的最低复制版本,其中我创建了一个环回WebRTC连接,发送方和接收方是同一个浏览器。检查控制台日志以查看从getStats()
返回的接收曲目audioLevel
注意:如果您使用我的stackblitz,我建议您使用耳机以避免反馈循环。我没有解决您所述问题的方法,但作为获取级别信息的解决方法,您可以将音频添加到音频上下文中,并使用它提供的时域或频域数据自己计算音频级别。谢谢您,凯文,这就是我们最终要做的。我们意识到stats audioLevel似乎是实验性的,在其他浏览器中不受支持。