UGLYPEAR AI обновил бизнес: высокопроизводительное сжатие документов × RAG-платформа инженерии данныхУзнать о новом направлении →

Сжатие FFmpeg: CRF vs CBR vs VBR — как выбрать?

Сразу к выводу: FFmpeg поддерживает три режима управления битрейтом — CRF (постоянное качество) подходит для архивирования и локального хранения, CBR (постоянный битрейт) — для прямых трансляций, VBR (переменный битрейт) — для потокового видео по запросу. Для одного и того же 1080p-видео: CRF 23 даёт 42 МБ с лучшим качеством, CBR 4 Мбит/с — 38 МБ со стабильным битрейтом, VBR — 36 МБ с минимальным размером, но с колебаниями качества. Неправильный режим приводит либо к раздутому файлу, либо к потере качества. Ниже разберём выбор с точки зрения принципов, команд и реальных тестов.

Если вы пока не знакомы с общими методами сжатия видео, рекомендуем сначала прочитатьРуководство по сжатию видео

1. Сравнение принципов трёх режимов битрейта

Режим управления битрейтом определяет, как кодировщик распределяет биты. Главное различие между режимами — что они считают приоритетом: CRF — качество, CBR — стабильность битрейта, VBR — компромисс между ними. Понимание этих принципов — основа качественного сжатия видео.

Параметр сравнения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Установите все три параметра одинаковыми для CBR2-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

VBR в два прохода (более точный контроль размера):
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

3. Результаты тестов: сравнение трёх режимов на одном видео

Мы взяли одно и то же тестовое видео 1080p/30fps (исходный размер 350 МБ, H.264, длительность 5 минут) и сжали его тремя режимами, сравнив размер, качество и время кодирования.

РежимПараметрыРазмер на выходеКоэффициент сжатияОценка качестваВремя кодирования
CRF 18-crf 18 -preset medium85.2MB75.7%★★★★★142 с
CRF 23-crf 23 -preset medium42.1MB88.0%★★★★☆128 с
CRF 28-crf 28 -preset medium22.5MB93.6%★★★☆☆115 с
CBR 4M-b:v 4M -minrate 4M -maxrate 4M38.3MB89.1%★★★☆☆98 с
CBR 2M-b:v 2M -minrate 2M -maxrate 2M19.4MB94.5%★★☆☆☆92 с
VBR 4M-b:v 4M -preset medium36.8MB89.5%★★★★☆135 с
VBR 4M два прохода-b:v 4M -pass 236.2MB89.7%★★★★☆268 с

Тесты выявили несколько ключевых выводов: CRF 23 обеспечивает лучший баланс качества и размера (42 МБ, качество 4,5 звезды); CBR 4M по размеру близок к CRF 23, но качество чуть хуже (артефакты в сложных сценах); двухпроходный VBR даёт наиболее точный размер, но время удваивается. Для архивирования CRF 23 — оптимальный выбор.

Влияние разных preset на CRF 23:

presetРазмер на выходеВремя кодированияРазница в размереРекомендуемый сценарий
ultrafast58.2MB32 с+38%Предпросмотр в реальном времени
fast45.6MB68 с+8%Быстрое сжатие
medium42.1MB128 сБазовый уровеньСтандарт по умолчанию
slow39.8MB285 с-5%Высококачественное архивирование
slower38.5MB612 с-9%Максимальное сжатие

Рекомендуемые значения битрейта для разных разрешений — помогут выбрать CBR/VBR:

РазрешениеЧастота кадровРекомендуемый CBRЦелевой VBRРекомендуемый CRFСценарий использования
480p30fps1.0Mbps1.0MbpsCRF 24Мобильное SD-видео
720p30fps2.5Mbps2.5MbpsCRF 23Веб-стандарт
1080p30fps4.0Mbps4.0MbpsCRF 23HD общее назначение
1080p60fps6.0Mbps6.0MbpsCRF 22HD с высоким FPS
1440p30fps8.0Mbps8.0MbpsCRF 22Качество 2K
2160p(4K)30fps16.0Mbps16.0MbpsCRF 20Архивирование UHD

4. Рекомендации по сценариям: выбор режима под задачу

Разные сценарии предъявляют различные требования к качеству, размеру и стабильности битрейта. Ключ к выбору режима — соответствие задаче.

