Инструкция по кодированию видео в H.264 с помощью FFmpeg
1. Основные концепции
- FFmpeg — бесплатный инструмент для обработки видео/аудио.
- H.264 — кодек для сжатия видео с высоким качеством и эффективностью.
- Основные режимы кодирования:
- CRF (Constant Rate Factor) — для фиксированного качества (рекомендуется для большинства случаев).
- CBR (Constant Bitrate) — для фиксированного битрейта.
- VBR (Variable Bitrate) — с максимальным битрейтом.
- Укажите входной файл (input.mp4) и выходной (output.mp4).
2. Базовая команда
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4-i input.mp4: входной файл.-c:v libx264: видеокодек H.264.-c:a aac: аудиокодек AAC.- Без дополнительных параметров видео сжимается в режиме по умолчанию (CRF 23).
3. Основные параметры для видео (H.264)
Качество и скорость
-preset [ultrafast/fast/medium/slow/veryslow]
Баланс между скоростью кодирования и качеством. Рекомендуетсяmediumдля общего использования. Пример:-preset slow(медленнее, но лучше качество).
Из документации: ultrafast для максимальной скорости, veryslow для максимального качества.-crf [0-51]
Режим CRF для качества. Низкие значения (0-18) — высокое качество, высокие (22-51) — низкое. Рекомендуется 18-28 для HD. Пример:-crf 20(лучше качество, чем по умолчанию 23).
Из wiki: CRF предпочтительнее битрейта для качественного сжатия.-b:v
Фиксированный битрейт видео (VBR/CBR). Используйте с -maxrate для VBR. Пример:-b:v 5M(5 Мбит/с). Не рекомендуется с CRF.
Рекомендация: Для потокового видео — CBR, для архива — CRF.
Параметры размеров и потоков
-vf scale=width:height
Изменение размера. Пример:-vf scale=1920:1080.
Для сохранения пропорций:-vf scale=-1:1080(ширина подгонится).-r [fps]
Изменение частоты кадров. Пример:-r 30.-t [секунды]
Длительность выходного файла. Пример:-t 60(первые 60 секунд).
Продвинутые настройки
-maxrate и -bufsize
Ограничение для VBR. Пример:-maxrate 4M -bufsize 8M(пик до 4 Мбит/с, буфер 8 Мб).-profile:v [baseline/main/high]
Профиль H.264. Для совместимости с устройствами. Пример:-profile:v main.-level [3.0/4.0/etc.]
Уровень H.264. Пример:-level 4.0(для High Profile).-pix_fmt
Формат пикселей. Пример:-pix_fmt yuv420p(стандарт для H.264).
4. Параметры для аудио
-c:a aac
Кодек AAC (рекомендуется).-b:a
Битрейт аудио. Пример:-b:a 128k.-ac [число каналов]
Моно/стерео. Пример:-ac 2(стерео).-ar [частота]
Частота дискретизации. Пример:-ar 44100.
5. Дополнительные опции и советы
Двупроходное кодирование для лучшего CBR:
Сначала:ffmpeg -i input.mp4 -c:v libx264 -b:v 5M -pass 1 -f null /dev/null(Windows: NUL).
Потом:ffmpeg -i input.mp4 -c:v libx264 -b:v 5M -pass 2 output.mp4.Обработка аппаратного ускорения: Для NVIDIA —
-c:v h264_nvenc. Для Intel —-c:v h264_qsv.Проверка параметров: Добавьте
-reportдля генерации лога ошибок.Примеры команд:
- Качественное сжатие с preset:
ffmpeg -i input.mp4 -c:v libx264 -preset slow -crf 20 -c:a aac output.mp4. - Для YouTube (2-pass):
ffmpeg -i input.mp4 -c:v libx264 -preset medium -b:v 5M -maxrate 5M -bufsize 10M -c:a aac -b:a 128k -pass 1 -f null NUL && ffmpeg -i input.mp4 -c:v libx264 -preset medium -b:v 5M -maxrate 5M -bufsize 10M -c:a aac -b:a 128k -pass 2 output.mp4.
- Качественное сжатие с preset:
Советы из статьи: Для анимации используйте CRF ниже 23; избегайте переизбытка битрейта; тестируйте на маленьких файлах.
Вот понятная и практичная инструкция по основным параметрам кодирования H.264 в FFmpeg (кодек libx264) на 2025–2026 год.
Самые важные параметры libx264 (в порядке приоритета влияния)
| Параметр | Что делает | Рекомендуемые значения | Комментарий / Когда использовать |
|---|---|---|---|
| -c:v libx264 | Выбор кодека | Всегда libx264 | Базовый параметр для H.264 |
| -crf | Качество (Constant Rate Factor) | 17–28 • 17–19 — почти без потерь • 20–23 — очень хорошее • 24–27 — хорошее • 28+ — уже заметны артефакты | Самый удобный и качественный режим. Чем меньше — тем лучше качество и больше размер |
| -preset | Баланс скорость ↔ сжатие | ultrafast → superfast → veryfast → faster → fast → medium → slow → slower → veryslow | Чем медленнее — тем лучше сжатие (меньше размер при том же качестве). medium — разумный дефолт |
| -tune | Подстройка под тип контента | film (кино), animation (мульт), grain (зернистость), stillimage (слайды), zerolatency (стрим), без параметра | Использовать, только если контент сильно специфичен |
| -profile:v | Совместимость / возможности кодека | high (самое частое) main baseline (очень старые устройства) | Почти всегда оставляют по умолчанию (обычно high) |
| -level | Уровень совместимости H.264 | 4.0, 4.1, 4.2, 5.0, 5.1, 5.2 | Часто нужен для старых устройств/плееров. 5.1 — почти универсально |
| -pix_fmt | Формат пикселей | yuv420p (8 bit) — самый совместимый yuv420p10le — 10 бит | 10-бит даёт лучшее качество при высоком битрейте/низком CRF |
| -g / -keyint | Расстояние между ключевыми кадрами (GOP) | 2×fps — 10×fps часто 48–250 | Для стриминга/YouTube — 2–4×fps. Для архива — можно больше |
| -bf | Количество B-кадров | 0–3 (обычно 2–3) | Больше — лучше сжатие, но хуже совместимость со старыми плеерами |
| -b:v | Целевой битрейт (если не используем CRF) | 2500k–8000k (1080p) 800k–3000k (720p) | Используется в двухпроходном режиме или CBR |
| -maxrate -bufsize | Ограничение пикового битрейта | maxrate = 1.5–2× среднего bufsize = 2×maxrate | Важно для стриминга и YouTube/Twitch |
| -movflags +faststart | Быстрый старт воспроизведения (mp4) | Добавлять почти всегда | Файл начинает воспроизводиться до полной загрузки |
# 1. Максимальное качество, размер не важен (архив/мастеринг)
ffmpeg -i input.mkv -c:v libx264 -crf 17 -preset slower -profile:v high -level 5.1 -pix_fmt yuv420p -movflags +faststart output.mp4
# 2. Отличное качество — хороший баланс размер/качество (самый популярный вариант)
ffmpeg -i input.mkv -c:v libx264 -crf 20 -preset medium -profile:v high -level 5.1 -pix_fmt yuv420p output.mp4
# 3. Хорошее качество при разумном размере (YouTube, архив 1080p)
ffmpeg -i input.mkv -c:v libx264 -crf 23 -preset slow -profile:v high -level 5.1 -pix_fmt yuv420p -movflags +faststart output.mp4
# 4. Для слабого железа / быстрая перекодировка
ffmpeg -i input.mkv -c:v libx264 -crf 24 -preset veryfast -profile:v high output.mp4
# 5. Стриминг / YouTube live (ограничение битрейта)
ffmpeg -re -i input.mkv -c:v libx264 -preset veryfast -crf 24 -maxrate 4500k -bufsize 9000k -g 48 -keyint_min 48 -b:v 3500k -profile:v high -level 4.1 -pix_fmt yuv420p -f flv rtmp://…
# 6. Почти без потерь (визуально без потерь) + 10 бит
ffmpeg -i input.mkv -c:v libx264 -crf 18 -preset slow -profile:v high -pix_fmt yuv420p10le -movflags +faststart output.mkv
Быстрая шпаргалка по CRF (примерно, 1080p, preset medium/slow)
CRF | Качество | Размер относительно CRF 23
———|—————————-|——————————
17–18 | Визуально без потерь | ×2.5–4
19–20 | Отличное | ×1.6–2.2
21–22 | Очень хорошее | ×1.3–1.7
23 | Хорошее+ (дефолт) | 1× (базовый)
24–25 | Хорошее | ×0.7–0.85
26–28 | Приемлемое | ×0.45–0.65
Выбирайте самый медленный preset, на который хватает времени/железа — это обычно даёт гораздо больше выгоды, чем игра с другими параметрами.











