Библиотека сайта rus-linux.net
Ошибка базы данных: Table 'a111530_forumnew.rlf1_users' doesn't exist
Семь трюков с ffmpeg
Оригинал: "7 Tricks with ffmpeg"
Автор: Riccardo Capecchi
Дата публикации: March 5, 2011
Перевод: Н.Ромоданов
Дата перевода: март 2011 г.
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 -i test.mpg -r 25 -ss 00:00:10 -t 00:00:05 images%05d.png
4. Извлечение аудиодорожки из видеозаписи
С помощью ffmpeg вы также можете микшировать видео и аудио и можете извлекать из видеозаписи аудиодорожку в формате mp3:
ffmpeg -i video.avi -f mp3 audio.mp3
В этом примере мы использовали флаг -f.
С помощью -f принудительно указывается формат записи.
Чтобы получить тот же самый результат, также можно использовать возможность отключения захвата видео; для отключения записи видео используется параметр -vn :
ffmpeg -i video.avi -vn audio.mp3
5. Создание демороликов
С помощью ffmpeg также можно создать простой ролик, использующий скриншоты с вашего рабочего стола.
Для этого мы будем использовать некоторые из флагов, показанные в первом примере:
ffmpeg -f x11grab -r 25 -s wxga -i :0.0 /tmp/outputFile.mpg
Примечание: 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 -f video4linux2 -s 320x240 -i /dev/video0 out.mpg
Чтобы записать аудио и видео, используйте:
ffmpeg -f oss -i /dev/dsp -f video4linux2 -s 320x240 -i /dev/video0 out.mpg
Это всего лишь несколько примеров; с помощью ffmpeg можно выполнять разнообразное редактирование аудио и видеозаписей, и в сети есть много тому примеров.
Ссылки:
Проект сайта с документацией http://www.ffmpeg.org/ffmpeg-doc.html.
Канал Youtube с информацией о ffmpeg http://www.youtube.com/view_play_list?p=E0AACC679489E4ED.
- Amjad Saleem, перевод: Максим Белозеров, "Обработка аудио- и видеофайлов с помощью FFmpeg"
- Rui Lopes, перевод: Николай Глущенко, "Видеоредактирование: что у нас есть и чего нам не хватает"
- Tavis J. Hampton, перевод: Н.Ромоданов, "Как в Linux кодировать видеозаписи в формате WebM для YouTube"