计算出 m3u8 url 参考视频的文件大小

figure out the file size of a m3u8 url referenced video

如果 m3u8 url 引用 streming,则没有视频大小,但是,如果 m3u8 url 引用视频,有什么方法可以计算出视频文件的大小?

我不想将每个视频片段的所有 http content-length header 加起来,因为这有点乏味。

我提供 this m3u8 url 作为示例用法。

M3U8 清单文件中特定视频流的持续时间不是强制性的,但如果给定的视频流通常会在其自身容器的 header 中包含此信息。

例如,如果流是 MP4 流,那么您可以从 header 'Moov" 原子中获取持续时间,一旦它在开始时被读入,而不是必须读取每个片段并添加增加其内容长度。

值得注意的是,特别是对于 MP4,您需要在文件的开头包含 Moov 原子 - 大多数已准备好用于流式传输的 MP4 视频都已完成此操作。

查看文件大小:一个 m3u8 文件,假设您使用的是 HLS 视频,实际上是一个索引,通常是视频的多个分块版本。这些不同的版本是不同的分辨率和比特率。目的是让玩家选择最适合设备和当前网络状况的位rate/resolution。这称为自适应比特率流式传输 - 请参阅此处了解更多信息:https://whosebug.com/a/42365034/334402

因此,ABR M3U8 视频实际上并没有单一的文件大小。您可以计算最大比特率流的文件大小,例如,通过将持续时间乘以比特率,但您需要注意您的播放器可能会在比特率之间切换,除非您将其设置为仅使用一个。