HTML5 通过 WebRTC 分辨率更改问题的视频和 MediaStreamTrack 流

HTML5 video and MediaStreamTrack stream via WebRTC resolution change issue

我正在使用 HTML5 视频标签通过 WebRTC 协议显示传入的实时视频流。基本上当远程MediaStreamTrack is received by a client it is assigned to HTMLMediaElement.srcObject。直播流出现在视频中,到目前为止一切正常。但是,如果在某个时刻 receiving/sending 客户端遇到网络连接降级,则 WebRTC 降级实施会通过降低流的分辨率来启动。发生的事情是视频变得“损坏”,尽管您仍然可以在噪音之间区分其中的一些。这是它的外观的屏幕截图:

在控制台 MediaStreamTrack 上调试显示了分辨率是如何变化的:

但有趣的部分来了。似乎原生 HTML5 视频播放器仅在某些分辨率下有问题。在这种情况下,它在 720x540px 和 1440x1080px 下工作正常,但在 1080x810xpx 下就不行了。我在网上浏览了本机 HTML5 视频播放器规范,但没有关于支持的分辨率的信息。我不确定我将如何继续解决这个问题。我有以下想法:

呸!这是浏览器级别或更低级别的错误,除了提交错误票之外,您无能为力。

同时,我怀疑这个问题是由于您使用了奇怪的分辨率造成的。坚持正常的纵横比,如 16:9 或 4:3(即使你通过 CSS 裁剪)无论如何都会让你更好地兼容网络摄像头。

您可能还在为视频编解码器使用硬件加速。尝试禁用它(如果它已经被禁用,则启用它)看看是否有帮助。

这个问题最初是通过将 MediaConstraintsgoogCpuOveruseDetection 设置为 false 来解决的。重新审视了这个问题,似乎 Google 已经解决了 Chrome 浏览器针对某些分辨率(例如 1080x810)的问题。

编辑: Issue in Chromium 详细描述错误和修复。