我正在研究WebRTC,并试图弄清楚它是如何工作的。
我在www.example.com上修改了this sampleWebRTC.github.io,使getUserMedia成为leftVideo的源,并流传输到rightVideo。
我想添加一些功能,比如当我按下左视频暂停时(我的浏览器是Chrome 69)
我改变了Call()的部分
...
stream.getTracks().forEach(track => {
pc1Senders.push(pc1.addTrack(track, stream));
});
...
并在left上添加功能Video
leftVideo.onpause = () => {
pc1Senders.map(sender => pc1.removeTrack(sender));
}
我不想关闭连接,我只想关闭视频或音频。
但是在我暂停leftVideo之后,rightvideo仍然会得到跟踪。我在这里做错了吗,或者是其他地方?
谢谢你的帮助。
3条答案
按热度按时间093gszye1#
首先,你需要得到对等体的流,你可以使用
MediaStreamTrack
的enabled
属性来静音/隐藏流,使用下面的代码片段来切换媒体。o4tp2gmn2#
获取所有发件人;
循环并删除每个发送轨道;
添加新的轨道(如果需要);
编辑:或者,如果不需要重新协商(条件如下所列),则使用
replaceTrack
(https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender/replaceTrack)。并非所有的轨道更换都需要重新谈判。事实上,即使是看似巨大的改动也可以不需要谈判而完成。以下是可能引发谈判的改动:
hyrbngr73#
这是简化的代码。解决了本主题中描述的大多数问题。