几年前实现了一种机制,用于通过数据通道消息发出信号,远程用户将其本地视频静音(例如,将启用设置为 false),然后在远程端采取适当的操作(例如,改为显示远程用户头像的黑色视频流),我一直在对一个非直接相关的函数进行一些测试,让我查看视频轨道的状态(即,对等连接的接收流上的视频轨道),我注意到远程视频上的静音状态有时会在真假之间波动(尽管远程流本身没有实际变化)。
很难说这什么时候发生,但似乎它可能(不知道是否真的是这种情况)与长时间不将媒体附加到对象(例如,用于播放的 HTML 视频元素)相关(例如,10 秒),并且似乎如果它在短时间内附加,则视频轨道在接收端不会显示静音 = true 状态。
W3 媒体捕获和流规范(参见https://w3c.github.io/mediacapture-main/#track-muted)“当源暂时无法为轨道提供数据时,MediaStreamTrack 被静音。轨道可以被用户静音。通常此操作不在应用程序的控制范围内。这可能是由于用户点击硬件开关或切换操作系统/浏览器 chrome 中的控件。用户也可以将轨道静音代理人。” 该规范似乎没有说明造成这种情况的原因是什么或可能是什么。
在 webRTC 的情况下,任何人都可以提供一些指示,说明为什么当来自远程的媒体实际流动时,从 webrtc 对等连接引用的远程视频流可能会显示静音状态 true。此外,当远程视频流实际上不反映远程状态而是某些本地处理时,静音状态的实际价值或用途可能是什么。
感谢您对此的任何想法。