Signature: 9Tr5q7jDMAsXa1Ddt0KWXr68Wj6bboQ7XTQrLiMICPB2Q7mADYKguslIN49u6a1projpawf4iWUhDHBQdNgny7yhNIa7YsZFOEYOEA+dhOitlBkmogH94QAgrhAmpft11pcTVoSkHPx5PbC0AR9Q1xtec+8yDV8PFS8tD8dYK3Kn35yQsmMxjr89B2UYiRvLwrVRYgfiWL3I3+9k1S7J2PiASls9/3XxrooWDdwklHJ7GYRkZ5nimBDUDcam7ncGJi/KN5sXueIjjUAHvNbjxSepHPaNPFV54vYzXXgQZU4=
НаукаТеории

Инструкция по кодированию видео в 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.
  • Советы из статьи: Для анимации используйте 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.2644.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)Добавлять почти всегдаФайл начинает воспроизводиться до полной загрузки
Рекомендуемые «рецепты» на 2025–2026 год (самые популярные варианты)

# 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, на который хватает времени/железа — это обычно даёт гораздо больше выгоды, чем игра с другими параметрами.

What's your reaction?

Excited
0
Happy
0
In Love
0
Not Sure
0
Silly
0

Вам понравится

Смотрят также:Наука

Оставить комментарий