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

标签 browser webrtc mediastream rtcpeerconnection

几年前实现了一种机制,该机制通过数据通道消息发出信号,表明远程用户将其本地视频静音(例如,将启用设置为 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/

相关文章:

javascript - ImageCapture API 的替代方案以获得更好的浏览器支持

android - 适用于 Android 浏览器的 VLC 插件

javascript - 使用 block 中心调用scrollIntoView(...) 不起作用

javascript - Onicecandidate 不会在第二台电脑上触发

Node.js webRTC 屏幕共享

javascript - Kurento 媒体服务器在没有音频的情况下进行录制无法正常工作

Javascript - 从 mp3 文件录制音频

javascript - 无法使用 JavaScript 打开 chrome 浏览器

javascript - getTimezoneOffset 如何知道主机系统的时区?

php - 使用 WebRTC for iOS 创建自定义音频/视频聊天服务器?