← Blog.backToBlog

使用 FFmpeg 将 HLS 转换为 MP4

6 min read

标准命令

ffmpeg -i "https://example.com/stream.m3u8" -c copy -bsf:a aac_adtstoasc output.mp4

这是最常见的 HLS→MP4 重封装:编码已适合 MP4 时又快又无损。概念指南:HLS 转 MP4

当流复制失败时

ffmpeg -i "https://example.com/stream.m3u8" -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k -pix_fmt yuv420p output.mp4

编码不兼容或需要最大设备兼容时,用重新编码。

硬件加速

# NVIDIA
ffmpeg -i "stream.m3u8" -c:v h264_nvenc -preset p7 -cq 23 -c:a aac output.mp4
# Intel Quick Sync
ffmpeg -i "stream.m3u8" -c:v h264_qsv -global_quality 23 -c:a aac output.mp4
# Apple VideoToolbox
ffmpeg -i "stream.m3u8" -c:v h264_videotoolbox -q:v 60 -c:a aac output.mp4

硬件路径重编码更快,但画质/设置因厂商而异。

重封装 vs 重新编码

优先重封装(-c copy)以兼顾速度与画质。仅在必要时重新编码。细节:高质量转换完整 FFmpeg 指南

不用终端的选项

我们的浏览器转换器通过 WebAssembly 运行 FFmpeg,免安装、不上传。

常见问题解答

哪条 FFmpeg 命令把 HLS 转成 MP4?
ffmpeg -i url.m3u8 -c copy -bsf:a aac_adtstoasc out.mp4

无损吗?
使用 -c copy 时是。

何时重新编码?
编码不兼容或需要特定 profile 时。

能用 GPU 加速吗?
能——视硬件使用 NVENC、QSV 或 VideoToolbox。