ffmpeg 分割多个 mp4 文件到 HLS 流

ffmpeg segmentation with multiple mp4 files to HLS stream

我正在尝试从 .txt 中分割多个 mp4 文件(就像串联一样),但它似乎对我不起作用。

这是我的 concat.txt:

file video1.mp4
file video2.mp4
file video3.mp4

等...

我的 ffmpeg 命令是:

ffmpeg -i concat.txt -map 0 -codec:v libx264 -codec:a libfaac -f ssegment \
-segment_list playlist.m3u8 -segment_list_flags +live -segment_time 10 out%03d.ts

不幸的是,每个媒体播放器都会在播放时抛出错误。

我可以使用 concat 文件吗,还是我必须先将所有 mp4 连接成一个 mp4 文件,然后将该 mp4 文件分段以获得最终的 m3u8?

ffmpeg concat demuxer 要求输入文件使用相同的编解码器,尽管容器可能不同。您还需要确保视频和音频流在所有文件中具有相同的 ID。

ffmpeg -re -f concat -i concat.txt -c:v libx264 -vbsf h264_mp4toannexb -r 25 -g 75 -c:a libfdk_aac -hls_time 3 playlist.m3u8

我使用h264_mp4toannexb比特流过滤器将H.264流转换为MPEG-TS要求的Annex B格式,将GOP大小设置为75( 25 fps 时 3 秒)并使用 3 秒的片段长度,因为每个片段应以关键帧开始。