几年前实现了一种机制,该机制通过数据通道消息发出信号,表明远程用户将其本地视频静音(例如,将启用设置为 false),然后在远程端采取适当的操作(例如,显示远程用户头像而不是黑色视频流),我一直在对一个非直接相关的功能进行一些测试,让我查看视频轨道的状态(即,对等连接的接收流上的视频轨道)和我请注意,远程视频的静音状态有时会在 true 和 false 之间波动(尽管远程流本身没有实际变化)。
很难说出这种情况发生的确切时间,但似乎可能(不知道是否真的如此)与长时间不将媒体附加到对象(例如,用于播放的 HTML 视频元素)相关时间(例如 10 秒),并且似乎如果它在短时间内附加,则视频轨道不会在接收方显示 muted=true 状态。
W3 媒体捕获和流规范(请参阅 https://w3c.github.io/mediacapture-main/#track-muted)“当源暂时无法为轨道提供数据时,MediaStreamTrack 将被静音。用户可以将轨道静音。通常此操作不受控制应用程序的。这可能是由于用户按下硬件开关或切换操作系统/浏览器 chrome 中的控件造成的。用户代理也可以使轨道静音。”该规范似乎没有说明造成这种情况的原因是什么或可能是什么。
在 webRTC 的情况下,任何人都可以提供一些指示,说明为什么当来自远程的媒体实际流动时,从 webrtc 对等连接引用的远程视频流可能显示为 true 的静音状态。此外,当远程视频流上的静音状态实际上并不反射(reflect)远程状态而是某些本地处理时,它的实际值(value)或用途可能是什么。
感谢您对此的任何想法。
最佳答案
如文档所述,静音状态因用户操作、网络甚至浏览器本身而异。如果它在数据流动时被静音,这可能是因为您或其他用户的浏览器(例如,可能是许多其他实际上并不重要的原因)。
你问这是干嘛的? 其中许多属性仅用于测试目的(当深入研究 webrtc 开发时),不适用于生产。
正如 MDN 中所说:
When possible, avoid polling muted to monitor the track's muting status. Instead, add event listeners for the mute and unmute events.
关于browser - 远程视频轨道静音/启用的 webRTC 含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63375725/