webRTC远程视频轨道静音/启用的含义

时间:2020-08-12 11:39:24

标签: browser webrtc mediastream rtcpeerconnection

早在几年前就实现了一种机制,该机制用于通过数据通道消息发信号通知远程用户将其本地视频静音(例如,将enable设置为false),然后在远程侧采取适当的措施(例如,显示远程用户头像而不是黑色视频流),我一直在对一个非直接相关的功能进行一些测试,这些功能使我查看了视频轨道的状态(即,对等连接的接收流上的视频轨道),并且我请注意,远程视频的静音状态有时会在true和false之间波动(尽管远程流本身没有实际变化)。

很难说出何时准确发生,但似乎很可能(很不知道是否确实如此)与长时间不将媒体附加到对象(例如要播放的HTML视频元素)相关时间(例如10秒),并且如果它在短时间内连接,则视频轨道在接收端不会显示为Muted = true状态。

W3媒体捕获和流规范(请参阅https://w3c.github.io/mediacapture-main/#track-muted)“当源暂时无法向轨道提供数据时,MediaStreamTrack将被静音。用户可以将轨道静音。通常,此操作在外部进行应用程序的控件。这可能是由于用户点击了硬件开关或在操作系统/浏览器镶边中切换了控件。用户代理也可以将曲目静音。”规范似乎并未解决造成这种情况的原因。

在使用webRTC的情况下,任何人都可以提供一些指示,说明当来自远程的媒体实际上正在流动时,为什么从webrtc对等连接引用的远程视频流可能显示为true的静音状态。另外,当远程视频流实际上不反映远程状态而是反映某些本地处理时,该状态在远程视频流上的实用价值或用途是什么。

感谢对此的任何想法。

1 个答案:

答案 0 :(得分:1)

如文档所述,静音状态因用户操作,网​​络甚至浏览器本身而异。如果在数据流通时将其静音,则可能是由于您或其他用户的浏览器(例如,可能有许多其他原因,这些因素实际上并不重要)。

这是做什么用的,你问? 其中许多属性仅用于测试目的(深入研究webrtc开发时),不适合用于生产。

MDN中所述:

在可能的情况下,请避免将轮询静音以监视轨道的静音 状态。而是为静音和取消静音事件添加事件侦听器。