結論先行:FFmpeg動画圧縮有三種類ビットレート制御模式——CRF(恒定画質)適したアーカイブ和ローカルストレージ,CBR(恒定ビットレート)適した直播推流,VBR(可变ビットレート)適した流媒体点播。同一つ1080p動画,CRF 23输出42MB画質最优,CBR 4Mbps输出38MBビットレート最稳定,VBR输出36MBサイズ最小但画質波动。选错模式不是サイズ浪费である是画質下降,以下では原理、命令、实测三つ层面詳解怎么选。
もし動画圧縮的整体方法まだ慣れていない場合は,まず動画圧縮指南。
一、三種類ビットレート模式原理比較
動画エンコード的ビットレート制御模式决定了エンコーダー如何分配比特リソース。不同模式的核心差异在于"优先保证什么"——CRF优先保证画質、CBR优先保证ビットレート稳定、VBR在2者间折中。理解この三種類模式的原理,是做好動画圧縮的基础。
| 比較维度 | CRF (Constant Rate Factor) | CBR (Constant Bitrate) | VBR (Variable Bitrate) |
|---|---|---|---|
| 中文全称 | 恒定速率因子 | 恒定ビットレート | 可变ビットレート |
| 核心目標 | 画質恒定 | ビットレート恒定 | サイズ可控 |
| ビットレート分配 | 按画面複雑度动态分配 | 每フレーム固定ビットレート | 在上下限间波动 |
| 画質一致性 | ★★★★★ | ★★☆☆☆ | ★★★☆☆ |
| サイズ可控性 | ★★☆☆☆ | ★★★★★ | ★★★★☆ |
| エンコード速度 | 中等 | 最快 | 较慢 |
| 適用シナリオ | アーカイブ/ローカルストレージ | 直播推流 | 流媒体点播 |
簡単来说:CRFさせるエンコーダー"根据画面难易程度分配ビットレート"——动作大片多にビットレート、静态に対して话少にビットレート,最终每フレーム画質一致;CBR则"不管画面複雑与否都に一样多的ビットレート"——簡単シナリオ浪费ビットレート、複雑シナリオビットレート不够导致马赛克;VBR介于2者之间,设定ビットレート範囲させるエンコーダー自行调节。
二、FFmpeg命令例与パラメータ
三種類模式在FFmpeg中的命令写法不同,主なパラメータ也不同。下面に出每種類模式的標準命令模板和パラメータ説明。
| 模式 | 主なパラメータ | パラメータ説明 | 典型值範囲 |
|---|---|---|---|
| CRF | -crf | 画質因子,值越小画質越高 | 0-51(18-28常用) |
| CRF约束 | -maxrate / -bufsize | 制限峰值ビットレート | maxrate 2-8Mbps |
| CBR | -b:v / -minrate / -maxrate | 三者设である相同值実現CBR | 2-8Mbps |
| VBR | -b:v | 目標平均ビットレート | 2-6Mbps |
| VBR範囲 | -minrate / -maxrate | ビットレート波动範囲 | min 1-2Mbps / max 4-8Mbps |
| 通用 | -preset | エンコード速度与圧縮率平衡 | ultrafast-fast-medium-slow |
1. CRF模式命令
CRF是最推奨的アーカイブ圧縮模式。エンコーダー根据画面複雑度自動分配ビットレート,保证每フレーム画質一致。CRF 23是H.264的デフォルト值,適した大多数シナリオ。
纯CRF模式(不限ビットレート上限):
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4
约束CRF模式(制限峰值ビットレート,適した需要ビットレート上限的シナリオ):
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -maxrate 4M -bufsize 8M -preset medium output.mp4
2. CBR模式命令
CBRを通じてをminrate、maxrate和b:v设である相同值来実現恒定ビットレート。直播推流必须用CBR保证ビットレート稳定。
標準CBR模式:
ffmpeg -i input.mp4 -c:v libx264 -b:v 4M -minrate 4M -maxrate 4M -bufsize 8M -preset fast output.mp4
直播推流模式(配合RTMP):
ffmpeg -i input.mp4 -c:v libx264 -b:v 4000k -minrate 4000k -maxrate 4000k -bufsize 8000k -g 60 -preset fast -f flv rtmp://server/live/stream
3. VBR模式命令
VBR设定目標平均ビットレート,エンコーダー在範囲内自由调节。適した流媒体点播等需要サイズ预估的シナリオ。
標準VBR模式:
ffmpeg -i input.mp4 -c:v libx264 -b:v 4M -preset medium -c:a aac -b:a 128k output.mp4
2遍エンコードVBR(Two-pass,更精确制御サイズ):
ffmpeg -y -i input.mp4 -c:v libx264 -b:v 4M -pass 1 -an -f mp4 /dev/null
ffmpeg -i input.mp4 -c:v libx264 -b:v 4M -pass 2 -c:a aac -b:a 128k output.mp4
三、实测データ:同動画三種類模式比較
我たち用同一段1080p/30fpsテスト動画(元のサイズ350MB,H.264エンコード,时长5分钟),分别用三種類模式圧縮,比較サイズ、画質和エンコード耗时。
| 模式 | パラメータ | 输出サイズ | 圧縮率 | 画質评分 | エンコード耗时 |
|---|---|---|---|---|---|
| CRF 18 | -crf 18 -preset medium | 85.2MB | 75.7% | ★★★★★ | 142秒 |
| CRF 23 | -crf 23 -preset medium | 42.1MB | 88.0% | ★★★★☆ | 128秒 |
| CRF 28 | -crf 28 -preset medium | 22.5MB | 93.6% | ★★★☆☆ | 115秒 |
| CBR 4M | -b:v 4M -minrate 4M -maxrate 4M | 38.3MB | 89.1% | ★★★☆☆ | 98秒 |
| CBR 2M | -b:v 2M -minrate 2M -maxrate 2M | 19.4MB | 94.5% | ★★☆☆☆ | 92秒 |
| VBR 4M | -b:v 4M -preset medium | 36.8MB | 89.5% | ★★★★☆ | 135秒 |
| VBR 4M 2遍 | -b:v 4M -pass 2 | 36.2MB | 89.7% | ★★★★☆ | 268秒 |
实测データ揭示了几つ重要结论:CRF 23在画質和サイズ间达到最佳平衡(42MB,画質四星半);CBR 4Mサイズ接近CRF 23但画質略差(複雑シナリオ出现马赛克);VBR2遍エンコードサイズ最精确但耗时翻倍。に対して于アーカイブシナリオ,CRF 23是最优選択。
再看不同presetに対してCRF 23的影响:
| preset | 输出サイズ | エンコード耗时 | サイズ差异 | 推奨シナリオ |
|---|---|---|---|---|
| ultrafast | 58.2MB | 32秒 | +38% | 实时预览 |
| fast | 45.6MB | 68秒 | +8% | 高速圧縮 |
| medium | 42.1MB | 128秒 | 基准 | 通用デフォルト |
| slow | 39.8MB | 285秒 | -5% | 高品質アーカイブ |
| slower | 38.5MB | 612秒 | -9% | 极致圧縮 |
不同解像度下的推奨ビットレート参照,帮助選択合适的CBR/VBR目標ビットレート:
| 解像度 | フレーム率 | CBR推奨ビットレート | VBR目標ビットレート | CRF推奨值 | 適用シナリオ |
|---|---|---|---|---|---|
| 480p | 30fps | 1.0Mbps | 1.0Mbps | CRF 24 | 移动端低清 |
| 720p | 30fps | 2.5Mbps | 2.5Mbps | CRF 23 | 网页標準清晰度 |
| 1080p | 30fps | 4.0Mbps | 4.0Mbps | CRF 23 | 高清通用 |
| 1080p | 60fps | 6.0Mbps | 6.0Mbps | CRF 22 | 高清高フレーム率 |
| 1440p | 30fps | 8.0Mbps | 8.0Mbps | CRF 22 | 2K画質 |
| 2160p(4K) | 30fps | 16.0Mbps | 16.0Mbps | CRF 20 | 超高清アーカイブ |
四、シナリオ推奨:不同用途选不同模式
不同使用シナリオに対して画質、サイズ、ビットレート稳定性的要求不同,選択ビットレート模式的核心是匹配シナリオ要件。
| 使用シナリオ | 推奨模式 | 推奨パラメータ | 選択理由 | 期待圧縮率 |
|---|---|---|---|---|
| ローカルアーカイブストレージ | CRF | -crf 23 -preset medium | 画質优先,サイズ最优 | 85%–90% |
| 高品質アーカイブ | CRF | -crf 18 -preset slow | 接近无损,长期保存 | 70%–80% |
| 直播推流 | CBR | -b:v 4M -minrate 4M -maxrate 4M | ビットレート稳定,防卡顿 | 因源而定 |
| 流媒体点播 | VBR2遍 | -b:v 4M -pass 2 | サイズ精确,画質均衡 | 80%–90% |
| 移动端再生 | 约束CRF | -crf 26 -maxrate 2M -bufsize 4M | 制限ビットレート适配移动网络 | 90%–95% |
| 网页動画 | 约束CRF | -crf 24 -maxrate 3M -bufsize 6M | 平衡画質和読み込み速度 | 88%–92% |
| 監視录像 | CBR | -b:v 1M -minrate 1M -maxrate 1M | 恒定ビットレート便于ストレージ計算 | 因源而定 |
| 動画邮件 | CRF | -crf 28 -preset fast | サイズ优先,画質可接受 | 93%–96% |
SmartSlim 在動画圧縮时基于自研 Rust 圧縮引擎,内置シナリオ化パラメータ库——4级圧縮 x 15シナリオ x 5档性能 = 300グループ合,自動根据動画用途選択最佳ビットレート模式和パラメータ,无需手動调FFmpeg命令。企業ユーザーまた可を通じてSDK集成到业务システム中,実現動画圧縮自動化。
更多動画エンコード比較,を参照してくださいH.264 vs H.265 vs AV1エンコード比較和動画圧縮画質评估方法。
五、よくある質問FAQ
Q1:FFmpeg動画圧縮用CRFまた是VBR好?
アーカイブ和ローカルストレージ用CRF更好。CRF以恒定画質である目標,複雑シナリオ多分配ビットレート、簡単シナリオ少分配,画質一致且サイズ最优。推奨CRF值18-28,18接近视觉无损,23是デフォルト平衡点,28画質可接受但サイズ更小。VBR適した需要制御ビットレート上限的シナリオ如流媒体,但画質不如CRF稳定。
Q2:CRF值多少画質最好?
CRF值越小画質越高,サイズ越大。H.264エンコード下:CRF 0である无损,CRF 18接近视觉无损(サイズ约である原片的50%),CRF 23是FFmpegデフォルト值(サイズ约原片的25%),CRF 28画質可接受(サイズ约原片的12%)。推奨範囲18-28,大多数シナリオ用CRF 23即可,追求高品質用CRF 18-20。
Q3:直播推流应该用CBRまた是VBR?
直播推流推奨用CBR。直播に対してビットレート稳定性要求极高——CBR保持恒定ビットレート,避免网络波动导致卡顿。推流平台通常要求固定ビットレート(如Twitch 6000kbps,B站 4000kbps),CBR能精确匹配。VBR在複雑シナリオ可能ビットレート飙升超出带宽上限导致丢フレーム,CBR则始终稳定。推奨推流用CBR + maxrate = bufsize = 目標ビットレート。
Q4:FFmpeg2種類VBR模式有什么区别?
FFmpeg有2档VBR:-crf配合maxrate/bufsize是约束VBR(constrained VBR),画質接近纯CRF但制限ビットレート峰值;-b:v配合-minrate/-maxrate是传统VBR,ビットレート在範囲内波动。约束VBR更適した实际使用,既保证画質又制御峰值ビットレート。传统VBR適した需要精确制御ビットレート範囲的シナリオ,如适配特定带宽环境。
まとめ
FFmpeg三種類ビットレート模式各有最佳シナリオ:CRF优先画質適したアーカイブ(推奨CRF 23),CBR优先稳定適した直播推流(推奨4Mbps恒定),VBR优先サイズ可控適した流媒体点播(推奨2遍エンコード)。选に対して模式是動画圧縮的第一步——アーカイブ选CRF、直播选CBR、点播选VBR,记住このつ原则である不会出错。
如果不想手動写FFmpeg命令,SmartSlim 提供开箱即用的動画圧縮ソリューション,基于自研 Rust 圧縮引擎内置300種類シナリオ化パラメータグループ合,サポート mp4/mkv/avi/mov/wmv/flv/webm/m4v 等 8 種類動画形式,ローカル圧縮データ不出域。
ファイルを圧縮してみませんか?SmartSlimを試す
独自開発のRust圧縮エンジンに基づき、PDF/画像/動画/Office/OFDなど10分野40以上の形式に対応。ローカル圧縮でデータは外部に送信されません。