В данной статье речь пойдёт о стандартном в системах 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.
Михаил АСТАПЧИК
Горячие темы