webRTC-通过webAudio gainNode推送流,即使在呼叫挂断后也能保持话筒接通
我有以下几段代码webRTC-通过webAudio gainNode推送流,即使在呼叫挂断后也能保持话筒接通,webrtc,web-audio-api,Webrtc,Web Audio Api,我有以下几段代码 function modifyGain(stream){ var AudioContext = window.AudioContext || window.webkitAudioContext; var ctx = new AudioContext(); var src = ctx.createMediaStreamSource(stream); var dst = ctx.createMediaStreamDestination(); var ga
function modifyGain(stream){
var AudioContext = window.AudioContext || window.webkitAudioContext;
var ctx = new AudioContext();
var src = ctx.createMediaStreamSource(stream);
var dst = ctx.createMediaStreamDestination();
var gainNode = ctx.createGain();
gainNode.gain.value = 3.5;
src.connect(gainNode);
gainNode.connect(dst);
return dst.stream;
}
我在原始流上尝试了addTrack()
和removeTrack()
,但没有成功
这就是如何使用上述功能
webcamStream = await navigator.mediaDevices.getUserMedia(mediaConstraints);
webcamStream = modifyGain(webcamStream);
document.getElementById("local_video").srcObject = webcamStream;
webcamStream.getTracks().forEach(
function (track){
myPeerConnection.addTrack(track, webcamStream);
});
这就是我在呼叫挂断时停止跟踪的方法
webcamStream.getTracks().forEach(track => {
track.stop();
});
webcamStream = null;
localVideo.srcObject = null;
在我应用增益相关代码之前,一切正常。但一旦我加上浏览器不释放麦克风,我必须刷新页面,以便与另一端进行任何音频交换
请帮忙。有两条流。您仅停止第二个流中的曲目,该流由
ctx.createMediaStreamDestination()
创建
要放弃麦克风,您需要停止从
navigator.mediaDevices.getUserMedia获得的原始流中的曲目。有两个流。您仅停止第二个流中的曲目,该流由ctx.createMediaStreamDestination()
创建
要放弃麦克风,您需要停止从navigator.mediaDevices.getUserMedia
获取的原始流中的曲目。getUserMedia无法重新录制:我也无法使用您的小提琴进行复制。我尝试了以下给定的代码,它似乎可以正常工作。但我不确定这是一个好方法还是否;webcamStream=修改增益(preGainLocalStream)
然后我停止了webcamStream
和preGainLocalStream
使用preGainLocalStream.getTracks().forEach(track=>{track.stop();})代码>和其他流相同。无法重新编程:我也无法使用您的小提琴进行复制。我尝试了下面给定的代码,它似乎可以工作。但我不确定这是一个好方法还是否;webcamStream=修改增益(preGainLocalStream)
然后我停止了webcamStream
和preGainLocalStream
使用preGainLocalStream.getTracks().forEach(track=>{track.stop();})代码>和其他流相同。