Введение в ffmpeg

В данной статье речь пойдёт о стандартном в системах GNU/Linux конвертере медиафайлов ffmpeg. Наравне с mencoder он является одним из самых мощных и самых простых средств для манипуляций с медиафайлами и, в первую очередь, с видео.

Цифровое видео на компьютере - это давно не только фильмы, скачанные для просмотра с торрентов или купленные на компьютерном рынке. Многие пользователи имеют собственные видео- и фотокамеры, большинство мобильников уже давно поддерживают запись голоса, видео, радиостанций.

Поэтому на компьютере желательно иметь не только средства просмотра медиафайлов, но и средства перекодирования и базового редактирования всего этого хозяйства. Например, скачанный видеоклип хочется иметь возможность смотреть на мобильном телефоне. Или же нужно подготовить видеоролики для размещения в веб.

Для таких целей классическим и весьма мощным средством является консольная программа ffmpeg. Она позволяет преобразовывать мультимедийные файлы из одного формата в другой, изменять размер и другие параметры медиафайлов.

Для этих же целей также используется утилита mencoder, что входит в состав проигрывателя Mplayer. Но синтаксис команд mencoder слишком уж громоздкий, а с ffmpeg управляться значительно проще. Сами же проекты ffmpeg и mplayer основаны на одном наборе кодеков libavcodec.

Ffmpeg состоит из нескольких компонентов. В первую очередь, это сама консольная утилита ffmpeg, через которую нужно задавать параметры перекодирования файлов.

В состав ffmpeg входит универсальная библиотека для кодирования и декодирования аудио- и видеофайлов libavcodec. Эта библиотека способна кодировать и декодировать достаточно большое количество форматов.

Ещё ffmpeg имеет в составе простой проигрыватель ffplay с минимальным набором функций. Этого проигрывателя хватает для технического просмотра, но не более.

Ffmpeg не всегда входит в официальные репозитории GNU/Linux, так как библиотека libavcodec содержит кодеки многих закрытых форматов, что не всегда совместимо с лицензионной чистотой. Но в неофициальных репозиториях этот пакет практически всегда присутствует.


Форматы и кодеки

Прежде чем попрактиковаться, затронем немного тему форматов медиафайлов и кодеков. Форматов видео и аудио существует много - как и кодировок текстовых файлов. Только форматы медиафайлов ещё ко всему бывают коммерческие и патентованные.

Нужно не путать формат медиафайла и его кодек. Например, самым крутым сейчас считается формат видео H.264. Этот формат активно рекламируют в прессе, он претендует на звание основного промышленного стандарта в киноиндустрии. Формат действительно достаточно крутой, хотя и не настолько, как нас в том пытаются убедить. Так вот, кодек, осуществляющий кодирование и декодирование формата видео H.264, называется x264.

Библиотека кодеков libavcodec содержит, кстати, и свою реализацию H.264. Сам ffmpeg может подключать и внешние кодеки, такие, например, как lame, xvid, a52 и другие. Для этого он должен быть скомпилирован с поддержкой этих медиакодеков.


Базовые операции

Познакомимся на примерах с некоторыми основными навыками работы в ffmpeg.

Для того чтобы узнать все форматы и кодеки, которые поддерживает данная сборка ffmpeg, нужно набрать команду:

ffmpeg -formats

Информацию о медиафайле можно получить посредством следующей команды:

ffmpeg -i название файла

Приведём пример самого простого кодирования. В качестве параметров кодирования ffmpeg можно задавать расширения файлов. Следующая команда конвертирует видеофайл формата ogg theora в формат mpg с дефолтными параметрами:

ffmpeg -i video.ogv video.mpg

Но в большинстве случаев следует всё-таки задавать параметры конвертирования. Вот самые основные параметры:

-i - входящий файл

-b - битрейт видео

-ar - частота дискретизации звука в Гц

-ab - битрейт звука в кБ/c

-ac - количество аудиоканалов

-vcodec - кодек для видео

-acodec - кодек для аудио

-f - формат исходящего файла

-s - размер исходящего файла в пикселах

-y - заменять исходящий файл, если он уже есть

-r - установить количество кадров в секунду

-ss - установить время старта кодирования

-t - установить продолжительность кодирования

Например, перекодируем видеофайл в точно такой же формат, только с определённым битрейтом 64 кБ/c:

ffmpeg -i input.avi -b 64k output.avi

Перекодируем только первые десять секунд видеоролика:

ffmpeg -i video.ogv -t 10 video.mpg

Перекодируем видеофайл в популярный в Сети формат flv, изменив разрешение видео на 500x280 пикселов и установив частоту дискретизации 44100 Гц и битрейт аудио 32 кБ/с:

ffmpeg -i video.avi -s 500x280 -ar 44100 -ab 32 -f flv video.flv

Возможности ffmpeg для манипуляции с видеофайлами весьма обширны. Это и склеивание фалов, и разложение видео на отдельные изображения, есть опции работы с субтитрами и многое другое. Весь впечатляющий список параметров конвертирования медиафайлов следует смотреть в документации.


Поддержка мобильного видео

В заключение рассмотрим особенности работы ffmpeg c форматами видео для мобильных телефонов. До недавнего времени основным форматом видео для мобильных устройств являлся формат видео H.263 и аудиоформат amr. Но современные модели поддерживают видео MPEG-4 и аудио в формате aac, для которого тоже нужны специальные кодеки.

Кодек amr является внешним для ffmpeg, и последний не всегда в том или ином дистрибутиве собран с поддержкой amr. Поэтому для успешного кодирования мобильного видео ffmpeg должен быть скомпилирован с поддержкой внешних аудиокодеков libfaac, libfaad, libamrnb, libamrwb.

После этого при помощи ffmpeg можно легко кодировать видео для старых мобильников, например, так:

ffmpeg -i input.avi -s 176x144 -r 15 -vb 120k -acodec libamr_nb -ar 8000 -ac 1 -ab 12.2k output.3gp

А для более новых устройств можно перейти на mpeg4 и aac:

ffmpeg -i input.avi -s 176x128 -vcodec mpeg4 -r 15 -acodec libfaac -ac 1 -ar 22000 -ab 56k output.3gp

Таким образом, ffmpeg даже более мощный конвертор, чем 3gp Video Converter для Windows.

Михаил АСТАПЧИК

Версия для печатиВерсия для печати

Номер: 

18 за 2009 год

Рубрика: 

Software
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!