我有一个应用程序,它利用janus网关转发一个gstreamer生成的RTP流到一个运行在google chrome中的vuejs客户端。有时在页面刷新时,视频不会显示在视频元素中。根据用于刷新页面的方法,此问题发生的频率会有所不同。例如,ctrl-r工作了大约20次而没有失败,而按下浏览器刷新按钮只工作了2次,然后每次尝试都会失败。刷新按钮的“硬重新加载”和“清空高速缓存和硬重新加载”选项不会影响失败的频率。
当查看chome://webrtc-internals时,我看到浏览器的带宽正在增加。janus-gateway admin api也表明它发送的是正确的带宽。这让我认为这个问题与chrome中的资源绑定有关。
ctrl-r,F5和refresh按钮有什么区别?他们是否清理了不同的资源?
此行为从chrome版本71开始,在chrome版本70及更早版本中不可重现。
发布于 2019-06-14 18:27:14
当创建PeerConnection时,只有在足够快地接收到关键帧时,才会显示视频,否则查看器收到的数据包不会有太大意义(它们将与用户打开流之前发送的内容有所不同)。因为在你的例子中源代码是外部的,在Gstreamer中,你只会在gstreamer决定发送关键帧时看到一些东西,这可以定期完成,但不够频繁。因此,您需要确保将gstreamer管道配置为定期发送关键帧,以便新的查看器可以跟上。当然,它们也不应该太频繁,因为这在带宽方面不是一个好主意。你可以在Janus论坛上找到更多信息,这里有一个常见的问题:https://groups.google.com/forum/#!forum/meetecho-janus
https://stackoverflow.com/questions/56533086
复制相似问题