0

我正在使用 HTML5 视频标签通过 WebRTC 协议显示传入的实时视频流。基本上,当客户端接收到远程MediaStreamTrack时,它被分配给HTMLMediaElement.srcObject。直播出现在视频中,到目前为止一切都很好。但是,如果在某些时候接收/发送客户端遇到网络连接降级,那么 WebRTC 降级实现​​会通过降低流的分辨率来启动。发生的情况是视频变得“损坏”,尽管您仍然可以区分其中的一些噪音。这是它的外观的屏幕截图: 在此处输入图像描述

在控制台上调试MediaStreamTrack显示分辨率是如何变化的: 在此处输入图像描述

但有趣的部分来了。似乎原生 HTML5 视频播放器仅在某些分辨率下存在问题。在这种情况下,它适用于 720x540px 和 1440x1080px,但不适用于 1080x810xpx。我在网上浏览了原生 HTML5 视频播放器规范,但没有关于支持的分辨率的内容。我不确定我将如何着手解决这个问题。我有以下想法:

  • 也许尝试不同的 HTML5 视频播放器,例如 JW Player。
  • 防止在流上发生特定的分辨率,但我在 WebRTC 实现中没有看到任何选项。
4

2 回答 2

1

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

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

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

于 2020-09-07T06:45:43.497 回答
0

最初通过将MediaConstraintskey设置googCpuOveruseDetectionfalse. 重新审视了这个问题,似乎谷歌已经修复了 Chrome 浏览器在某些分辨率下的问题(例如 1080x810)。

于 2022-03-05T08:06:51.777 回答