Video Surveillance

История создания FFmpeg, его возможности, кодеки, лицензии и недостатки

Программное обеспечение Новости видеонаблюдения В фокусе
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 ваш лучший учитель. Хотите комфорт — придётся строить обвязку вокруг него.