СценарийРекомендуемый режимРекомендуемые параметрыПричина выбораОжидаемое сжатие
Локальное архивное хранениеCRF-crf 23 -preset mediumПриоритет качества, оптимальный размер85%–90%
Высококачественное архивированиеCRF-crf 18 -preset slowБлизко к без потерь, долгосрочное хранение70%–80%
Прямая трансляцияCBR-b:v 4M -minrate 4M -maxrate 4MСтабильный битрейт, без зависанийЗависит от источника
Потоковое видео по запросуVBR в два прохода-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Постоянный битрейт для расчёта объёма храненияЗависит от источника
Видео для emailCRF-crf 28 -preset fastПриоритет размера, приемлемое качество93%–96%

SmartSlim при сжатии видео использует собственный движок сжатия на Rust со встроенной библиотекой сценарных параметров — 4 уровня сжатия × 15 сценариев × 5 профилей производительности = 300 комбинаций, автоматически выбирающей лучший режим и параметры битрейта под назначение видео, без ручной настройки FFmpeg. Корпоративные пользователи могут интегрировать SDK в свои системы для автоматизации сжатия видео.

Дополнительные сравнения видеокодеков см. вСравнение H.264, H.265 и AV1 и Методы оценки качества сжатия видео

5. Часто задаваемые вопросы

В1: Что лучше для сжатия видео в FFmpeg — CRF или VBR?

Для архивирования и локального хранения лучше CRF. CRF ориентирован на постоянное качество: сложные сцены получают больше битрейта, простые — меньше, качество стабильно, а размер оптимален. Рекомендуемые значения CRF: 18-28, где 18 близко к визуально без потерь, 23 — баланс по умолчанию, 28 — приемлемое качество при меньшем размере. VBR подходит для сценариев с лимитом битрейта (например, потоковое видео), но качество уступает CRF по стабильности.

В2: Какое значение CRF даёт лучшее качество?

Чем меньше CRF, тем выше качество и больше размер. Для H.264: CRF 0 — без потерь, CRF 18 — близко к визуально без потерь (около 50% исходного размера), CRF 23 — значение по умолчанию в FFmpeg (около 25% исходного размера), CRF 28 — приемлемое качество (около 12% исходного размера). Рекомендуемый диапазон 18-28; для большинства сценариев подходит CRF 23, для высокого качества — CRF 18-20.

В3: Для прямой трансляции использовать CBR или VBR?

Для прямых трансляций рекомендуется CBR. Трансляции требуют очень стабильного битрейта — CBR обеспечивает постоянный поток, избегая зависаний при колебаниях сети. Платформы обычно требуют фиксированный битрейт (Twitch — 6000 кбит/с, Bilibili — 4000 кбит/с), CBR точно его обеспечивает. VBR в сложных сценах может резко поднять битрейт выше лимита канала и вызвать потерю кадров, CBR же всегда стабилен. Рекомендуем для трансляций: CBR + maxrate = bufsize = целевой битрейт.

В4: В чём разница между двумя режимами VBR в FFmpeg?

В FFmpeg есть два уровня VBR: -crf с maxrate/bufsize — ограниченный VBR (constrained VBR), качество близко к чистому CRF, но с лимитом пикового битрейта; -b:v с -minrate/-maxrate — классический VBR, битрейт колеблется в пределах диапазона. Ограниченный VBR больше подходит для практического использования, обеспечивая и качество, и контроль пикового битрейта. Классический VBR подходит для сценариев с точным контролем диапазона битрейта, например, для адаптации к конкретной полосе пропускания.

Заключение

У каждого из трёх режимов FFmpeg свой оптимальный сценарий: CRF с приоритетом качества — для архивирования (рекомендуется CRF 23), CBR со стабильностью — для прямых трансляций (рекомендуется постоянный 4 Мбит/с), VBR с приоритетом размера — для потокового видео по запросу (рекомендуется двухпроходный). Правильный выбор режима — первый шаг к успешному сжатию видео: архив — CRF, трансляция — CBR, по запросу — VBR. Запомните этот принцип — и не ошибётесь.

Если вы не хотите писать команды FFmpeg вручную, SmartSlim предлагает готовое решение для сжатия видео: собственный движок на Rust со встроенными 300 комбинациями сценарных параметров, поддержка 8 видеоформатов: mp4, mkv, avi, mov, wmv, flv, webm, m4v. Локальное сжатие — данные не покидают систему.

Нужно сжать файлы? Попробуйте SmartSlim

Собственный движок сжатия на Rust, поддержка 10+ категорий и более 40 форматов: PDF, изображения, видео, Office, OFD и др. Локальное сжатие — данные не покидают систему.