办公设备维修网
资讯中心 您所在的位置:网站首页 资讯中心 远程视频在WebRTC中显示为黑屏或空白

远程视频在WebRTC中显示为黑屏或空白

2024-05-26 09:31:04| 来源: 网络整理

WebRTC空白/空视频的原因之一是高丢包率。在这种情况下,在服务器和客户端日志中会显示连接成功,视频播放正常,因此您不会看到任何警告或错误。

要检查是否存在高丢包率,您可以转到火狐上的about:webrtc或chrome上的chrome://webrtc-internals。对于firefox,您可以导航到"RTP Stats“。您将看到它显示Received: ... packets和Lost: ... packets。您可以使用这些计数来计算丢包率。对于chrome,有一个丢包率的图表。您可能有非常高的数据包丢失率,例如70%。

如果您有这种极高的数据包丢失率,其中一个原因是客户端网络接口上的MTU https://en.wikipedia.org/wiki/Maximum_transmission_unit比服务器使用的MTU小。例如,您的客户端网络接口在未连接到VPN时可以具有MTU=1500字节,在连接到VPN时可以具有MTU=1250字节。如果服务器使用MTU=1400发送RTP数据包(通过UDP),当客户端未使用VPN时,客户端可以接收它,但是大于1250字节的数据包将被客户端网络接口丢弃。

如果你想在本地检查客户端的MTU,你可以在mac或者linux上运行ifconfig。

Mac示例,不包含示例vpn:

代码语言:javascript复制en0: flags=8863 mtu 1500 ... inet SOME_IP netmask 0xffffff00 broadcast 192.168.1.255 media: autoselect status: active

Mac示例,使用示例vpn:

代码语言:javascript复制utun2: flags=80d1 mtu 1250 inet SOME_IP --> SOME_IP netmask 0xffffffff nd6 options=201

如何为服务器配置MTU:

如果对WebRTC服务器使用GStreamer,则有效负载生成器元素(例如rtpvp8pay )具有设置所需MTU值的属性。通过使用gst-inspect-1.0 rtpvp8pay,您可以看到,默认情况下,它使用1400作为MTU值,这可能大于您的客户端网络接口所能处理的值(例如,上例中的1250 )。您可以通过在您的GStreamer管道上设置较低的MTU来使其工作,这样您的客户端网络接口就不会再丢弃大多数包(只需在服务器上的GStreamer管道上更改MTU就可以将包丢失率降低到0.01% )。

在这种情况下,当VPN重新连接时,传入的视频可以工作约10秒,然后传入的视频可能会冻结,后续的页面刷新可能会导致70%+丢包的空白视频。

这是一个非常具体的场景,但当它发生时,它是一个完全静默/隐藏的错误,所以希望这能帮助一些人。



【本文地址】 转载请注明 

最新文章

推荐文章

CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备16040606号-1