google-chrome - Google Chrome 中 ctrl-r、F5 和刷新按钮的区别
问题描述
我有一个应用程序,它利用 janus-gateway 将 gstreamer 生成的 RTP 流转发到在 google chrome 中运行的 vuejs 客户端。有时在页面刷新时,视频元素中不会显示视频。此问题发生的频率因刷新页面所用的方法而异。例如 ctrl-r 工作约 20 次而没有失败,而按下浏览器刷新按钮只工作 2 次,然后每次尝试都失败。刷新按钮的“硬重新加载”和“空缓存和硬重新加载”选项不会影响失败的频率。
查看 chome://webrtc-internals 时,我看到带宽进入浏览器。janus-gateway admin api 也表明它正在发送正确的带宽。这让我认为这个问题与 chrome 中的资源绑定有关。
ctrl-r、F5和刷新按钮有什么区别?他们是否清除了不同的资源?
此行为始于 chrome 版本 71,在 chrome 版本 70 及更早版本中不可重现。
解决方案
只有在创建 PeerConnection 时,如果很快收到关键帧,就会显示视频,否则查看器收到的数据包将没有多大意义(它们将与用户打开流之前发送的内容有所不同) . 由于在您的情况下,源是外部的,在 Gstreamer 中,您只会在 gstreamer 决定发送关键帧时看到一些东西,这可以定期发送,但不够频繁。因此,您需要确保将 gstreamer 管道配置为定期发送关键帧,以便新观众能够赶上。当然,它们也不应该太频繁,因为这在带宽方面是个坏主意。您可以在 Janus 论坛上找到更多信息,这是一个常见问题:https ://groups.google.com/forum/#!forum/meetecho-janus
推荐阅读
- ruby-on-rails - Rails GeoCoder gem 的地址错误
- c# - Assembly.Load vs Assembly.LoadFrom Casting(对象必须实现 iconvertible)
- ios - 如何从 GoogleMap 中的前一个点删除标记并将另一个新标记添加到该位置
- powershell - 获取子目录的大小并写入文件 powershell windows
- php - Laravel 5.8 CSRF 令牌不匹配
- mongodb - 如何使用其 id 查找文档并修改标题的值?我想为多个标题执行此操作
- wpf - WPF Grid Row Sizing 问题
- hive - ParseException 带分号 ';'
- sql - 在Oracle中获取重复记录
- java - sprinboot 中的多部分请求不起作用