2017-06-06 372 views
0

如果我使用以下ffmpeg命令为加密的HLS流创建三个输出,我如何能够创建master.m3u8变体播放列表(带有正确的BANDWIDTH)?如何为我的加密子播放列表创建主m3u8播放列表(使用ffmpeg创建)?

./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 

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

#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 

从苹果variantplaylistcreator工具不会在这种情况下工作,因为我需要的.plist文件,ffmpeg的不生成这些文件。

我想的ffmpeg不能创建生成的输出文件master.m3u8播放列表..

+0

你知道了吗?我需要创建一个主.plist文件,但我也不能使用variantplaylistcreator:/ –

回答

0

更新2018年1月

现在,您可以直接与FFmpeg的使用master_pl_namevar_stream_map创建主播放列表。请参阅documentation


FFmpeg不会创建主播放列表,但您可以像例子中那样手动执行。

BANDWIDTH属性表示变体的峰值比特率。对于像您这样的多路复用流,值为peak audio bitrate + peak video bitrate + mux overhead(包括任何加密填充)。如果你有独立的视频/音频,你必须考虑到最高比特率的节目组合。

ffmpeg命令结束但仅当您有单个输出时才显示多路复用开销。一旦你选择编码参数,你可以运行一些测试,并根据结果进行有根据的猜测。

有一点需要记住的是,根据Apple指南,测量值必须在VOD的声明带宽的10%以内,并且在1小时的实时内容中分别在25%以内。

相关问题