FFMpeg HLS 视频转码生成部分播放列表

FFMpeg HLS Video Transcoding Generating Partial Playlist

我正在尝试使用以下命令使用 ffmpeg(运行 on OSX)将基本的 mp4 视频转换为 HLS 视频:

ffmpeg -i SampleVideo_1280x720_10mb.mp4 -codec:v libx264 -codec:a aac -strict experimental -start_number 1 out.m3u8

它确实设法生成了所有 .ts 片段文件,但生成的 .m3u8 播放列表文件仅列出了最后四个片段文件,删除了任何较早的片段。帮忙?

尝试

ffmpeg -i SampleVideo_1280x720_10mb.mp4 -c:v libx264 -c:a aac -strict -2 -start_number 1 -hls_list_size 0 out.m3u8

根据 ffmpeg documentation, the playlist defaults to 5 entries and a segment duration of 2 seconds. This probably explains why you are only seeing a limited number of entries in the playlist. Try setting the length of the playlist (-hls_list_size) to 0, which will include all the segments. Apple recommends,一段时长为10秒。您可以使用 -hls_time 选项设置片段持续时间。

作为参考,您也可以使用 segment muxer. Here's the command I usually use when segmenting video with ffmpeg:

ffmpeg -y \
 -i input.mov \
 -codec copy \
 -bsf h264_mp4toannexb \
 -map 0 \
 -f segment \
 -segment_time 10 \
 -segment_format mpegts \
 -segment_list "/Library/WebServer/Documents/vod/prog_index.m3u8" \
 -segment_list_type m3u8 \
 "/Library/WebServer/Documents/vod/fileSequence%d.ts"

在这种情况下,输入视频包含 H.264 视频和 AAC 音频,因此不需要转码。