简体   繁体   English

自适应比特率 (ABR) 客户端如何跟踪分段?

[英]How does an Adaptive Bitrate (ABR) client keep track of segments?

When an ABR client switches from one bitrate to another, how does it know which is the next segment to fetch specially if the segment names are not indicative of any order?当 ABR 客户端从一种比特率切换到另一种比特率时,如果分段名称不指示任何顺序,它如何知道下一个要特别获取的分段? eg Lets say, segment 1 and 2 have been read for bitrate x, and now the client decides that segment 3 should be read from the child manifest for bitrate y, how does it know which entry to read in the child manifest to get the url of segment3 with bitrate y?例如,假设已经读取了比特率 x 的第 1 段和第 2 段,现在客户端决定应该从比特率 y 的子清单中读取第 3 段,它如何知道在子清单中读取哪个条目以获取 url比特率y的segment3?

Every implementation is different, But often, the ABR algorithm just estimates the bit rate, The manifest has a list segments per bitrate.每个实现都不同,但通常,ABR 算法只是估计比特率,清单中每个比特率都有一个列表段。 As time (inevitably) moves forward, and the next segment is due to download, to player picks the next one form the list at the highest possible bitrate given the output of the ABR.随着时间(不可避免地)向前移动,并且下一段将要下载,播放器根据 ABR 的输出以尽可能高的比特率从列表中选择下一个。

我从hls.js和exoplayer(HlsMediaSource)的源码中知道,客户端根据当前缓冲区的结束时间选择下一个块,然后通过二进制搜索在m3u8中找到包含结束时间的段。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM