Оптимизация размера видео с помощью FFmpeg

Что такое FFmpeg?
FFmpeg — это набор инструментов командной строки для конвертации, записи и трансформации медиафайлов. Кратко: это «движок», который используют многие графические приложения (VLC, Blender и др.).
Определение в одну строку: FFmpeg — это программа для кодирования, декодирования, трансляции и редактирования аудио/видео из терминала.
Ключевые возможности:
- Конвертация между контейнерами (MP4, MKV, WMV, FLV и др.).
- Выбор кодеков и их параметров (libx264, libx265, wmv2, aac и т.д.).
- Управление битрейтом, частотой кадров, разрешением и фильтрами.
- Скриптование массовых операций.
Установка
В Ubuntu / Debian-подобных дистрибутивах FFmpeg устанавливается командой:
sudo apt install ffmpegНа других дистрибутивах используйте менеджер пакетов системы (dnf, pacman) или официальные сборки с сайта проекта.

Быстрый пример использования
Самая простая команда для перекодировки файла:
ffmpeg -i input.video output.videoЭто базовый пример; по умолчанию FFmpeg подбирает кодеки и настройки автоматически, но для оптимизации размера нужно задавать параметры явно.

Основы оптимизации: уравнение качества и размера
Нельзя уменьшить размер файла до нуля без потери качества. Однако понимание четырёх факторов помогает находить баланс:
- Контейнер: MP4, MKV, WMV, FLV — контейнер влияет на совместимость и накладные расходы.
- Кодек: эффективно сжимает данные (libx264, libx265, wmv2 и т.д.).
- Частота кадров (FPS): меньше кадров = меньше данных, но плавность страдает.
- Битрейт: непосредственный параметр объёма информации — постоянный (CBR) или переменный (VBR/CRF).
Правило-эвристика:
small-container + efficient-codec + low-fps + low-bitrate = tiny/high-quality video file
Примечание: под «высоким качеством» подразумевается минимально заметная пикселизация и искажения при типичном просмотре. Для разных задач «приемлемая потеря» отличается.
Как выбрать подходящие параметры
Короткая инструкция:
- Определите целевую платформу и ограничения (веб, мессенджер, архив, стрим).
- Выберите контейнер с учётом совместимости (MP4 для веба, MKV для архива с субтитрами, WMV/FLV если критичны старые окружения).
- Выберите кодек: libx264 — хорош для совместимости/качества; libx265 — лучше сжатие при равном качестве, но требует новых плееров; wmv2/wmav2 — полезны для старых Windows-окружений.
- Решите: CRF (качество-первично) или целевой bitrate/two-pass (размер-первично).
- Снизьте разрешение/частоту кадров, если видео это позволяет.
Простая мыслительная модель
- Контент с быстрым движением: предпочитайте более высокий битрейт или меньшую компрессию (меньший CRF).
- Статические презентации/слайд-шоу: можно значительно снижать битрейт и fps.
- Аудио: переключайтесь на mono и понижайте sample rate, если речь критична, но качество музыки нет.
Практические команды и шаблоны
Ниже — команды, которые часто используют для уменьшения размера. Подставьте input/output по своему сценарию.
- Конвертация в MP4 с кодеком H.264 (libx264), CRF и настроенным пресетом:
ffmpeg -i input.mp4 -c:v libx264 -preset medium -crf 23 -c:a aac -b:a 128k output.mp4Пояснения: crf 18–23 — хорошее качество; 24–28 — разумный компромисс; выше — заметная потеря.
- Более агрессивное сжатие (меньший размер):
ffmpeg -i input.mp4 -c:v libx264 -preset slow -crf 28 -c:a aac -b:a 96k -vf scale=854:-2 -r 24 output-480p.mp4Здесь: scale=854:-2 — сохраним пропорции и понизим вертикальную сторону кратно двум; -r 24 — установить 24 кадра/с.
- Кодек H.265 (libx265) для лучшего сжатия при совместимых плеерах:
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -preset medium -c:a aac -b:a 96k output-hevc.mp4- Двухпроходная кодировка для точного таргета размера (целевой битрейт):
ffmpeg -y -i input.mp4 -c:v libx264 -b:v 800k -pass 1 -an -f mp4 /dev/null
ffmpeg -i input.mp4 -c:v libx264 -b:v 800k -pass 2 -c:a aac -b:a 96k output-target.mp4- Преобразование в WMV с использованием wmv2/wmav2 (для совместимости с Windows):
ffmpeg -i input.mp4 -c:v wmv2 -b:v 1000k -c:a wmav2 -b:a 128k -r 24 output.wmvВажно: некоторые старые кодеки не поддерживают параметры CRF и требуют управления битрейтом через -b:v.
- Уменьшение только аудио (когда важна картинка):
ffmpeg -i input.mp4 -c:v copy -c:a aac -b:a 64k output-audio-small.mp4- Снижение FPS для разговорных видео/вебинаров:
ffmpeg -i input.mp4 -filter:v fps=fps=15 -c:a copy output-15fps.mp4

