我正在播放播放HLS Live内容的播放器。因此,它会定期重新加载测试链接的.m3u8索引文件。
e.g。播放器重新加载01.m3u8索引文件。
(01.m3u8 - #1)
0.ts---the player tried to download this 100.ts file first.
1.ts---
2.ts
3.ts
然后,它试图下载0.ts文件。
但是,网络带宽不足以快速下载此0.ts文件。
一个TS下载花了将近24秒。因此,它再次重新加载了02.m3u8索引文件。
(01.m3u8 - #2)
2.ts---the player tried to download 102.ts file first.
3.ts
4.ts
5.ts
但是,播放器无法在索引文件中找到1.ts文件。因为,在播放器下载1.ts文件之前,服务器更新了索引文件。因此,播放器尝试下载2.ts文件而不是1.ts文件。
这意味着玩家丢失了20秒的流数据。那么,这种行为是否符合规范,因为它似乎令人困惑?
我认为它应该以1.ts开始更新m3u8而不是2.ts.或者如何决定。
有人能提出建议吗?
答案 0 :(得分:0)
规范允许服务器从播放列表的开头删除URI,只要播放列表仍然是目标持续时间的至少三倍。 (draft-pantos-http-livestreaming-08的第6.2.2节)
如果播放列表文件的持续时间减去段的持续时间少于目标持续时间的三倍,则服务器不得从播放列表文件中删除指定段的媒体URL。
因此,只要播放列表包含4个段,其长度只有很小的变化,这似乎是一种有效的行为。对于实时流,我希望服务器以与添加段相同的速度从流中删除段。因此,对于10秒的段,我发现删除2个段是合理的,而下载单个段需要24秒。
答案 1 :(得分:0)
它做了正确的事。要解决您面临的问题
如果你只想要1比特率,你应该知道你的网络带宽并进行相应编码[对于封闭和放大有用]受控环境]
OR
以多个带宽进行编码并使用多个比特率设置m3u8并确保将最低的一个作为第一个条目,并且HLS将相应地进行调整。在几个段内,它将达到目标带宽。这实际上是HLS的重点。