FFmpeg 视频格式和编解码器怎么选?MP4、MKV、WebM 各适合什么场景?
选视频格式就是选容器(封装格式),选编解码器就是选压缩算法。容器决定兼容性和功能(能不能塞字幕、多音轨),编解码器决定画质和文件大小。两者要分开想。
容器格式:MP4、MKV、WebM 怎么选
MP4:万能格式,所有设备都能播。缺点是只支持有限的编解码器,多音轨多字幕支持弱。网络视频、手机分享、社交媒体一律选 MP4,不会有兼容性问题。
MKV:万能容器,什么编解码器都能塞,支持无限音轨和字幕轨。缺点是某些老旧设备和播放器不支持(特别是智能电视和游戏机)。本地收藏、多语言视频、高清片源选 MKV。
WebM:Google 推的 Web 专用格式,基于 VP8/VP9/AV1 编码。所有主流浏览器支持,不需要插件。网页嵌入视频选 WebM,或者直接用 MP4(浏览器也支持)。
MOV:Apple 的格式,QuickTime 原生支持。在 Mac 生态里很方便,但 Windows 上不如 MP4 通用。视频剪辑工作流里常见(Final Cut Pro 默认输出 MOV)。
编解码器:H.264、H.265、AV1 怎么选
H.264(AVC):兼容性之王,所有设备都支持。压缩效率中等,是目前的默认选择。如果你不确定该用什么,用 H.264 不会错。
bashffmpeg -i input.avi -c:v libx264 -crf 23 -c:a aac output.mp4
H.265(HEVC):比 H.264 同画质小 30-50%,但编码慢 3-5 倍。兼容性不如 H.264——老手机、老浏览器可能播不了。4K 视频和存档用 H.265,因为省的空间很可观。Windows 10+ 和近三年的手机基本都支持了。
bashffmpeg -i input.mp4 -c:v libx265 -crf 28 -c:a aac output.mp4
AV1:新一代编码,比 H.265 还能再省 20-30%。开源免专利费,YouTube 和 Netflix 都在用。但编码极慢(libaom-av1 比 libx265 慢 10 倍以上),播放需要较新的硬件/软件。2025 年的 AV1 已经可以在最新设备上流畅播放,但离全面普及还有距离。如果追求极致压缩且目标平台新,可以试试。
bashffmpeg -i input.mp4 -c:v libaom-av1 -crf 30 -c:a libopus output.webm
音频编解码器
视频里的音频也别忽略:
- AAC:通用选择,所有设备支持,128kbps 够听
- Opus:开源编码器,同码率音质优于 AAC,WebM 默认音频编码
- MP3:老旧但兼容性极好,新项目不需要用了
bash# 视频 H.264 + 音频 AAC(最通用组合) ffmpeg -i input.mkv -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4 # 只转音频,视频直接拷贝 ffmpeg -i input.mp4 -c:v copy -c:a aac -b:a 128k output.mp4
选择决策流程
- 目标平台是什么?网页 → MP4/WebM,手机分享 → MP4,本地存档 → MKV
- 需要兼容老设备吗?是 → H.264,否 → H.265/AV1
- 对文件大小敏感吗?是 → H.265 CRF 28,否 → H.264 CRF 23
- 需要多音轨/多字幕吗?是 → MKV,否 → MP4
最常见组合:H.264 + AAC 封装成 MP4,覆盖 99% 的播放场景。