
FFmpeg
Открытый мультимедийный фреймворк для обработки
Кодируйте, декодируйте, транскодируйте, передавайте потоком и конвертируйте аудио и видео файлы через API FFmpeg.
Что такое FFmpeg?
FFmpeg — это ведущий открытый мультимедийный фреймворк, который позволяет разработчикам записывать, конвертировать и транслировать аудио- и видеоконтент. Он включает в себя обширный набор библиотек — таких как libavcodec, libavformat, libavutil, libavfilter, libswscale и libswresample — предоставляя мощные инструменты для работы с разнообразными мультимедийными задачами. Поддерживая сотни кодеков и форматов, FFmpeg обеспечивает работу множества приложений, от программ для видеомонтажа до серверов потоковой передачи и медиаплееров.
FFmpeg широко используется в различных отраслях благодаря своей гибкости, производительности и активной поддержке сообщества. Он справляется со всем — от простой конвертации форматов до сложной видеофильтрации и потоковой передачи в реальном времени. Независимо от того, создаёте ли вы медиасервер, настольный плеер или облачный конвейер транскодирования, FFmpeg обеспечивает надёжные и высококачественные возможности обработки. Его инструменты командной строки, такие как ffmpeg, ffplay и ffprobe, упрощают интеграцию в скрипты и автоматизированные рабочие процессы, а C‑API и привязки (например, для Python) позволяют глубоко программно управлять процессом.
Начало работы с FFmpeg
Чтобы начать использовать FFmpeg, установите его через менеджер пакетов вашей системы (например, `apt install ffmpeg` в Ubuntu, `brew install ffmpeg` в macOS) или загрузите готовые бинарные файлы с официального сайта. Для программного использования установите Python‑обёртку через `pip install ffmpeg-python` или используйте официальные заголовки библиотеки C. FFmpeg также доступен на GitHub по адресу [FFmpeg GitHub](https://github.com/FFmpeg/FFmpeg), где вы можете собрать его из исходного кода с пользовательскими настройками. Его небольшой размер и кроссплатформенная поддержка делают его идеальным для настольных, серверных и встроенных развертываний.
Установить FFmpeg через менеджеры пакетов
# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg
# macOS (Homebrew)
brew install ffmpeg
# Python wrapper
pip install ffmpeg-python
Конвертировать медиа между форматами
FFmpeg превосходно справляется с конвертацией медиафайлов между сотнями форматов и кодеков. Вы можете транскодировать видео из MP4 в WebM, извлекать аудио из видеофайлов или менять контейнеры без повторного кодирования (stream copy). Его интеллектуальные настройки по умолчанию обеспечивают высокое качество, а расширенные опции позволяют точно настраивать битрейт, разрешение, частоту кадров и параметры кодека. Независимо от того, готовите ли вы контент для веб‑стриминга, архивирования или воспроизведения на конкретных устройствах, FFmpeg предоставляет точный контроль над качеством вывода и совместимостью. Интерфейс командной строки поддерживает сложные цепочки фильтров для изменения размера, обрезки и применения эффектов во время конвертации.
Как конвертировать MP4 в WebM с помощью FFmpeg?
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus output.webm
Трансляция в реальном времени и прямое вещание
FFmpeg поддерживает захват, транскодирование и потоковую передачу живого медиа по протоколам, таким как RTMP, HLS и SRT. Он может захватывать видео с веб‑камер, аудио с микрофонов или из сетевых источников и отправлять потоки на платформы, такие как YouTube, Twitch или пользовательские RTMP‑серверы. Благодаря опциям низкой задержки и адаптивному битрейту, FFmpeg обеспечивает конвейеры живой трансляции для мероприятий, игр и видеонаблюдения. Его способность обрабатывать несколько входов, накладывать графику и применять фильтры в реальном времени делает его идеальным для профессиональных потоковых решений. Вы также можете сегментировать вывод для DASH/HLS для адаптивного воспроизведения на мобильных и веб‑клиентах.
Как транслировать видеофайл в YouTube Live?
ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -g 50 -c:a aac -b:a 160k -f flv "rtmp://a.rtmp.youtube.com/live2/your_stream_key"
Видеофильтрация и постобработка
Фреймворк libavfilter в FFmpeg обеспечивает мощную фильтрацию видео в реальном времени с помощью ориентированного ациклического графа фильтров. Вы можете обрезать, масштабировать, вращать, деинтерлейсировать, уменьшать шум, накладывать водяные знаки, добавлять текст, регулировать цвета и применять сложные эффекты, такие как замедление или таймлапс — всё без повторного кодирования всего потока. Фильтры можно соединять в цепочки для многоэтапной обработки, а аппаратное ускорение (например, NVENC, VAAPI, VideoToolbox) обеспечивает производительность на современных GPU. Это делает FFmpeg незаменимым для видеоредакторов, создателей контента и разработчиков, строящих конвейеры обработки медиа, требующие визуальных улучшений или нормализации форматов.
Как обрезать, масштабировать и добавить водяной знак к видео?
ffmpeg -i input.mp4 -i watermark.png -filter_complex "[0:v]crop=1280:720:0:0[scaled];[scaled][1:v]overlay=10:10" -c:a copy output.mp4
Извлечение и изменение метаданных и субтитров
FFmpeg предоставляет полный контроль над метаданными (тегами) и субтитрами, встроенными в медиафайлы. Вы можете извлекать, редактировать или удалять метаданные (например, название, исполнитель, альбом, данные GPS) с помощью простых команд, а также конвертировать субтитры между форматами, такими как SRT, ASS и VTT. Он поддерживает вшивание субтитров в видео или их внедрение как отдельные дорожки. Для рабочих процессов по доступности и локализации FFmpeg позволяет пакетную обработку файлов субтитров, корректировку таймингов и управление языковыми дорожками. Это делает его идеальным для локализации субтитров, управления медиаактивами и соответствия стандартам вещания, требующим встроенных метаданных.
Как извлечь субтитры из видеофайла?
ffmpeg -i input.mkv -map 0:s:0 -c:s srt output.srt
