RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
FFmpeg, имеющий большое количество параметров и возможностей, можно считать швейцарским армейским ножом среди аудио- и видео-приложений. У вас, наверное, он уже установлен на компьютере в виде зависимости для программы, предназначенной для просмотра видео или прослушивания музыки. В настоящей статье мы рассмотрим, как использовать этот пакет из командной строки без обращения к графическим приложениям.
Но, сначала, представим ffmpeg:
FFmpeg является проектом свободного программного обеспечения с открытым исходным кодом, в рамках которого создаются библиотеки и программы для обработки мультимедийных данных. Наиболее известными частями FFmpeg являются: libavcodec — библиотека аудио / видео кодеков, используется несколькими другими проектами, libavformat — библиотека для работы с аудио / видео контейнерами и программа ffmpeg, работающая из командной строки и предназначенная для перекодирования мультимедийных файлов. FFmpeg опубликован под лицензиями GNU Lesser General Public License 2.1 + или GNU General Public License 2 + (в зависимости от того, какие используются возможности).
Компоненты
Проект состоит из нескольких компонент:
ffmpeg - инструментальное средство командной строки для преобразования одного формата видео файлов в другой. С его помощью также можно с ТВ тюнера в режиме реального времени захватывать и кодировать видеоизображение;
ffserver является HTTP и RTSP мультимедийным потоковым сервером, предназначенным для прямых трансляций. С его помощью можно во время прямого эфира выполнять временной сдвиг видеоизображения;
ffplay является простым медиаплеером, базирующимся на библиотеках SDL и FFmpeg;
ffprobe — инструментальное средство командной строки для отображения (анализа — прим.пер.) мультимедийной информации;
libavcodec является библиотекой, в которой находятся все аудио и видео кодеки пакета FFmpeg. Для того, чтобы получить максимальную производительность и возможность их повторного использования, большинство кодеков были разработаны с нуля;
libavformat - это библиотека, в которой содержатся средства для работы с форматами аудио и видео контейнеров;
libavutil является вспомогательной библиотекой, в которой находятся процедуры, общие для различных частей FFmpeg. В этой библиотеке есть adler32, crc, md5, sha1 декомпрессор lzo, кодер / декодер Base64, кодер / декодер des, кодер / декодер rc4 и кодер / декодер aes;
libpostproc - это библиотека, в которой находятся процедуры постобработки видеозаписей;
libswscale - это библиотека, в которой находятся процедуры масштабирования и цветового попиксельного преобразования видеоизображений;
libavfilter является фильтром, заменяющим vhook, который позволяет выполнять модификацию или анализ видео / аудио записи между декодированием и кодированием.
Сначала проверьте поддерживаемые форматы
FFmpeg поддерживает множество популярных форматов, так что можно не беспокоиться о большинстве из них. К числу форматов, поддерживаемых Ffmpeg, относятся MPEG, MPEG-4 (DivX), ASF, AVI, Real Audio / Video и Quicktime. Чтобы посмотреть список всех кодеков / форматов, поддерживаемых FFmpeg, запустите следующую команду:
ffmpeg -formats
В результате будет выдан длинный список форматов, слева от каждого формата будет указано E (означает, что можно кодировать в этот формат) и / или D (означает, что можно декодировать из этого формата).
1. Преобразование аудиозаписей
Скажем, у вас есть аудио файл с именем my_audio.wav и вы хотите преобразовать его в mp3.
ffmpeg -i my_audio.wav my_audio.mp3
Параметр -i указывает входной файл.
Невероятно просто, не так ли? Изменить расширение выходного файла на расширение любого поддерживаемого формата и выполнить преобразование в другой формат!
2. Преобразование видеозаписей
Основной принцип использования похож на пример, показанный для аудиопреобразования, так что вы можете просто написать:
ffmpeg -i my_video.mpeg -s 500×500 my_video.flv
В параметре -s ‘size’ ('размер') устанавливается разрешение видео (ширина x высота).
В результате вы сможете преобразовать файл my_video.mpeg в файл my_video.flv и разрешение будет изменено на 500 × 500.
3. Извлечение изображений из видеозаписи
Иногда полезно из видеозаписи извлечь несколько изображений и это можно легко сделать с помощью ffmpeg:
ffmpeg -i test.mpg image%d.jpg
Для каждой секунды видео можно создать 25 изображений, но с помощью параметра -r можно указать создавать большее или меньшее количество изображений.
Параметр -r устанавливает количество кадров, генерируемых в буфере кадров (по умолчанию — 25 кадров).
ffmpeg -i test.mpg -r 1 image%d.jpg
С помощью этой команды вы каждую секунду будет получать одно изображение.
Задание продолжительности записи
Вы также можете указать момент в записи, с которого будет начата обработка и длительность обработки с помощью следующих флагов:
с помощью -ss указывается начальная позиция в секундах; также поддерживается формат "hh:mm:ss[.xxx]".
с помощью -t ограничивается продолжительность преобразования / захвата, указываемая в секундах; также поддерживается формат "hh:mm:ss[.xxx]".
Следующая команда будет создавать 25 изображений каждую секунду, начиная с десятой секунды и в течение 5 секунд.
С помощью ffmpeg вы также можете микшировать видео и аудио и можете извлекать из видеозаписи аудиодорожку в формате mp3:
ffmpeg -i video.avi -f mp3 audio.mp3
В этом примере мы использовали флаг -f.
С помощью -f принудительно указывается формат записи.
Чтобы получить тот же самый результат, также можно использовать возможность отключения захвата видео; для отключения записи видео используется параметр -vn :
ffmpeg -i video.avi -vn audio.mp3
5. Создание демороликов
С помощью ffmpeg также можно создать простой ролик, использующий скриншоты с вашего рабочего стола.
Для этого мы будем использовать некоторые из флагов, показанные в первом примере:
Примечание: 0.0 является номером display.screen (дисплея.экрана) для вашего сервера X11 точно также, как это указано в переменной окружения DISPLAY.
Вы сможете сохранять по 25 кадров в секунду c вашего экрана wxga (или с помощью параметра -s вы можете указать разрешение, например, 1024 × 768) и поместить видео mpg в /tmp.
6. Преобразование изображений в видеозапись
Скажем, у вас много изображений с именами "img001.jpg"', "img002.jpg" и далее в такой же самой последовательности. Вы можете преобразовать их в видеозапись с помощью следующей команды:
ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg
7. Получение видеозаписи с вебкамеры
Чтобы сделать запись видео, запустите ffmpeg со следующими параметрами:
Это всего лишь несколько примеров; с помощью ffmpeg можно выполнять разнообразное редактирование аудио и видеозаписей, и в сети есть много тому примеров.