Как тестировать и оценивать результат
Критерии приёмки
- Максимальный размер после оптимизации: соответствует лимиту платформы.
- Визуальные артефакты: отсутствуют заметные блоки/плашки при целевом просмотре.
- Аудио: разборчивость речи сохраняется.
- Совместимость: файл воспроизводится на целевых устройствах/плеерах.
Тест-кейсы (минимум):
- Короткий отрывок с быстрым движением (спорт/экшн).
- Короткий отрывок с статичной сценой (интервью/репортаж).
- Отрывок с насыщенной цветовой палитрой (анимация, природа).
Пройдите эти тесты для CRF разных значений и для двухпассовой кодировки, чтобы выбрать оптимум.
Когда оптимизация не подходит или даёт плохой результат
- Исходный файл уже сильно сжат — повторная компрессия ухудшит качество.
- Видео с большим количеством мелких деталей или шума (ночная съёмка) — агрессивная компрессия выдаст артефакты.
- Требуется профессиональный исходник для цветокоррекции/монтажа — лучше хранить оригинал без потерь.
Альтернативные подходы
- Использовать аппаратное ускорение (VA-API, NVENC) для быстрой обработки, но итоговое качество/битрейт могут отличаться.
- Использовать облачные сервисы для пакетной оптимизации, если локальные ресурсы ограничены.
- Для потокового видео применять адаптивный стриминг (HLS/DASH) с несколькими качествами.
Роль‑ориентированные чек‑листы
Для создателя контента:
- Оценить платформу доставки (социальная сеть, сайт, почта).
- Сохранить оригинал отдельно.
- Попробовать crf 20–28, выбрать лучший.
Для веб-разработчика:
- Создавать версии 720p/480p/360p для адаптивной подачи.
- Проверить загрузку/буферизацию на мобильных сетях.
Для архивиста:
- Хранить lossless/высококачественный мастер; создайте оптимизированные копии для доступа.
Локальные сервисы и подводные камни для русскоязычной аудитории
- Yandex.Disk, Mail.ru Cloud, Telegram и мессенджеры часто имеют ограничения по размеру и/или делают автоматическую перекодировку при загрузке. Всегда проверяйте, что загрузился не перекодированный файл.
- Некоторые корпоративные проигрыватели или старые версии Windows лучше работают с WMV; для мобильных и веба безопаснее MP4/H.264.
Краткий глоссарий
- Контейнер — формат обёртки для аудио/видео (MP4, MKV, WMV).
- Кодек — алгоритм сжатия аудио/видео (libx264, libx265, wmv2).
- CRF — параметр качества для кодеков x264/x265 (меньше = лучше качество).
- Bitrate (-b:v) — скорость потока данных в битах/с.
Резюме
FFmpeg даёт полный контроль над компрессией: комбинируя выбор контейнера, кодека, CRF/bitrate, разрешение и fps, можно сильно уменьшить размер файла при приемлемом качестве. Начинайте с CRF-метода для удобства, используйте двухпроходную кодировку для точного целевого размера и тестируйте результат на нескольких платформах.
Важно: всегда храните оригинал, пока не утвердите параметры оптимизации.
Конечный совет: начните с небольших тестов — 10–30 секунд — и итеративно подбирайте CRF/битрейт и пресет, пока не достигнете желаемого баланса размера и качества.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента