我已经创建了 webRtc 连接(javascript),并且我想暂时取消视频轨道的发送(必须保留音频轨道)以最大程度地减少网络流量。 我应该执行哪些操作才能做到这一点: (1) 做
videoTrack.enabled = false;
(videoTrack是MediaStreamTrack)
然后执行:videoTrack.enabled = true;
恢复它
或(2)调用 videoTrack.stop() ?
(1) 和 (2) 之间有什么区别 - 哪种情况会最大限度地减少网络流量?
案例(2)我该如何恢复视频发送?
将 .enabled 设置为 false 将发送黑帧而不是实际视频,从而大大减少带宽使用。试试 https://webrtc.github.io/samples/src/content/peerconnection/bandwidth/ 通过粘贴
localStream.getVideoTracks()[0].enabled = false
显示大约 12kbps 加上标头开销。
它仍然会为每个帧发送数据包,这在某些情况下可能是不可取的。使用 RTCRtpSender 的
replaceTrack(null)
或停止轨道会进一步减少这种情况。
停止跟踪还有一个额外的好处,它会关闭摄像头灯,这是用户期望的隐私保护,但在重新获取视频并再次调用
getUserMedia
后,您需要再次调用replaceTrack。