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

4

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

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

它确实可以生成所有的.ts段文件,但生成的.m3u8播放列表文件只列出了最后四个段文件,剪切掉了任何早期的段。有什么帮助吗?
2个回答

4
根据 ffmpeg文档,播放列表默认为5个条目和2秒的片段持续时间。这可能解释了为什么您只能看到有限数量的播放列表条目。尝试将播放列表长度(-hls_list_size)设置为0,这将包括所有片段。苹果推荐使用10秒的片段持续时间。您可以使用-hls_time选项设置片段持续时间。
参考资料,您还可以使用segment复用器。这是我通常在使用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音频,因此不需要进行转码。

1
"hls_list_size"标志解决了这个问题,非常感谢。我在文档中看到了它,但忽略了它,因为我认为他们会使用(对我来说)合理的默认值,包括所有文件。谢谢! - moberemk

2

尝试

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接