首页 > 解决方案 > WebRTC + Web App:连接建立后远程视频静音

问题描述

我目前正在解决与流式传输实时视频相关的问题。

我看到的症状似乎与此线程有关:

https://groups.google.com/forum/#!searchin/discuss-webrtc/muted%7Csort:date/discuss-webrtc/x-qPgG4aONI/Hgss1q4GCQAJ

我已经能够以两种不同的方式重现该问题。

第一个场景涉及三个不同的 Web 浏览器/计算机等。我将给这些浏览器命名为 Persons A、B 和 C。 Person A 将是主机。A 人和 B 人能够看到对方。B 人和 C 人不能。

另一种情况涉及两个不同的网络浏览器/计算机等(我们将它们称为人员 A 和 B)。再次,成功建立了一对一的对等通信,并且两个用户都能够看到彼此。在这种情况下,我以编程方式添加了一些源代码,以便人 B 可以动态销毁然后重建视频元素(进而停止和重新启动网络摄像头)。破坏一切的人 B 会产生预期的行为。但是,当 B 决定重新启动网络摄像头时,A 无法看到 B。

我决定为 MediaStreamTrack 和 video 元素创建事件处理程序。在一个完美的世界里,我的日志应该是这样的:

tracks received from peer: (2) [MediaStreamTrack, MediaStreamTrack]
mute event triggered for track: MediaStreamTrack {kind: "audio", id: "...", label: "...", enabled: true, muted: false, …}
mute event triggered for track: MediaStreamTrack {kind: "video", id: "...", label: "...", enabled: true, muted: false, …}
end event triggered for track: MediaStreamTrack {kind: "audio", id: "...", label: "...", enabled: true, muted: false, …}
loadstart event triggered...
onloadedmetadata event triggered...
canplay event triggered...
canplaythrough event triggered...

但是,如果接收用户无法查看视频流,则永远不会触发 onloadedmetadata 事件。相反,视频媒体流轨道最终被静音:

tracks received from peer: (2) [MediaStreamTrack, MediaStreamTrack]
mute event triggered for track: MediaStreamTrack {kind: "audio", id: "...", label: "...", enabled: true, muted: false, …}
mute event triggered for track: MediaStreamTrack {kind: "video", id: "...", label: "...", enabled: true, muted: false, …}
loadstart event triggered...
mute event triggered for track: MediaStreamTrack {kind: "video", id: "...", label: "...", enabled: true, muted: true, …}

我想了解可能导致这种行为的变体,以及我可能有的任何选项来解决这个问题,如果可能的话。我尝试阅读官方 WebRTC 文档;但是,我真的找不到任何线索。也许我不知道去哪里找。

感谢您的时间和考虑。

标签: javascriptwebvideowebrtcmute

解决方案


推荐阅读