Страница 1 из 1

FFmpeg для веб-оптимизации

Добавлено: 23 авг 2026, 22:14
ya
Чтобы видео начинало воспроизводиться сразу же (без ожидания полной загрузки файла в браузере), критически важно использовать флаг -movflags +faststart. Он перемещает служебные метаданные (moov atom) в начало файла.

Код: Выделить всё

ffmpeg -i input.mov -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k -movflags +faststart output.mp4
-c:v libx264 — кодирует видео в H.264. Самый совместимый веб-кодек.
-preset medium — баланс между скоростью кодирования на сервере и степенью сжатия. Если нужно закодировать очень быстро, замените на -preset fast или -preset ultrafast.
-crf 23 — уровень качества (Constant Rate Factor). Чем меньше число, тем выше качество и больше файл. Для веба стандартные значения лежат в диапазоне от 20 до 26.
-c:a aac -b:a 128k — аудиокодек AAC с битрейтом 128 кбит/с — отлично поддерживается всеми браузерами.
-movflags +faststart — ключевой флаг для веб-стриминга. Позволяет браузеру начать воспроизведение видео еще до того, как оно скачается целиком.

мгновенно пересобрать контейнер

Код: Выделить всё

ffmpeg -i input.mp4 -c copy -movflags +faststart output.mp4

Re: FFmpeg для веб-оптимизации

Добавлено: 23 авг 2026, 22:36
ya
Старые браузеры часто не понимают сложные профили сжатия, поэтому видео нужно кодировать в профиль Baseline или Main и обязательно с пиксельным форматом yuv420p (чтобы видео не «зеленело» и не искажалось на старых устройствах).

Код: Выделить всё

ffmpeg -i input.mov -c:v libx264 -profile:v main -level 3.0 -pix_fmt yuv420p -preset medium -crf 23 -c:a aac -b:a 128k -movflags +faststart output.mp4

Код: Выделить всё

ffmpeg -err_detect ignore_err -i  input.mp4 \
-map_metadata -1 -map_chapters -1 -avoid_negative_ts make_zero \
-c:v libx264 -profile:v high -level 4.0 -pix_fmt yuv420p -r 30 \
-preset medium -crf 23 \
-c:a aac -b:a 128k -ar 44100 -ac 2 \
-brand mp42 \
-movflags +faststart \
output.mp4
-err_detect ignore_err — заставляет FFmpeg игнорировать ошибки и битые участки в исходнике на этапе чтения.

-ar 44100 -ac 2 — принудительно задает стандартную частоту звука (44.1 кГц) и стерео-режим. Ошибки декодирования AAC исчезнут, так как аудио сгенерируется «с чистого листа».

Убран параметр -level 3.1, который ломал Full HD.

Установлен -profile:v high — это стандарт де-факто для современного веб-видео в разрешении 1080p, поддерживаемый абсолютно всеми актуальными браузерами и версиями Vivaldi/Chromium.

-brand mp42 — важнейший флаг. Он меняет сигнатуру контейнера с общего isom на стандартный mp42, благодаря чему браузерный плеер сразу понимает, что файл полностью оптимизирован под HTML5-стриминг, а не является сырым дампом с камеры.

-level 4.0 — стандарт для Full HD (1920x1080), который гарантирует, что декодер браузера не заблокирует видеопоток по соображениям безопасности профиля.

-g 60 -keyint_min 60 — жестко задает ключевой кадр ровно каждые 2 секунды (при 30 кадрах в секунду). Браузеру больше не нужно ждать ключевой кадр — видео начнет отрисовываться мгновенно.

-bf 0 — полностью отключает B-кадры (промежуточные кадры). Некоторые аппаратные декодеры в Linux/Chromium сбоят при обработке B-фреймов из файлов, созданных сторонним софтом. Профиль Main без B-фреймов гарантирует 100% стабильность отображения.

-profile:v main — золотой стандарт совместимости для веб-видео в разрешении 1080p.

Код: Выделить всё

ffmpeg -i Osnovy_konfigurirovaniya_pul_ta_S2000M_v_Pprog_dd3f4b5b8e63487ed4901d3ed9d03750.mp4 \
-c:v libx264 -profile:v main -level 4.0 -pix_fmt yuv420p \
-r 30 -g 60 -keyint_min 60 -bf 0 \
-preset fast -crf 23 \
-c:a aac -b:a 128k -ar 44100 -ac 2 \
-movflags +faststart \
Osnovy_konfigurirovaniya_pul_ta_S2000M_v_Pprog_dd3f4b5b8e63487ed4901d3ed9d03750.web.mp4

Re: FFmpeg для веб-оптимизации

Добавлено: 24 авг 2026, 00:22
ya
вот этим нужно обжимать

Код: Выделить всё

ffmpeg -hide_banner -err_detect ignore_err -i Osnovy_konfigurirovaniya_pul_ta_S2000M_v_Pprog_dd3f4b5b8e63487ed4901d3ed9d03750.mp4 -map_metadata -1 -map_chapters -1 -avoid_negative_ts make_zero -c:v libx264 -profile:v high -pix_fmt yuv420p -r 25 -g 50 -keyint_min 50 -bf 0 -preset medium -crf 23 -c:a aac -b:a 128k -ar 44100 -ac 2 -brand mp42 -movflags +faststart Osnovy_konfigurirovaniya_pul_ta_S2000M_v_Pprog_dd3f4b5b8e63487ed4901d3ed9d03750.fast.mp4
Частота кадров (-r 25) — переводим с проблемных 42 fps на стабильные 25 fps, как в рабочем файле.

Профиль и формат (-profile:v high -pix_fmt yuv420p) — стандартный High Profile с правильной цветовой схемой.

Интервал ключевых кадров (-g 50) — ровно 2 секунды для 25 fps, что идеально для веб-плееров.