首页 / FFmpeg 入门教程 / H.264 编码调参

FFmpeg 入门教程

H.264 编码调参

本教程共 32 篇 · 第 20 篇 · 更新于 2026-08-09 · 约 4 分钟阅读

FFmpegH.264libx264presetCRFprofiletune

本节目标:把 libx264 最常用的 preset、CRF、profile、tune 四个旋钮拧明白,遇到不同片源知道该调哪一个。

H.264 是最常用的视频编码器,FFmpeg 里对应的软件实现叫 libx264。它参数极多,但 90% 的场景只需动四个旋钮:preset、CRF、profile、tune

一、preset:速度与压缩率的交换

preset 决定编码器花多少时间去寻找最优压缩方案。越慢压得越小(同画质下),但耗时越长。

ffmpeg -i input.mp4 -c:v libx264 -preset medium -crf 23 output.mp4

从快到慢十个档位:

ultrafastsuperfastveryfastfasterfastmedium(默认)→ slowslowerveryslowplacebo

  • ultrafast / superfast:录制屏幕、实时直播、来不及慢慢压时用,体积大。
  • veryfast / faster:快速预览、批量转码的折中选择。
  • medium:默认,日常使用足够。
  • slow / veryslow:最终成片、归档、追求小体积时用,编码时间可能是 medium 的 2–5 倍。
  • placebo:几乎不省体积却极慢,别用。
Tip

preset 只影响编码速度和文件体积,不影响画质。真正决定画质的是 CRF。所以常规策略是:先用能接受的最慢 preset,再调 CRF 找画质。

实际经验:mediumslow 的体积差距通常在 5%–10%,但 slow 可能慢一倍。着急就 veryfast,不着急就 slow,中间档位差异不明显。

二、CRF:画质的总开关

CRF 在上一章详细讲过,这里说它在 x264 里的实践要点:

ffmpeg -i input.mp4 -c:v libx264 -preset slow -crf 22 output.mp4
  • 1080p 片源,CRF 20–22 通常视觉无损,适合存档。
  • 手机拍摄、屏幕录像,CRF 23–25 体积友好,画质够用。
  • 想再小一档,CRF 26–28 可接受,但暗场和运动画面会出块。
  • CRF 每次调 1 个点就能看出差别,别一次跳 5 个点。

一个常用组合是 -preset slow -crf 22,压出来的视频又小又清楚。

三、profile 与 level:兼容性约束

profile 规定编码器能用哪些高级特性。越高的 profile 压缩效率越好,但老设备可能解不了。

profile特性适用
baseline最少特性,不支持 B 帧超老设备、早期安卓
main增加 B 帧等标清设备
high(默认常用)8x8 变换等高级特性主流高清设备
high1010-bit 色深HDR、高质量归档

绝大多数情况下用 high 就对了,2015 年后的设备都支持。只有明确要兼容老款手机、旧投影仪时,才降到 mainbaseline

level 约束分辨率、帧率、码率的上限,比如 4.0 对应 1080p@30,4.2 对应 1080p@60 / 4K@30。不指定时 x264 会自动根据视频参数选,一般不用手动设。

ffmpeg -i input.mp4 -c:v libx264 -profile:v high -level 4.0 -crf 23 output.mp4

四、tune:按片源类型优化

tune 告诉编码器视频的内容类型,从而调整一组内部参数。

tune 值适用内容
film电影、真实拍摄画面
animation动画、卡通(平涂色块、锐利边缘)
grain胶片颗粒感强的老片
stillimage幻灯片为主
fastdecode让解码更轻松(低端设备)
zerolatency直播、低延迟,禁用缓冲
ffmpeg -i anime.mkv -c:v libx264 -tune animation -crf 22 output.mp4

动画用 animation、直播用 zerolatency 是最常见的两个。不确定就不写,x264 会用通用设置。

五、常用组合速查

场景命令
日常压片-preset slow -crf 22
快速预览-preset veryfast -crf 23
屏幕录制-preset veryfast -crf 18 -tune stillimage
动画归档-preset slow -crf 20 -tune animation
直播推流-preset veryfast -tune zerolatency -b:v 4000k -maxrate 4000k -bufsize 8000k
老设备兼容-profile:v main -level 3.1 -crf 24

六、查看编码器全部选项

x264 的参数远不止这些。想查看当前 FFmpeg 里 libx264 支持的所有私有选项:

ffmpeg -h encoder=libx264

输出里会列出 presettuneprofilecrfmaxratebufsizeg(GOP)等所有可配置项,以及它们的取值范围。这是最权威的参考。

Note

一条命令里同时写 -crf-b:v 时,x264 以 CRF 为准;要做 two-pass 才用 -b:v,此时不写 CRF。下一章讲 HEVC/VP9 时,你会发现它们的 preset 名字和 CRF 范围与 x264 不完全一样,别照搬数字。