使用最近的ffmpeg master分支(commit 7fcbeb),我们可以使用生成主播放列表
-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
原因是因为如果要复制流(FF复制),FFMpeg无法计算出比特率。 HLS规范要求主播放列表中有带宽属性,因此FFMpeg不会在没有该信息的情况下写入主播放列表。
要解决这个问题,只需使用-b:v和-b:a设置比特率。流仍将从源复制,但FFMpeg将使用提供的数字并写入主播放列表。