通过最近的ffmpeg主分支(commit7fcbeb),我们可以使用以下方法生成主播放列表
-master_pl_name
选项。但我无法生成具有不同配置文件的主播放列表。尝试使用
-var_stream_map
我们如何使用这些选项来创建具有不同配置文件的主播放列表?
我正在尝试使用下面的ffmpeg命令:
# ./ffmpeg -y -loglevel error -err_detect careful -analyzeduration 8000000 -probesize 4000000 -rtbufsize 300000 -flush_packets 0 -fflags +genpts+discardcorrupt -f mpegts -i test.ts -c copy -var_stream_map "v:0,agroup:aud_high a:0,agroup:aud_high" -ignore_unknown -flags global_header -f hls -master_pl_name master.m3u8 -master_pl_publish_rate 32 -hls_time 4 -hls_list_size 40 -hls_flags delete_segments /webserver/video0_%v.m3u8
原因是如果您正在复制流(-c copy),FFMpeg无法计算比特率。HLS规范需要主播放列表中的带宽属性,因此FFMpeg不会在没有该信息的情况下编写主播放列表。
要绕过这个问题,只需设置比特率,使用-b:v和-b:a即可。流仍将从源复制,但FFMpeg将使用提供的数字并编写主播放列表。
参见:https://trac.ffmpeg.org/ticket/7403