6月1日 23:26

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 不会错。

bash
ffmpeg -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+ 和近三年的手机基本都支持了。

bash
ffmpeg -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 已经可以在最新设备上流畅播放,但离全面普及还有距离。如果追求极致压缩且目标平台新,可以试试。

bash
ffmpeg -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

选择决策流程

  1. 目标平台是什么?网页 → MP4/WebM,手机分享 → MP4,本地存档 → MKV
  2. 需要兼容老设备吗?是 → H.264,否 → H.265/AV1
  3. 对文件大小敏感吗?是 → H.265 CRF 28,否 → H.264 CRF 23
  4. 需要多音轨/多字幕吗?是 → MKV,否 → MP4

最常见组合:H.264 + AAC 封装成 MP4,覆盖 99% 的播放场景。

标签:FFmpeg