html5-video - 可以通过操作 bufferBehind 来增加 Shaka 中的搜索范围吗?
问题描述
我正在尝试使用 Shaka 将实时 DASH 流的回溯时间增加到 15 分钟。默认情况下,流可以从当前时间倒退到 5 分钟。这可以通过指示玩家存储过去 15 分钟的缓冲区来实现吗?我尝试使用 bufferBehind 并将其设置为 900(15 分钟)。这似乎不起作用,并且倒带不会超出搜索范围。
这是我正在使用的 DASH Live URL:https ://livesim.dashif.org/livesim/testpic_2s/Manifest.mpd
解决方案
曾在 github 上问过这个问题并得到了帮助
简短的回答是肯定的,你可以这样做,但有一些重要的警告。
bufferBehind 是关于我们如何管理播放头移动后保存在缓冲区中的内容。但这与您想要的不同。您确实想要覆盖名为 timeShiftBufferDepth 的 DASH 属性,该属性定义了可用性窗口的宽度。
可用性窗口有效地表明“这是您可以随时请求的服务器上的内容量”。您可以使用 manifest.availabilityWindowOverride 覆盖它:
player.configure('manifest.availabilityWindowOverride', 900); 这将忽略清单的 timeShiftBufferDepth 并改用 900 秒(15 分钟)的值。播放器中的搜索范围将变为 900 秒。
但是,如果服务器实际上没有保留那么多内容,则对 900 秒前的内容的请求将导致 HTTP 404 错误,并且播放将在该位置停止。所以你不能用它来以任何方式控制服务器的行为,或者让不可用的内容可用。
当我们运行实时流(使用 Shaka Streamer)时,只有几个片段保留在可用性窗口之外。当我们将新片段上传到云存储时,我们也会删除旧片段。
因此,对于我们的内容,增加播放器中可用性窗口的大小是行不通的。根据您使用的编码器/打包器,您可能能够增加窗口大小并摆脱它。
推荐阅读
- logging - Cloudwatch 日志配置:timestamp_format 匹配
- java - 日食Java;所有项目的包资源管理器中的红色警告都消失了;为什么?
- reactjs - 在 React 中向外部变量添加状态
- python - 包含重音符号的 Django 模型翻译字符串被忽略
- c# - 检测日期格式并将其转换为精确格式“yyyy-MM-dd”
- python - Asyncio 可下标问题
- php - 防止浏览器后退按钮在 Laravel 中注销后访问页面
- regex - Perl 正则表达式 /o 优化或错误?
- ruby-on-rails - Rails activeRecord原始sql到不同的模式
- sql - 甲骨文获取上个工作日周一至周五