
为什么 M3U8 需要“转换”而不是直接另存为文件?
当你在播放一个 M3U8 流媒体时,浏览器背后实际上在不断地请求一个又一个的 .ts 数据包,然后即时解码播放。这些片段:
- 格式是 MPEG-2 Transport Stream(.ts)
- 大小通常是 2-10 秒的视频
- 无法直接用大多数播放器播放(格式不被广泛支持)
要获得一个可在任何设备播放的视频,需要:
- 下载所有
.ts片段 - 将它们按顺序合并
- 重新封装成
.mp4容器(可选:重新编码转换编码格式)
M3U8 的两层结构
在开始下载前,必须理解 M3U8 可能有两层:
Master Playlist(主播放列表)
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=2800000,RESOLUTION=1280x720
720p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1400000,RESOLUTION=854x480
480p/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=700000,RESOLUTION=640x360
360p/index.m3u8
这个文件本身不含片段,只列出不同画质的 Media Playlist 路径。
Media Playlist(媒体播放列表)
#EXTM3U
#EXT-X-TARGETDURATION:6
#EXT-X-VERSION:3
#EXTINF:6.006,
segment-001.ts
#EXTINF:6.006,
segment-002.ts
...
#EXT-X-ENDLIST
这才是实际包含 .ts 片段路径的列表。
转换方法详解
方法一:FFmpeg -c copy(直接重封装,最快)
ffmpeg -i "https://stream.example.com/720p/index.m3u8" \
-c copy \
-movflags +faststart \
output.mp4
说明:
- -c copy:不重新编码,直接把 TS 的 H.264 + AAC 数据重新封装到 MP4 容器
- -movflags +faststart:将 moov atom 移到文件开头,让 MP4 支持边下载边播(流媒体友好)
- 速度极快,几乎无 CPU 消耗,输出大小与原始几乎相同
方法二:FFmpeg 重新编码(降低大小)
ffmpeg -i "https://stream.example.com/720p/index.m3u8" \
-c:v libx264 -crf 23 -preset medium \
-c:a aac -b:a 128k \
output.mp4
说明:
- 适合需要压缩原本高 bitrate 视频的情况
- CRF 值越低品质越好,文件越大(建议 18-28)
- 速度比 -c copy 慢许多,需要 CPU 重新编码
方法三:浏览器端 FFmpeg.wasm(免安装)
本站的 HLS 研究工具 在浏览器内执行 FFmpeg.wasm 完成合并,等同于在浏览器里执行:
ffmpeg -f concat -safe 0 -i concat.txt -c copy output.mp4
适用场景: 临时需要合并少量公开链接,不想安装任何软件时。
转换工具比较
| 工具 | 安装需求 | 速度 | CORS 限制 | 适合对象 |
|---|---|---|---|---|
| FFmpeg 命令行 | 需安装 | ★★★★★ | 可绕过 | 开发者、技术用户 |
| VLC | 需安装 | ★★★ | 可绕过 | 一般用户 |
| 浏览器工具(本站) | 免安装 | ★★★ | 受限制 | 快速测试 |
| 在线转换网站 | 免安装 | ★★ | 多有支持 | 非技术用户 |
常见问题
转换后视频没有声音?
通常是因为音频轨道是 AC-3(Dolby) 格式,部分 MP4 播放器不支持。解法:
ffmpeg -i input.m3u8 -c:v copy -c:a aac output.mp4
强制将音频转码为 AAC 即可解决。
视频不同步(音画不同步)?
若出现音画不同步,通常是 TS 片段的 PTS/DTS 时间戳有跳动。加上 -async 1 或使用 -fflags +genpts 重新生成时间戳:
ffmpeg -fflags +genpts -i input.m3u8 -c copy output.mp4
M3U8 加密了怎么办?
若 M3U8 内有 #EXT-X-KEY:METHOD=AES-128,URI=...,代表片段加密。FFmpeg 能自动处理 AES-128,但 DRM(如 Widevine、FairPlay)是硬件级保护,目前没有公开工具能处理。
更多加密详情:M3U8 加密与 DRM 完整解析
相关资源
- 👉 直接在浏览器测试 HLS 下载工具(无需安装)
- 👉 M3U8 格式完整介绍
- 👉 常见 M3U8 错误代码与修復
想立即测试您的 M3U8 链接吗?
🚀 立即测试 M3U8 在线播放器