帮助中心 帮助中心

用FFmpeg把M3U8转成MP4的完整步骤

手头上有个M3U8链接,想保存成MP4文件慢慢看,这是很多朋友的刚需。FFmpeg是最好用的工具,没有之一。下面我把整个流程写清楚,新手跟着做也不会错。

先安装FFmpeg

Windows用户去官网下载编译好的可执行文件,解压后把bin目录加到系统环境变量PATH里。Mac用户用Homebrew最方便,一行命令:

brew install ffmpeg

Linux用户直接用包管理器,比如Ubuntu:

sudo apt update && sudo apt install ffmpeg

装完之后在终端输入ffmpeg,能看到版本信息就说明装好了。

最基础的转换命令

如果你手里是本地M3U8文件,且TS切片都在同一个文件夹里,命令最简单:

ffmpeg -i input.m3u8 -c copy output.mp4

这里的-c copy意思是直接复制音视频流,不做重新编码。速度非常快,而且不会损失画质。我一般都用这个参数,除非遇到编码不兼容才考虑转码。

命令行

转换网络M3U8链接

如果M3U8是在线链接,直接把链接当输入文件:

ffmpeg -i "https://example.com/video/index.m3u8" -c copy output.mp4

注意链接最好加引号,防止里面特殊字符被shell解析错误。FFmpeg会自动下载所有TS切片并合并成MP4。

遇到加密M3U8怎么办

有些M3U8是加密的,M3U8文件里会有KEY标签,指向一个AES-128密钥文件。FFmpeg会自动下载密钥并解密,你不需要额外操作,只要FFmpeg能访问到密钥的URL就行。

但如果密钥也有防盗链,FFmpeg可能被拒绝。这种就没法直接用简单命令了,需要配合其他工具先拿到解密密钥。

常见问题

卡住不动: 可能是网络慢,FFmpeg默认超时时间比较短。加个-timeout 60000000参数,单位是微秒,这样它会等久一点。

音画不同步: 少数情况下-c copy会出现这个问题。去掉-c copy,让FFmpeg重新编码,虽然慢一点,但同步问题会解决。

合并中断: 如果TS切片非常多,中途网络断了,可以用-resume参数尝试续传,或者把已下载的部分先保存,下次接着下。

总的来说,FFmpeg转M3U8到MP4是非常成熟的工作流,命令就那一行,遇到问题多试几个参数,基本都能解决。