如何为我的加密子播放列表(使用FFMPEG创建)创建主M3U8播放列表



如果我使用以下FFMPEG命令创建了三个输出,则用于加密的HLS流,我如何能够创建Master.m3U8变体播放列表(带有正确的bandWidth(?

./ffmpeg -re -i Test_1080p.mp4 
     -c:a aac -b:a 128k -c:v libx264 -s 1920x1080 -g 48 -keyint_min 48  -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 7800k -maxrate 8600k -bufsize 7800k -f hls -hls_time 6 -hls_list_size 0 -hls_key_info_file enc.keyinfo ./1080p/index.m3u8 
     -c:a aac -b:a 128k -c:v libx264 -s 1280x720 -g 48 -keyint_min 48 -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 4500k -maxrate 5000k -bufsize 4500k -f hls -hls_time 6 -hls_list_size 0 -hls_key_info_file enc.keyinfo ./720p/index.m3u8 
    -c:a aac -b:a 64k -c:v libx264 -s 640x360 -g 48 -keyint_min 48 -sc_threshold 0 -bf 3 -b_strategy 2 -b:v 730k -maxrate 800k -bufsize 730k -f hls -hls_time 6 -hls_list_size 0 -hls_key_info_file enc.keyinfo ./360p/index.m3u8

这是我发现的一些示例,但我认为带宽值对我的输出文件不正确。如何计算正确的带宽?

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=150000,RESOLUTION=640x360
http://example.com/360p/index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=240000,RESOLUTION=1280x720
http://example.com/720p/index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=640000,RESOLUTION=1920x1080
http://example.com/1080p/index.m3u8

在这种情况下,Apple的VariantPlayListCreator-Tool将无法使用。我需要.plist文件,FFMPEG不会生成这些文件。

我认为FFMPEG无法为生成的输出文件创建Master.m3U8播放列表。

更新2018年1月

您现在可以使用master_pl_namevar_stream_map直接使用FFMPEG创建主播放列表。请参阅文档。


ffmpeg不会创建主播放列表,但您可以像示例中手动执行此操作。

BANDWIDTH属性表示变体的峰值比特率。对于像您这样的多重流,值是peak audio bitrate + peak video bitrate + mux overhead(包括任何加密填充(。如果您有单独的视频/音频,则必须考虑到重音的最高 - 偶然性组合。

ffmpeg命令结束时,显示了Muxing开销,但仅当您有一个输出时。选择编码参数后,您可以运行一些测试并根据结果进行受过教育的猜测。

要记住的一件事是,根据Apple指南,测量值必须在VOD声明的带宽和25%以内的25%内。

最新更新