M3U8 是什么?如何使用 FFmpeg 分割 MP4 制作 M3U8 播放列表

怎样使用 FFmpeg 把一个 MP4 视频分割成若干个 TS 视频切片并生成 M3U8 文件?使用 FFmpeg 将 MP4 视频转换为 TS 切片并生成 M3U8 播放列表,主要有两种常用的命令行处理方式。您可以根据具体需求选择最合适的方法。

M3U8 是什么文件?

M3U8 本质上是一个基于纯文本的媒体播放列表文件,它是 HTTP Live Streaming(HLS)协议的核心组成部分。

需要特别明确的是,M3U8 文件本身并不包含任何实际的音视频数据。

你可以把它想象成一份"视频播放清单"或"导航图",它通过一系列指令,告诉播放器去哪里获取视频片段、片段的播放顺序以及每个片段的时长等信息。

方法一:单步直接转换

如果您希望一步到位完成转换,可以使用以下命令。这种方式无需生成中间文件,效率较高:

ffmpeg -i input.mp4 -c:v copy -force_key_frames "expr:gte(t,n_forced*2)" -hls_time 2 -hls_segment_filename %d.ts -f hls output/playlist.m3u8

核心参数说明:

-c:v copy:复用原始视频编码,不进行重新转码,速度极快。

-force_key_frames:强制设置关键帧间隔,使其与切片时长相匹配。

-hls_time 2:设置每个 TS 切片的时长(此处为 2 秒,可根据需要调整)。

-hls_segment_filename %d.ts:设置生成的 TS 文件命名格式。

-f hls:指定输出格式为 HLS(HTTP Live Streaming)。

方法二:两步高效转换

如果您需要更精细的控制,或者单步转换遇到兼容性问题,可以分两步进行:

第一步:将 MP4 无损转换为 TS 格式

ffmpeg -y -i input.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb output.ts

-vbsf h264_mp4toannexb:这是关键步骤。MP4 容器使用 AVCC 格式,而 HLS 协议要求 TS 分片必须以起始码开头的 Annex-B 格式。此过滤器确保后续生成的切片能被标准播放器正确识别,避免黑屏或卡顿。

第二步:将 TS 文件切片并生成 M3U8

ffmpeg -i output.ts -c copy -map 0 -f segment -segment_list output.m3u8 -segment_time 8 output%04d.ts

-segment_time 8:设定每个切片的时长为 8 秒。

-segment_list output.m3u8:指定生成的 M3U8 播放列表文件名。

除了使用命令行,如果您不熟悉终端操作,也可以使用带有图形用户界面(GUI)的软件。这类软件通常只需添加视频素材并勾选"生成 m3u8"选项,即可自动完成按段落或时长的分割与索引生成,支持批量处理,操作更为直观。

相关推荐
可乐鸡翅yeah_14 小时前
hls.js 缓冲区参数 maxBufferLength、maxBufferSize 通俗讲解与业务调参
开发语言·javascript·ios·音视频·safari·m3u8
可乐鸡翅yeah_1 天前
HLS 分片过期清理,直播旧 TS 分片磁盘爆满问题处理
java·后端·spring·m3u8·m3u8在线·音视频在线播放
可乐鸡翅yeah_3 天前
fmp4 碎片 MP4 格式 HLS 流,和传统 TS 分片有什么不一样
开发语言·javascript·ios·音视频·safari·m3u8·m3u8在线播放
可乐鸡翅yeah_4 天前
网页端 M3U8 播放器性能监控,怎么看播放卡顿指标
javascript·ffmpeg·音视频·safari·m3u8
可乐鸡翅yeah_7 天前
新手梳理:M3U8 线上问题,哪些是前端锅,哪些是后端锅
前端·ios·音视频·实时音视频·m3u8·音视频在线播放
可乐鸡翅yeah_17 天前
混合内容 Mixed‑Content 安全策略,HLS HTTPS 页面加载 HTTP 资源排错实战
运维·ffmpeg·音视频·媒体·m3u8
可乐鸡翅yeah_18 天前
M3U8 测试用例库建设,流媒体团队测试资产沉淀与回归体系搭建
音视频·实时音视频·m3u8·m3u8在线播放·音视频在线播放
可乐鸡翅yeah_21 天前
HLS视频编码兼容性全解,H.264/H.265流媒体浏览器适配排错实战
音视频·firefox·safari·m3u8
可乐鸡翅yeah_22 天前
HLS流媒体首屏起播慢深度优化,从分片、索引、播放器全链路调优
开发语言·javascript·ecmascript·m3u8·m3u8在线