我使用以下FFMPEG命令生成播放列表和主播放列表,以便以后插入支持HLS的播放器中:
ffmpeg/ffmpeg.exe -i input/test.mp4
-preset fast
-g 150
-sc_threshold 0
-threads 4
-map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0
-filter:v:0 scale=h=240:w=-2 -minrate:v:0 75k -maxrate:v:0 218k -bufsize:v:0 300k -b:v:0 150k
-filter:v:1 scale=h=360:w=-2 -minrate:v:1 138k -maxrate:v:1 400k -bufsize:v:1 552k -b:v:1 276k
-filter:v:2 scale=h=480:w=-2 -minrate:v:2 375k -maxrate:v:2 1088k -bufsize:v:2 1500k -b:v:2 750k
-filter:v:3 scale=h=720:w=-2 -minrate:v:3 512k -maxrate:v:3 1485k -bufsize:v:3 2048k -b:v:3 1024k
-var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2 v:3,a:3"
-master_pl_name master.m3u8
-f hls -hls_time 6 -segment_time 6 -hls_list_size 0 -segment_format mpegts
-hls_playlist_type vod -hls_segment_filename "output/conversion/K8eYn1X1/res-%v/segment-%d.ts" output/conversion/K8eYn1X1/res-%v/playlist.m3u8
基于各种来源的信息,此命令行应执行以下操作:
从输入文件中获取视频流,
四次应用具有不同设置的过滤器
将其合并为一个流
切成TS片段6秒钟,
将有关每种分辨率的信息写入播放列表。m3u8,
创建一个主播放列表,并在其中写入有关即将到来的播放列表的信息
一切正常,但是:创建了片段,创建了播放列表,但主文件为空
如果您使用命令行播放,更准确地说,仅保留一个过滤器,则一切正常:剪切片段并创建播放列表,并创建主播放列表
此外,我注意到,如果我观看了存储所有文件的文件夹,我会注意到一件事:使用上面给出的命令时,将创建一个7kb的文件,然后在同一秒内,它似乎是已清除。为什么会这样,我不明白
完成日志中的处理后,最后一行:
[hls @ 000001ff73b87200] Opening 'output/conversion/K8eYn1X1/master.m3u8' for writing
也许我做错了什么?也许命令顺序错误?告诉我,谁知道?
谢谢