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 视频播放器规范,但没有关于支持的分辨率的信息。我不确定我将如何继续解决这个问题。我有以下想法:
- 或许尝试不同的 HTML5 视频播放器,例如JW Player.
- 防止在流中出现特定分辨率,但我在 WebRTC 实现中没有看到任何选项。
呸!这是浏览器级别或更低级别的错误,除了提交错误票之外,您无能为力。
同时,我怀疑这个问题是由于您使用了奇怪的分辨率造成的。坚持正常的纵横比,如 16:9 或 4:3(即使你通过 CSS 裁剪)无论如何都会让你更好地兼容网络摄像头。
您可能还在为视频编解码器使用硬件加速。尝试禁用它(如果它已经被禁用,则启用它)看看是否有帮助。
这个问题最初是通过将 MediaConstraints
键 googCpuOveruseDetection
设置为 false
来解决的。重新审视了这个问题,似乎 Google 已经解决了 Chrome 浏览器针对某些分辨率(例如 1080x810)的问题。
编辑:
Issue in Chromium 详细描述错误和修复。
我正在使用 HTML5 视频标签通过 WebRTC 协议显示传入的实时视频流。基本上当远程MediaStreamTrack is received by a client it is assigned to HTMLMediaElement.srcObject。直播流出现在视频中,到目前为止一切正常。但是,如果在某个时刻 receiving/sending 客户端遇到网络连接降级,则 WebRTC 降级实施会通过降低流的分辨率来启动。发生的事情是视频变得“损坏”,尽管您仍然可以在噪音之间区分其中的一些。这是它的外观的屏幕截图:
在控制台 MediaStreamTrack
上调试显示了分辨率是如何变化的:
但有趣的部分来了。似乎原生 HTML5 视频播放器仅在某些分辨率下有问题。在这种情况下,它在 720x540px 和 1440x1080px 下工作正常,但在 1080x810xpx 下就不行了。我在网上浏览了本机 HTML5 视频播放器规范,但没有关于支持的分辨率的信息。我不确定我将如何继续解决这个问题。我有以下想法:
- 或许尝试不同的 HTML5 视频播放器,例如JW Player.
- 防止在流中出现特定分辨率,但我在 WebRTC 实现中没有看到任何选项。
呸!这是浏览器级别或更低级别的错误,除了提交错误票之外,您无能为力。
同时,我怀疑这个问题是由于您使用了奇怪的分辨率造成的。坚持正常的纵横比,如 16:9 或 4:3(即使你通过 CSS 裁剪)无论如何都会让你更好地兼容网络摄像头。
您可能还在为视频编解码器使用硬件加速。尝试禁用它(如果它已经被禁用,则启用它)看看是否有帮助。
这个问题最初是通过将 MediaConstraints
键 googCpuOveruseDetection
设置为 false
来解决的。重新审视了这个问题,似乎 Google 已经解决了 Chrome 浏览器针对某些分辨率(例如 1080x810)的问题。
编辑: Issue in Chromium 详细描述错误和修复。