最初,我试图找到在其他非 Mac 平台上进行 HLS 分段的可能方法。
为 HLS 分割视频涉及以下步骤:
1) 将编码的视频分割成段
2) 创建播放列表 (.m3u8) 文件,其中仅包含当前再现的片段列表,包括每个片段的持续时间(以秒为单位)
3) 创建一个变体播放列表,其中包含所有演绎版的所有播放列表的相对路径,其中包含有关 BANDWITH 的信息,根据 HTTP Live 流协议为:
该值是每秒位数的十进制整数。它必须是出现或将出现在播放列表中的每个媒体片段的总比特率的上限(计算为包括容器开销)。
最新版本的 ffmpeg 包括分割视频的可能性。但是 ffmpeg 不能创建 m3u8 文件。创建简单的播放列表不是问题。但创建变体播放列表可能是:
因此,Mac 上的 variantplaylistcreator 创建了这些,以某种方式计算比特率并将基于该值的值放入 BANDWITH 标签。
我尝试了许多不同的方法,但我无法获得与 variantplaylistcreator 完全相同的数字,此时我找不到任何信息它如何准确计算这些值以及它使用什么算法。我的数字很接近,但仍然略有不同。
从理论上讲,这应该不是问题,但重点是-我不确定。也许 BANDWITH 信息对于完美的视频播放应该是精确的,也许不是必须的。
无论如何,我真的很好奇 variantplaylistcreator 究竟是如何计算它们的: