最初,我尝试寻找在其他非 Mac 平台上进行 HLS 分段的可能方法。
HLS 视频分割涉及以下步骤:
1)将编码视频分割成片段
2) 创建播放列表 (.m3u8) 文件,其中仅包含当前演绎的片段列表,包括每个片段的持续时间(以秒为单位)
3) 创建一个变体播放列表,其中包含所有演绎版的所有播放列表的相对路径,以及有关 BANDWITH 的信息,根据 HTTP Live 流媒体协议,该信息是:
该值是每秒位数的十进制整数。它必须是出现或将出现在播放列表中的每个媒体片段的总体比特率(计算为包括容器开销)的上限。
最新版本的 ffmpeg 包含分割视频的可能性。但是 ffmpeg 无法创建 m3u8 文件。创建简单的播放列表不是问题。但创建变体播放列表可能是:
Mac 上的variantplaylistcreator 创建这些内容,以某种方式计算比特率,并将基于该值的值放入BANDWITH 标签中。
我尝试了很多不同的方法,但我无法获得与variantplaylistcreator完全相同的数字,目前我找不到任何信息它如何准确地计算这些值以及它使用什么算法。 我的数字很接近,但仍然略有不同。
理论上这应该不是问题,但关键是——我不确定。 也许带宽信息应该精确才能完美播放视频,也许不必如此。
无论如何,我真的很好奇variantplaylistcreator 到底是如何计算它们的:
我尝试使用最新版本的 Http Live Streaming 命令行工具,并将结果与我们当前使用的版本进行比较,结果数字略有不同。因此,这些值不必非常精确。
我想我会没事的,如果我只是把所有片段的平均比特率值放在那里......
我稍后会测试该理论,希望它能起作用......
您可以通过以下方式计算视频点播变体播放列表的
BANDWIDTH
值:
16650.01
:#EXTINF:6.006,
001.ts
BANDWIDTH
设置为播放列表中所有分段带宽的最大值。AVERAGE-BANDWIDTH
。此方法与 Apple 的
hlsreport
和 mediastreamvalidator
工具实现了 0.0% 的最大费率和平均费率差异。