You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FFmpeg从多个MP4分段文件生成m3u8播放列表

解决方案

FFmpeg本身完全支持实时生成TS分段文件及对应的m3u8播放列表,无需手动转码或构建列表,完美避开拼接操作带来的延迟问题。

推荐方案:直接输出HLS流

针对摄像头这类实时流场景,最简洁高效的方式是直接指定HLS输出格式,FFmpeg会自动完成TS分段切割和m3u8列表的实时更新:

ffmpeg -i [你的摄像头流地址] -c:v libx264 -c:a aac -f hls -hls_time 10 -hls_segment_filename "segment_%03d.ts" playlist.m3u8

参数说明:

  • -f hls:指定输出格式为HLS,FFmpeg会自动遵循HLS标准生成TS分段和m3u8播放列表
  • -hls_time 10:设置每个分段的时长为10秒,和你之前需求的分段时长一致
  • -hls_segment_filename:自定义TS分段的命名规则,便于管理
  • -c:v libx264和-c:a aac:选用HLS标准兼容的编码格式,确保播放端兼容性

备选方案:使用segment模块生成HLS兼容内容

如果需要使用segment模块的额外功能(比如自定义分段命名规则之外的特殊配置),也可以通过以下参数组合直接生成TS分段和m3u8列表:

ffmpeg -i [你的摄像头流地址] -c:v libx264 -c:a aac -f segment -segment_time 10 -segment_format mpegts -segment_list playlist.m3u8 -segment_list_type hls segment_%03d.ts

参数说明:

  • -segment_format mpegts:指定分段格式为TS(HLS标准推荐格式)
  • -segment_list playlist.m3u8:指定生成的m3u8列表文件名
  • -segment_list_type hls:确保生成的列表符合HLS标准规范

为什么不用MP4分段?

你之前使用的-segment_format mp4生成的MP4分段,由于MP4格式的moov原子特性,实时流场景下需要额外处理才能让播放端正常加载,且后续要转成HLS兼容格式必然需要拼接或转码操作,这正是延迟的来源。而直接生成TS分段+ m3u8的方式,FFmpeg是实时切割流并更新列表,全程无额外拼接步骤,延迟可以控制在最低水平。

内容的提问来源于stack exchange,提问作者Nick Mowen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:25:27