ffmpeg
Комплексный, кроссплатформенный проект для обработки мультимедиа, содержащий библиотеки и инструменты для записи, конвертации, потоковой передачи и воспроизведения аудио и видео. Он поддерживает огромное количество кодеков, контейнеров и протоколов, что делает его универсальным решением для работы с мультимедиа.
Особенности
- полная кросс-платформенность (Linux, macOS, Windows, Android, iOS);
- поддержка широкого спектра аудио- и видеоформатов, включая редкие и устаревшие;
- мощный набор инструментов для командной строки (ffmpeg, ffprobe, ffplay);
- модульная архитектура с возможностью статической или динамической компоновки;
- высокая производительность и низкие накладные расходы, поддержка аппаратного ускорения;
- открытая лицензия (LGPL/GPL) с возможностью коммерческого использования;
- поддержка потоковой передачи через HTTP, RTMP, RTSP, HLS, DASH и другие протоколы;
- расширяемость через систему фильтров и возможность подключения внешних кодеков.
Основные компоненты
FFmpeg состоит из набора библиотек, каждая из которых отвечает за определённый аспект обработки мультимедиа (подробнее с документацией можно ознакомиться здесь). Архитектура проекта позволяет использовать библиотеки как вместе, так и по отдельности в зависимости от задач.
Обработка аудио и видео
Библиотеки FFmpeg предоставляют низкоуровневый API для декодирования, кодирования, фильтрации и мультиплексирования медиапотоков. Они позволяют программно работать с аудио и видео на уровне кадров и сэмплов, обеспечивая полный контроль над процессом обработки.
Ключевые библиотеки:
libavcodec— библиотека кодирования и декодирования аудио/видео, содержащая более 1000 кодеков;libavformat— библиотека для работы с медиаконтейнерами (мультиплексирование и демультиплексирование);libavfilter— система фильтров для обработки и преобразования медиапотоков с поддержкой графов обработки;libavutil— вспомогательные утилиты и структуры данных, включая математические функции, хеширование, CRC;libswscale— масштабирование и конвертация цветовых пространств изображений с оптимизациями под различные архитектуры CPU;libswresample— передискретизация, микс и конвертация аудиосэмплов с поддержкой различных форматов;libpostproc— библиотека постобработки видео (устаревшая, но сохраняется для совместимости).
Кодеки и форматы
FFmpeg поддерживает сотни кодеков и медиаформатов, обеспечивая совместимость практически с любым существующим медиаконтентом. Поддержка включает как современные форматы (HEVC, AV1, Opus), так и устаревшие. Библиотека постоянно обновляется для поддержки новых стандартов.
Примеры поддерживаемых кодеков:
- Видео: H.264, HEVC, VP9, AV1, MPEG-2, MPEG-4, ProRes, DNxHD, MJPEG, VC-1;
- Аудио: AAC, MP3, Opus, Vorbis, FLAC, PCM, AC-3, DTS, WMA, ALAC;
- Контейнеры: MP4, MKV, AVI, MOV, MPEG-TS, WebM, FLV, OGG, WAV, MP3;
- Субтитры: SRT, ASS, WebVTT, DVD субтитры, Teletext;
- Протоколы: HTTP, HTTPS, RTMP, RTSP, HLS, DASH, FTP, SMB, RTP, UDP.
Фильтры и обработка в реальном времени
Система фильтров FFmpeg позволяет применять сложные цепочки преобразований к аудио и видео потокам, включая масштабирование, обрезку, наложение, цветокоррекцию, шумоподавление и многие другие операции. Фильтры можно комбинировать для создания сложных графиков обработки.
Примеры фильтров:
scale— изменение разрешения видео с различными алгоритмами интерполяции;crop— обрезка кадра по заданным координатам;overlay— наложение одного видео на другое с поддержкой альфа-канала;eq— коррекция цвета, яркости, контрастности и насыщенности;volume— регулировка громкости аудио с поддержкой нормализации;concat— склейка нескольких потоков без перекодирования;drawtext— наложение текста на видео с поддержкой шрифтов и эффектов;fade— эффекты плавного появления и исчезновения;hwuploadиhwdownload— загрузка и выгрузка кадров в аппаратную память для ускоренной обработки.
Утилиты командной строки
FFmpeg включает несколько готовых инструментов для работы с медиафайлами без необходимости написания кода. Эти утилиты предоставляют мощный интерфейс для автоматизации задач обработки мультимедиа и широко используются в скриптах и системах автоматизации.
Основные инструменты:
ffmpeg— универсальный конвертер и процессор медиафайлов, поддерживающий тысячи параметров;ffprobe— анализ медиафайлов и извлечение метаданных, информации о кодеках и потоках;ffplay— простой медиаплеер для воспроизведения и тестирования с поддержкой фильтров в реальном времени.