Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта 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.


Другие статьи о ffmpeg на нашем сайте:



Комментарии