Сразу к выводу: 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 | Установите все три параметра одинаковыми для 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
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 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 два прохода | -b:v 4M -pass 2 | 36.2MB | 89.7% | ★★★★☆ | 268 с |
Тесты выявили несколько ключевых выводов: CRF 23 обеспечивает лучший баланс качества и размера (42 МБ, качество 4,5 звезды); CBR 4M по размеру близок к CRF 23, но качество чуть хуже (артефакты в сложных сценах); двухпроходный VBR даёт наиболее точный размер, но время удваивается. Для архивирования 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 | Мобильное SD-видео |
| 720p | 30fps | 2.5Mbps | 2.5Mbps | CRF 23 | Веб-стандарт |
| 1080p | 30fps | 4.0Mbps | 4.0Mbps | CRF 23 | HD общее назначение |
| 1080p | 60fps | 6.0Mbps | 6.0Mbps | CRF 22 | HD с высоким FPS |
| 1440p | 30fps | 8.0Mbps | 8.0Mbps | CRF 22 | Качество 2K |
| 2160p(4K) | 30fps | 16.0Mbps | 16.0Mbps | CRF 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 | Постоянный битрейт для расчёта объёма хранения | Зависит от источника |
| Видео для email | CRF | -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 и др. Локальное сжатие — данные не покидают систему.