Открыть сервисСервис

FFmpeg — свободный мультимедийный фреймворк

FFmpeg — это свободный и открытый программный фреймворк для обработки аудио-, видео- и других мультимедийных данных. Написан на языке C, распространяется по лицензии LGPL/GPL, работает на большинстве современных платформ (Linux, Windows, macOS и др.). Включает библиотеки libavcodec, libavformat, libavfilter и командные утилиты (ffmpeg, ffprobe, ffplay), которые выполняют кодирование, декодирование, транскодирование, фильтрацию и мультиплексирование мультимедийных потоков.

История

Проект FFmpeg создан в 2000 году французским программистом Фабрисом Белларом (Fabrice Bellard). Первая версия вышла 20 декабря 2000 года. Название расшифровывается как «Fast Forward MPEG» — быстрое перемотывание MPEG.

В 2007 году в результате конфликта вокруг лицензирования часть разработчиков вышла из проекта и создала форк Libav. Оба проекта развивались параллельно, обмениваясь кодом, пока в 2014 году слияние не вернуло большинство активных участников в FFmpeg. С тех пор Libav считается фактически неактивным.

С 2011 года разработка ведётся через систему контроля версий Git. Релизы выходят регулярно, примерно раз в несколько месяцев. Версия 4.0 (2018) принесла поддержку нового поколения кодеков, версия 5.0 (2022) — переход на новую систему API.

Структура проекта

FFmpeg состоит из нескольких ключевых библиотек и утилит:

КомпонентНазначение
libavcodecКодирование и декодирование аудио- и видеоданных (кодеки)
libavformatМультиплексирование и демультиплексирование контейнеров (mux/demux)
libavfilterПрименение фильтров к аудио- и видеопотокам
libavutilОбщие утилиты: математика, работа с памятью, логирование
libswscaleМасштабирование и преобразование цветовых пространств
libswresampleПреобразование частот дискретизации и форматов аудио
ffmpegОсновная консольная утилита для транскодирования
ffprobeИнструмент анализа мультимедийных файлов
ffplayПростой плеер на базе SDL

Возможности

FFmpeg поддерживает широкий набор операций:

  • Кодирование и декодирование — сотни видео- и аудиокодеков: H.264, H.265/HEVC, AV1, VP9, MPEG-2, MPEG-4, AAC, MP3, Opus, FLAC и многие другие.
  • Контейнеры — чтение и запись форматов MP4, MKV, AVI, MOV, WebM, OGG, MPEG-TS, FLV и др.
  • Фильтрация — масштабирование, поворот, обрезка, наложение субтитров, изменение цветокоррекции, шумоподавление, стабилизация видео.
  • Стриминг — приём и передача потоков по протоколам HTTP, RTMP, RTSP, SRT, HLS.
  • Извлечение аудио из видео, создание превью, генерация GIF, обработка субтитров.

Примеры использования

Транскодирование видео в формат MP4 с кодеком H.264:

`` ffmpeg -i input.mkv -c:v libx264 -c:a aac output.mp4 ``

Извлечение аудиодорожки в формат MP3:

`` ffmpeg -i video.avi -vn -c:a libmp3lame audio.mp3 ``

Получение информации о файле:

`` ffprobe -v error -show_format -show_streams file.mp4 ``

Применение

FFmpeg является одним из самых распространённых мультимедийных инструментов в мире. Он используется в:

  • Серверах стриминга — YouTube, Vimeo, Facebook (продукт Meta, признанной экстремистской и запрещённой в РФ) и другие платформы применяют FFmpeg для обработки загружаемого видео.
  • Медиаплеерах — VLC, mpv, Kodi и многие другие используют библиотеки FFmpeg.
  • Системах видеонаблюдения — для записи и транскодирования потоков с камер.
  • Веб-приложениях — на серверах Node.js, Python, PHP FFmpeg часто вызывается для обработки пользовательского контента.
  • Операционных системах — в дистрибутивах Linux FFmpeg входит в стандартный набор инструментов.

В России FFmpeg активно применяется в отрасли видеостриминга и онлайн-образования, а также в государственных и корпоративных системах видеоконференцсвязи.

Лицензирование

Основные библиотеки FFmpeg распространяются по лицензии LGPL версии 2.1 или новее, а компоненты с кодом GPL (например, некоторые кодеки) — по GPL версии 2. Это позволяет использовать FFmpeg в коммерческих продуктах при соблюдении условий лицензии. Проект поддерживается пожертвованиями и спонсорской помощью организаций, включая Google, Mozilla и VideoLAN.

Критика

Основная претензия к FFmpeg — сложность интерфейса командной строки и обилие опций, что затрудняет использование новичками. Также критикуется качество документации и нестабильность API между версиями. Тем не менее проект остаётся де-факто стандартом для мультимедийной обработки в свободном программном обеспечении.

Источники:

  • Официальный сайт проекта FFmpeg (ffmpeg.org)
  • Документация FFmpeg
  • Статья «FFmpeg» в Википедии
  • Книга «FFmpeg Cookbook» (Packt Publishing)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru