FFmpeg — это тот самый инструмент, который знают все, кто хотя бы раз пытался серьёзно работать с видео. Программа, родившаяся на стыке энтузиазма, академичности и безжалостного прагматизма, за двадцать лет стала стандартом де-факто.
Но как она появилась, что делает и какие кодеки поддерживает — разберёмся по порядку.
Как появился FFmpeg
Проект стартовал в начале 2000-х благодаря французскому разработчику Фабрису Беллару — гению, который создаёт сложные вещи так легко, будто пишет список покупок. Он основал QEMU, TCC, сделал свою реализацию Pi, а по пути — взялся за универсальный видеокодировочный инструмент.
Задача была прямолинейной, как UNIX-философия:
нужна библиотека, которая сможет преобразовать всё во всё, не выпендриваясь, без лишних зависимостей, без интерфейсов — только железные команды и стальные алгоритмы.
Сообщество подключилось быстро, архитектура росла, и сегодня FFmpeg — это:
- ffmpeg — трансформация и транскодирование,
- ffprobe — анализ потоков,
- ffplay — лёгкий видеоплеер,
- плюс огромный набор библиотек (libavcodec, libavformat, libavfilter и т. д.).
Фактически, FFmpeg стал сердцем большей части мировых видео-пайплайнов. Если вы смотрели потоковое видео, конвертировали ролик или открывали странный контейнер — где-то под капотом работал FFmpeg.
Возможности FFmpeg
FFmpeg умеет почти всё, что в принципе можно делать с медиа. Его часто называют «швейцарским ножом» — но ножом без ручки: инструментов много, но комфорт не входит в комплектацию.
Вот главное, что он делает.
1. Транскодирование
FFmpeg поддерживает десятки кодеков:
Видео-кодеки
- H.264/AVC
- H.265/HEVC
- H.266/VVC (частично, зависит от сборки и внешних библиотек)
- VP8
- VP9
- AV1 (через libaom, SVT-AV1, rav1e)
- MPEG-2
- MPEG-4 ASP
- Theora
- ProRes
- DNxHD/DNxHR
- JPEG2000
- Huffyuv, FFV1 — для без потерь
Экзотичнее
- EVC (MPEG-5 Part 1 Essential/EVC baseline — частичная поддержка)
- LC-EVC — опционально через внешние плагины
- H.263, Cinepak, WMV, Sorenson — для археологов digital video
Аудио
- AAC, MP3, AC3
- OPUS
- FLAC
- ALAC
- Vorbis
- G.711, G.722, Speex
- десятки других
Пресеты, профили, CRF, CBR/VBR, фильтры, GOP, аппаратное ускорение (NVENC, VAAPI, AMF, QSV) — всё поддаётся конфигурации.
2. Работа с контейнерами
FFmpeg — настоящая энциклопедия медиаконтейнеров:
- MP4
- MKV
- MOV
- AVI
- MXF
- FLV
- TS
- MPEG-PS
- WEBM
- OGG
- WAV/AIFF
Если существует устройство или программа, которая создаёт контейнер — FFmpeg, скорее всего, уже умеет его открыть.
3. Сетевые протоколы
FFmpeg — один из самых универсальных инструментов работы со стримингом:
- RTMP (ingest и отдача)
- RTSP/RTP
- SRT
- HLS (с сегментацией)
- DASH (через фильтры сегментирования)
- UDP/TCP
- HTTP(S)
Фактически, можно тянуть поток с камеры и в реальном времени перекодировать его во что угодно.
4. Фильтры и обработка
Это отдельная вселенная:
- масштабирование, кроп, вращение
- цветокоррекция
- LUT
- ffmpeg-filters для композитинга
- шумоподавление
- деинтерлейс
- стабилизация (vidstab)
- оверлеи, текст, встраивание субтитров
- изменение fps
- фильтры для аудио: нормализация, эквализация, реверберация
Цепочки могут быть столь сложными, что выглядят как шаманские формулы.
Современные кодеки: H.266, AV1, EVC и что ещё поддерживает FFmpeg
С ростом разрешений (4K/8K) и мобильного трафика мир кодеков стал очень агрессивным. FFmpeg здесь играет роль универсального адаптера между всеми стандартами.
H.266 / VVC
Наследник HEVC, созданный Fraunhofer/ITU-T.
Преимущества:
- сжатие на 30–50% эффективнее, чем H.265
- ориентирован на 4K, 8K, VR, HDR
Недостатки:
- патентованный, дорогой
- ограниченная реализация в свободных кодеках
- аппаратная поддержка пока слабая
- FFmpeg работает с VVC через внешние библиотеки (например, VVenc/VVdec)
AV1
Пожалуй, главная «надежда интернета»:
- бесплатный и свободный
- мощная поддержка Big Tech
- растущая аппаратная декодировка в GPU и SoC
- высокая эффективность
FFmpeg поддерживает AV1 через:
- libaom
- SVT-AV1 (самый быстрый)
- rav1e (Rust-кодек)
MPEG-5 EVC и MPEG-5 LC-EVC
EVC — двухпрофильный кодек:
- Baseline — свободен от патентов
- Main — лицензируется
LC-EVC — дополнительный уровень для ускоренного кодирования.
FFmpeg поддерживает базовые функции через внешние реализации.
VP9 / VP8
По-прежнему широко используются в браузерах, YouTube, WebRTC.
ProRes, DNxHD/HR
Нужны для продакшна и пост-продакшна.
FFmpeg стабильно поддерживает эти кодеки: экспорт, трансформация, прокси.
Лицензионные ограничения FFmpeg
Вот где начинается самое интересное.
FFmpeg распространяется под LGPL и GPL.
Но набор подключённых кодеков влияет на ваш юридический статус.
1. GPL-сборка
Если включить кодеки вроде:
- libx264
- libx265
- libfdk_aac
то весь продукт, который включает FFmpeg, становится «заразным» GPL.
Закрыть код уже нельзя.
2. LGPL-сборка
Можно использовать динамически, но:
- нельзя изменять библиотеку, скрывая правки
- нужно сохранять доступ к API
- нельзя статически линковать, если кодек GPL
3. Патенты — ваша головная боль
FFmpeg включает кодеки, но не предоставляет права на патенты:
- H.264
- H.265
- H.266
- MPEG-4
- AAC
Технически — вы можете кодировать.
Юридически — лицензирование остаётся за вами.
Недостатки FFmpeg
Даже при всей мощности у FFmpeg есть ощутимые минусы.
1. Нет графического интерфейса
Только командная строка.
Только хардкор.
2. Огромный порог входа
Документация — сотни страниц.
Команд — сотни. шибка в одном параметре — весь пайплайн вылетел
3. Не медиасервер
FFmpeg не умеет:
- балансировку
- failover
- перезапуски
- управление плеерами
- мониторинг
- управление архивом
- нагрузочную оптимизацию
- кластеризацию
Его используют как двигатель. Но не как машину.
4. Архив — боль
FFmpeg пишет чанки, но не умеет:
- собирать архив
- отслеживать размер хранилища
- чистить по правилам
- индексировать записи
Нужен сторонний софт.
5. Сложная поддержка новых кодеков
Тот же H.266 требует внешних библиотек и экспериментальных сборок.
Поддержка AV1 долго была медленной (пока не появился SVT).
Итог
FFmpeg — это абсолютный универсал, золотой стандарт, инструмент, проверенный временем. Он способен работать с любыми кодеками, контейнерами и протоколами, включая самые современные: AV1, VVC/H.266, EVC и LC-EVC.
Но:
- в нём нет удобства,
- нет сервера,
- нет автоматизации,
- нет GUI,
- нет управления архивами,
- нет встроенного масштабирования.
Это не продукт «для запуска», а фундамент, на котором строят продукты.
Хотите понять видео глубоко — FFmpeg ваш лучший учитель. Хотите комфорт — придётся строить обвязку вокруг него.