FFmpeg и FFserver для Windows — краткая инструкция. Почему команд так много

Есть определенный класс приложений, которые при приличном функционале не имеют графического интерфейса и поэтому с ними приходится работать из командной строки, что само по себе не так-то просто. Именно поэтому и в угоду тем пользователям, которые с командной строкой далеко не на «ты», сторонними разработчиками часто пишутся графические оболочки для подобных приложений. Сегодня мы хотим поговорить о iFFmpeg — оболочке для консольного приложения FFmpeg, известного внушительным функционалом в плане конвертирования медиафайлов между собой.

Так как iFFmpeg — это всего лишь оболочка, а не «полноценная» программа, следует иметь в виду, что в комплект поставки не входит сама утилита FFmpeg и пользователю придется дополнительно ее загружать. Если же программа уже есть в системе, то будет достаточно просто указать в настройках iFFmpeg путь до нее.

Интерфейс iFFmpeg имеет локализацию на 8 языках, в том числе и на русском. Перевод выполнен вполне грамотно и придраться практически не к чему. Окно программы имеет фиксированные размеры и состоит из одного большого поля, на которую предполагается перетаскивать исходные файлы для конвертирования, и небольшой панели инструментов, все иконки которой выполнены в одном цветовом стиле. Часть иконок достаточно информативна, и о их предназначении можно догадаться сразу, едва ни них упадет взгляд, другие же выглядят настолько несуразно, что приходится ждать подсказок об их функционале (в частности это касается функций склейки медиафайлов, выбора выходного формата и вывода информации об используемой версии FFmpeg).

Исходные файлы могут добавлены не только перетаскиванием, но и «классическим» способом — через окошко выбора файла Finder. Хотя это и не относится непосредственно к функционалу iFFmpeg, стоит отметить, что программа работает со многими аудио- и медиафайлами, включая такие, как mp4, m4v, avi, mov, ts, m2ts, dv, webm, wmv, flv, vob, ogg, mkv, 3gp, rm, cavs, mp3, m4a, wav, flac, ac3, wma . Зато iFFmpeg может похвастаться внушительным списком имеющихся пресетов (54 варианта) с уже готовыми настройками для конвертирования медиафайлов в тот или иной формат, с учетом спецификаций устройства, для которого готовится контент.

Настройки любого пресета могут быть изменены, а сам он перезаписан в виде пользовательского варианта, коих может быть до 10 штук. Сами настройки подразделяются на базовые, состав которых знаком каждому, кто пользуется различными медиаконвертерами, и расширенные, в многообразии которых может растеряться и бывалый пользователь.

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

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

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

После конвертирования, независимо от того, сколько файлов было в работе, объединялись они или нет, iFFmpeg может автоматически добавить получившиеся файлы в библиотеку iTunes.

Для того, чтобы быть в курсе того, как продвигается операция конвертирования, пользователю совсем необязательно держать открытым окно программы — о завершении конвертирования приложение сообщит звуковым сигналом, а индикатор прогресса операции пользователь сможет увидеть прямо на иконке iFFmpeg в Доке.

Среди прочих достоинств приложения можно отметить оптимизацию для работы с многоядерными процессорами, причем пользователь самостоятельно решает, сколько ядер центрального процессора iFFmpeg может использовать для своей работы.

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

Создатели iFFmpeg создавали оболочку для FFmpeg отнюдь не из альтруистических побуждений, поэтому покупка приложения обойдется пользователю в 10 евро, что составляет примерно 13$. С одной стороны, это достаточно много за продукт, являющийся всего лишь графическим интерфейсом для консольного приложения, а с другой — iFFmpeg существенно облегчает работу с многочисленными настройками кодирования, избавляя пользователя от необходимости их запоминания и прописывания длинных команд в консоли.

Программа доступна для покупки только на сайте разработчика, там же можно загрузить бесплатную демо-версию, рассчитанную на 8 операций конвертирования.

FFmpeg - набор библиотек и утилит командной строки, позволяющих производить практически все основные операции редактирования и преобразования файлов видео и звуковых файлов. Ниже шпаргалка из основных команд для работы с FFmpeg, которые могут пригодиться при редактировании видео. Особенно обратим внимание на недеструктивное без потери качества редактирование файлов видео и звуковых файлов. Лицензия: GNU LGPL и GNU GPL. Сайт: http://ffmpeg.org

FFmpeg для начинающих

Съёмка видеороликов в цифровых форматах с помощью смартфонов, фотоаппаратов и прочих цифровых приспособлений стала распространённым явлением. Само собой возникает необходимость как-то редактировать снятые видеоролики, - например, для размещения на «Ютубе». То есть видеоролики часто нужно обрезать, заменять или удалять звуковую дорожку, изменить размер формат видео, а потом всё склеивать в единый файл видео.

Для этого массового занятия создаётся немало программ. Взять хотя бы поставлявшийся ранее в системы Windows видеоредактор MoveMaker. Мы же рассмотрим набор утилит и библиотек для редактирования и преобразования медиафайлов под названием FFmpeg.

Чем хорош FFmpeg:

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

    Как и характерно для общественных программ, FFmpeg распространяется для всех популярных операционных системах - GNU/Linux, Windows, MacOS.

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

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

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

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

Так же следует отметить, что FFmpeg имеет альтернативу - форк Libav . Синтаксис параметров команд одинаков в обоих случаях.

О форматах и кодеках

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

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

Распространёнными форматами контейнеров для видео являются 3gp, MP4, MOV, MPEG, AVI, MKV ("Матрёшка"), WEBM и др. FFmpeg работает с большим количеством таких форматов контейнеров.

Формат звуковых файлов - MP3, OGG Vorbis, WAV и др. - обычно содержит аудиотрек и текстовые метаданные о жанре, авторе, исполнителе и т.п.

Непосредственно видеоданные в контейнерах «упакованы» в виде различных форматов, которые определяются кодеками - программами для кодирования и декодирования видео. Наиболее популярными кодеками являются кодеки H.264 и H.265 для контейнера MP4, V8 и V9 для контейнера WEBM.

FFmpeg работает с большим количеством кодеков, включая экзотические. Узнать список возможных кодеков в FFmpeg можно запустив команду ffmpeg с параметром -codecs .

Ffmpeg -codecs

Основными параметрами видеоданных являются:

  • разрешение изображения видео - например, 320х240, p720 и т.д;
  • формат и кодек, с помощью которого создавался видеопоток;
  • битрейт - количество данных в килобайтах или мегабайтах, которые нужно для проигрывания видео за одну секунду - например, 240 Kb/s, 1Mb/s;
  • фремрейт - количество кадров в секунду (frame per second) - например 24 fps, 30 fps.

Для аудиоданных важными параметрами являются:

  • формат и кодек, с помощью которого создавался звуковой поток;
  • частота дискретизации - например, 44 KHz;
  • битрейт - количество данных в килобайтах, которые нужно для проигрывания аудиофайла за одну секунду - например, 96 Kb/s, 128Mb/s;
  • режим моно, стерео и т.д.

Но параметров на самом деле больше. Узнать параметры контейнера видео и входящих в него данных видео и аудио легко сделать с помощью команды fmpeg с параметром -i, которому передаётся путь и имя мультимедийного файла

Ffmpeg -i video.mp4

VidCutter: графический интерфейс для FFmpeg

Но начать использование FFmpeg можно не только из командной строки. К FFmpeg существуют и графические оболочки – программы, в которых основные команды и операции можно производить с помощью графического интерфейса и манипулятора «мышь».

Примером такой очень простой графической оболочки является очень простенькая программа VidCutter. Она позволяет в графическом интерфейсе задействовать производить обрезку видеофайлов без перекодирования, то есть без потери качества.

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

Установка комплекта утилит FFmpeg

Linux. Утилиты FFmpeg обычно входят во все репозитории дистрибутивов Linux и легко устанавливаются штатными менеджерами пакетов этих дистрибутивов. Также можно скачать с официального сайта готовые бинарные сборки ffmpeg и запускать их прямо из домашней папки. Или же собрать из исходников.

Для Windows и Mac OS можно скачать с официального сайта архив с готовые бинарными сборками FFmpeg, распаковать их в любой каталог. Нужные утилиты обычно находятся в папке bin. Запускать их нужно из командной строки, задавая путь к этим утилитам, непосредственно в командной строке или через добавление пути к утилитам через глобальные системные переменные.

Основных утилит в наборе FFmpeg две:

  • ffmpeg - утилита для всех операций с файлами мультимедиа;
  • ffplay - очень простой проигрыватель для файлов мультимедиа, вместо которого можно использовать любой другой проигрыватель.

Редактируем c FFmpeg

Допустим, у нас есть несколько дорогих нам файлов видео, сделанные когда-то каким-нибудь старым «Кэноном», или «Никоном», или камкордером. Нам хотелось обрезать лишнее в этих видео, убрать из них фоновый звук и наложить какую-нибудь музычку. Потом всё склеить в единый файл без перекодирования и потери качества.

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

Так же нужно держать правильный порядок и группировку параметров командной строки утилиты ffmpeg:

  • Не забываем, что входной файл(ы) для манипуляций и редактирования задаётся сразу после команды ffmpeg после опции -i: ffmpeg -i video.mp4 ;
  • после параметров входного или входных файлов идут глобальные параметры - например, опция выбора потоков, опция нового разрешения видеоролика;
  • потом идёт опция видекодека, за которым перечисляются его параметры в том числе и видеофильтры;
  • потом идёт опция аудиокодека и перечисляются его параметры в том числе и фильтры;
  • завершает команду имя файла на выходе.

Пример строки команды

FFmpeg: перекодирование и деструктивное редактирование

Для многих операций редактирования файлов видео,- например для склейки видео, - эти файлы нужно привести к единому формату.

Основное предназначение FFmpeg - это перекодирование файлов мультимедиа из одного формата в другой. И перекодирование в FFmpeg может делаться очень легко.

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

Fmpeg -i video.mp4 video.webm

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

Опции ffmpeg для параметров видео:

  • -vcodec или кратко c:v - параметры видеокодека, или "copy", или пустой параметр (значением по умолчанию)
  • -f - формат контейнера
  • -b - битрейт в килобитах или мегабитах в секунду задаётся буквой K или M
  • -aspect - соотношение сторон картинки (4:3, 16:9, 1.3333, 1.7777)
  • -r - фреймрейт

Опции ffmpeg для параметров звука:

  • -acodec или кратко c:a - параметры кодека звука, или "copy", или пустой параметр (значением по умолчанию)
  • -f - формат аудио
  • -ab - битрейт аудио
  • -ar - частота дискредитации
  • -ac - количество каналов

Например, перекодируем входной файл формата MP4 video.mp4 в файл контейнера WEBM video.webm с некоторыми явно заданными параметрами

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

FFmpeg: изменение разрешения видео

Перекодирование будет произведено, естественно, и если просто задать новое разрешение для видео с помощью глобальной опции -s

Ffmpeg -i video.mp4 -s 320х240 video.webm

FFmpeg: перекодирование и недеструктивное редактирование видео без потери качества

Теперь о преобразование видео из одного формата в другой без потери качества. Для некоторых операций возможно редактирование без перекодирования звука и видео, без потери качества, когда потоки внутри файла контейнера остаются нетронутыми и просто копируются как есть из одного файла в другой. Для этого для опций -vcodec и -acodec используется параметр copy . Например «перельём» видеопоток и аудиопоток из файла формата MP4 video.mp4 в файл контейнера TS video.ts:

В результате новый файл контейнер video.ts будет содержать нетронутое перекодированием видео и звук из файла контейнера video.ts.

FFmpeg: недеструктивная нарезка и обрезка файлов видео

Обрезка видеофайла производится при помощи опций -ss и -t . Опция -ss задаёт начало обрезки, а опция -t задаёт продолжительность дальнейшего фрагмента. Время задаётся в формате "часы:минуты:секунды". Для недеструктивного редактирования содержимого видеофайла используйте параметр copy .

Обрезка без перекодирования происходит очень быстро и не отнимает много компьютерной мощности.

FFmpeg: склейка и соединение файлов видео

Что бы склеить, соединть видеофайлы с помощью ffmpeg, они должны быть одного формата, в том числе одинаковыми и по параметрам потоков видео и звука этого формата. Если это не так, то нужно произвести предварительное перекодирование файлов видео к единому формату.

Для многих форматов соединение файлов в ffmpeg происходит при помощи оператора concat , которому после двоеточия передаётся последовательность входных файлов, разделённых символом вертикальной черты. Пример склейки одинаковых и однотипных по формату файлов file1.avi и file2.avi без перекодирования:

Ffmpeg -i "concat:file1.avi|file2.avi" -vcodec copy -acodec copy output.avi

Следует учитывать при соединении фрагментов видео в единый файл, что видеопотоки и аудиопотоки фрагментов складываются по отдельности, а потом объединяются в один контейнер. Поэтому если в одном из фрагментов звуковая дорожка короче по времени чем видеопоток, то звуковые дорожки остальных фрагментов сдвинутся к концу этой короткой звуковой дорожки и произойдёт рассинхронизация звука. Это надо учитывать.

FFmpeg: склейка и соединение файлов формата видео MP4

Видеофайлы в контейнере MP4 нельзя соединить с помощью оператора concat . Но можно предварительно преобразовать эти файлы в контейнер, например, MPEG-TS без перекодирования видео и звука:

Ffmpeg -i vid1.mp4 -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts vid1.ts ffmpeg -i vid2.mp4 -acodec copy -vcodec copy -vbsf h264_mp4toannexb -f mpegts vid2.ts

А потом эти файлы уже можно соединить при помощи оператора concat в итоговый файл mp4:

Ffmpeg -i "concat:vid1.ts|vid2.ts" -vcodec copy -acodec copy out.mp4

FFmpeg: удаление звуковой дорожки

Часто из видеофайла нужно удалить звуковой поток, чтобы потом заменить на какой-нибудь другой. Делается это с помощью опции -an (audio not).

Ffmpeg -i zvuk.mpg -vcodec copy -an bezzvuka.mpg

FFmpeg: добавление или замена звуковой дорожки

Добавить звуковой поток в файл видео нужно с помощью дополнительной опции -i которой в качестве параметра передаётся путь звуковому файлу.

FFmpeg: опция «-map» для обращения к потокам в видеофайлах

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

Потоки обозначаются двойным номером, разделённых двоеточием - «0:0», «0:1», «1:0», «2:1» и т.д. Первая цифра до двоеточия - это номер по порядку каждого входного файла, задаваемого опцией -i , начиная с нуля. А номер после двоеточия обозначает номер потока внутри файла.

Рассмотрим опцию -map на конкретных примерах

Сохранить отдельную звуковую дорожку из видеофайла (демультиплексация)

Номера потоков в каждом видеофайле можно определить через вывод команды ffmpeg -i , который будет иметь приблизительно такой формат:

Ffmpeg -i video.mkv ... Stream #0:0(und): Video ... Stream #0:1(ger): Audio ... Stream #0:2(eng): Audio ... Stream #0:3(rus): Subtitle …

То есть 0 перед двоеточием означает, что это первый по порядку входной файл для ffmpeg - в примере выше это файл video.mkv. А номера после двоеточия означают номера внутренних потока этого файла. Для обработки конкретного потока опции -map нужно передать конкретный номер этого потока. Пример команды с опцией -map , которая демультиплексирует, то есть сохраняет одну из звуковых дорожек контейнера в отдельный файл:

Ffmpeg -i video.mkv -map 0:2 sound.wav

FFmpeg: добавить несколько звуковых дорожек в видеофайл (мультиплексация)

Теперь рассмотрим пример добавления нескольких звуковых дорожек в видеофайл с помощью FFmpeg. Для этого опять используем опцию -map .

Допустим у нас есть чистый видеофайл video.avi и мы подобрали к нему несколько звуковых дорожек zvuk1.mp3 и zvuk2.mp3 - например разная музыка или комментарии на разных языках. Теперь используем опцию "-map" для мультиплексации, то есть соединения этих файлов в единый файл контейнер:

Ffmpeg -i video.avi -i zvuk1.mp3 -i zvuk2.mp3 -map 0:0 -map 1:0 -map 2:0 out.avi

Как видите, для входных файлов после опций -i в опциях -map используются номера перед двоеточием. И мы получили выходной видеофайл с двумя звуковыми дорожками внутри, между которыми можно переключаться во многих плеерах - например, в плеере mpv переключение между звуковыми дорожками делается через "#" (Shift+2).

Естественно можно было добавить параметры кодирования для нового видефайла. Например опции -c:v copy -c:a copy позволили бы в примере выше сложить новый файл out.avi чистым копированием без перекодирования входных файлов video.avi, zvuk1.mp3 и zvuk2.mp3.

Таким образом с помощью FFmpeg можно добавить в видеофайл субтитры. Главное не запутаться в номерах входных потоков и потоков внутри контейнера.

Всегда под рукой

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

Статья в дальнейшем может быть дополнена новыми примерами использования FFmpeg. Но у всех всегда под рукой есть руководство и справочник на английском языке.

Ffmpeg -h full > ffmpeg_help.txt

Если вы раньше использовали Windows или даже сейчас используете двойную загрузку Windows с Linux, то наверное, вы пользовались программой для Windows - FormatFactory, для преобразования и конвертирования ваших аудио и видео файлов, а также для копирования DVD дисков и создания ISO образов.

FormatFactory - это отличный инструмент, но если вы используете больше Linux чем Windows, то здесь есть хорошие альтернативы Format Factory linux, делающие ту же работу нехудшим, а иногда даже лучшим образом.

В этой статье мы рассмотрим 4 альтернативы Format Factory для Linux.

Иногда случается, что вы скачали видео или фильм для просмотра его на мобильном телефоне, но на самом устройстве, к сожалению, оно не работает из-за не поддерживаемого формата. Это может показаться сложной ситуацией, когда вы используете Linux, вы подумаете, что нужно найти знакомого с компьютером под Windows и конвертировать видео там, но все намного проще. Все операции можно выполнить и под Linux. Для этого достаточно использовать один из перечисленных ниже инструментов.

Mencoder - это программа с открытым исходным кодом, для конвертирования видео. Поддерживается только работа в командной строке. Mencoder - это часть MPlayer, а это значит, что программа может обрабатывать все форматы поддерживаемые MPlayer. Возможно, это не самый лучший аналог format factory для linux, но дальше мы рассмотрим и другие программы, в том числе с графическим интерфейсом.

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

Mencoder - это бесплатный инструмент для перекодирования видео, а также применения различных эффектов. Для программы есть графический бекэнд, который называется DivX Converter.

Установка Mencoder

Для установки программы в Ubuntu выполните:

sudo apt-get install mencoder lame

Программа будет нормально работать, только если в системе есть библиотека libavcodec5x. Это часть libav или ffmpeg и она содержит большое количество кодеков для поддержки различных форматов:

sudo apt-get install libavcodec54

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

DivX Converter можно скачать из официального сайта . Программа очень легко устанавливается с помощью установщика приложений или dpkg в Ubuntu.

Преобразовать файл с помощью DivX Converter очень просто. Сначала добавьте нужный файл, потом выберите формат, в который его нужно преобразовать. Здесь есть некоторые предопределенные форматы, так что вы можете посмотреть полный список и выбрать то что нужно. Далее, вам нужно выбрать каталог, куда сохранить файл. На вкладах видео и аудио можно указать дополнительные опции. Когда завершите, нажмите кнопку Конвертировать:

После того как конвертирование видео в Linux завершится, вы найдете готовый файл в указанной папке.

2. Arista

Arista - это самая простая программа в нашем списке. Она представляет собой мультимедийный конвертер с возможностью преобразования и сжатия файлов. Это простая и в то же время очень мощная программа. Если вы хотите начать именно с простых инструментов, Arista подойдет для вас идеально.

Официально Arista основана на Gnome. Она поддерживает длинный список форматов для различных устройств: IPod, IPhone, PSP, Playstation 3, Nokia, DVD и многие другие. Она также поддерживает mp4, WebM, matroska, avi, ogg, flv, кодеки для видео: h.264, vp8, mpeg4/divX, mpeg2, theora, Flash Video, Аудио: aac, vorbis, mp3, flac, speex,wav.

Поддерживаются следующие функции:

  • Готовые настройки для IPod, PC, DVD, PSP, Playstation 3 и т д
  • Живой просмотр для оценки качества видео
  • Автоматическое обнаружение доступных DVD носителей и цифровых устройств
  • Rip из v4l устройств
  • Rip из DVD устройств, с помощью libdvdcss
  • Простая утилита командной строки для сценариев
  • Автоматическая установка обновлений

Установка Arista

Программа доступна в стандартных репозиториях многих дистрибутивов. Но если это не так то ее можно установить из PPA webupd8:

sudo add-apt-repository ppa:webupd8team/arista
$ sudo apt-get update
$ sudo apt-get install arista

Как пользоваться Arista

Когда программа будет установлена, запустите ее из меню приложений. Вы увидите во такое окно:

Нажмите + чтобы добавить несколько видео или аудиофайлов которые вы хотите конвертировать:

Здесь есть три варианта импорта файлов: непосредственно с DVD, импорт папки целиком или выбор одного или нескольких файлов. Затем выберите каталог куда нужно сохранить обработанные файлы.

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

После того как настройка завершена, нажмите кнопку создать. Подождите пока идет работа над файлом, а затем можете его воспроизвести из папки назначения.

3. Handbrake

Handbrake - это лучший свободный, многопоточный инструмент с открытым исходным кодом и доступных на данный момент, если рассматривать другие аналоги format factory для linux, то этот самый лучший. Он был разработан в 2003 году Эриком Петитом. За это время программа сильно изменилась, теперь она поддерживает все основные платформы, включая Windows и Mac. Также официально поддерживается Ubuntu Linux, но также есть версии для других дистрибутивов. Handbrake использует такие сторонние библиотеки: x264, libav и faac.

Для Linux доступен как интерфейс командной строки, так и графический интерфейс.

Установка Handbrake

Установить Handbrake в Ubuntu очень просто, для этого нужно подключить PPA:

sudo add-apt-repository ppa:stebbins/handbrake-releases
$ sudo apt-get update
$ sudo apt-get install handbrake

Графический интерфейс на основе GTK устанавливается командой:

sudo apt-get install handbrake-gtk

А клиент командной строки:

sudo apt-get install handbrake-cli

Как использовать Handbrake

Когда программа будет установлена, запустите ее из главного меню. Графический интерфейс Handbrake выглядит вот так:

Сейчас не все опции программы доступны. Сначала нужно импортировать файлы, которые вы хотите сжать или конвертировать. Нажмите Source, чтобы выбрать файлы.

Как только вы выберите файлы, опции форматирования станут доступными. Вы можете вручную задать формат файла или воспользоваться готовыми профилями для различных устройств. Например, вы можете выбрать устройство в разделе Devices:

Если вы собираетесь загружать видео в Youtube, отметьте галочку Web-optimized. Этот выбор удаляет меню устройств, зато теперь вы можете вручную настроить параметры видео:

Вы можете изменять любые опции, какие вам нужно. Как видите, по умолчанию видеодекодер установлен H.264, но вы можете выбирать другие параметры. Когда завершите настройку, нажмите кнопку Старт:

4. FFmpeg

FFmpeg это комплексное кроссплатформенное решение для записи, конвертирования, сжатия аудио/видео, потокового аудио и видео файлов. Отличный аналог format factory для linux или даже windows. Проект FFmpeg основан в 2000 году Фабрисом Белларом и поддерживался до 2003 Майком Нидермаером с 2004. Программа содержит в себе кодеки большинства известных форматов. FFmpeg может перекодировать, декодировать и изменять буквально все что было создано до сих пор. Проект разработан для Linux но может использоваться в других операционных системах, например, Windows.

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

Установка FFmpeg

Для установки самой свежей версии программы в Ubuntu лучше использовать PPA:

sudo apt-add-repository ppa:mc3man/trusty-media
$ sudo apt-get update
$ sudo apt-get install ffmpeg

WinFF это графический интерфейс для FFmpeg. Программа может работать со всеми видами файлов, с которыми работает ffmpeg. Можно обрабатывать несколько файлов и несколько форматов одновременно. Например, преобразовать MPEG, FLV и MOV, в AVI. Программа поддерживает не только Linux, но и Windows, а тажке переведена на множество языков, в том числе и русский.

WinFF доступна в официальных репозиториях Ubuntu, но самую свежую версию можно установить из PPA:

Sudo add-apt-repository ppa:paul-climbing/ppa

$ sudo apt-get update
$ sudo apt-get install winff

Когда установка будет завершена, запустите WinFF из главного меню. Перед вами откроется очень простой интерфейс с небольшим количеством функций:

В данной статье попробуем «на пальцах» объяснить, что такое FFmpeg для начинающих пользователей Linux (да и Windows тоже). FFmpeg популярный набор программ и библиотек среди multimedia и web разработчиков. На базе FFmpeg сделано множество программ по конвертированию видео из одного формата в другой. Популярность этой программы крайне высока. Почему он так популярен? Для чего его чаще используют? Как установить и как запустить?

Итак, основные фишки FFmpeg, которые могут привлечь внимание неискушенного Linux пользователя, только-только начавшего изучать Ubuntu:

  • FFMpeg — бесплатный.
  • Есть во всех Linux дистрибутивах.
  • Можно просмотреть любой фильм.
  • Работает со всевозможными видеоформатами.
  • Позволяет сконвертировать видео из одного формата в другой.
  • Поддерживает параллельное кодирование на нескольких процессорах.
  • Ускорения кодирования на NVidia картах.
  • Можете использовать FFmpeg в своих программах, а потом продавать их.

FFmpeg доступен на Linux, Windows, Mac Os. И везде работает одинаково. Так что, если вы научились работать с FFmpeg под Windows, то точно так же его надо запускать и в Linux и наоборот.

FFmpeg абсолютно самодостаточен . Для того чтобы посмотреть фильм нет необходимости искать в сети, скачивать и устанавливать кодеки. Достаточно всего лишь одного файла (ffplay.exe), все кодеки содержатся внутри этого файла.

FFmpeg — бесплатный софт (лицензии GPL 2.0 и LGPL 2.1) и вы можете использовать его код в своих проектах, как в коммерческих, так и в свободно-распространяемых.

Как было уже сказано, FFmpeg — это набор программ. Что значит “набор программ”? Нужно все программы качать или можно по отдельности? Что там внутри? На эти вопросы мы сейчас и постараемся ответить.

Но для начала определимся с термином FF mpeg — это сокращенное от F ast F orward Mpeg. Когда говорим о FFmpeg, как о наборе программ, то первые две буквы «F» должны быть большие (FF).

Итак, FFmpeg состоит из следующих инструментов (tools): ffmpeg, ffplay, ffserver, ffprobe (заметьте, все с маленькой буквы). Для Windows это обычные exe файлы. Причем размер у них очень внушительный. Все дело в том, что все видео и аудио кодеки уже находятся внутри них. Если вам нужно посмотреть фильм, то просто скачайте из сети ffplay.exe, больше ничего не потребуется. Никаких инсталляторов, никаких кодеков, права Administrator не нужны. Скачали, разархивировали, можете приступать к просмотру фильма.

FFmpeg в Windows, размер каждого файла 38-39Mb, все кодеки скомпилированы и прилинкованы «внутрь» исполняемого файла.

ffmpeg

С помощью этой программы можно конвертировать видео из одного формата в другой. Склеивать несколько видеороликов в один. Разбирать видео на отдельные кадры (изображения), а потом склеивать обратно. Ускорять/замедлять, масштабировать, добавлять субтитры и несколько звуковых дорожек. И еще 100500 полезных действий.

Список доступных опций этой команды занимает 203 страницы:

Впечатляет, не так ли?

ffplay


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

ffserver


Если вам вдруг захотелось создать свой видео хостинг похожий на YouTube, то используйте ffserver.

ffprobe


Волшебная программа, расскажет вам все о фильме, который вы скачали (формат, продолжительность, сколько звуковых дорожек и многое другое). Выдаст на экран столько информации о фильме, что потребуется полдня, чтобы все это прочитать.

Помимо четырех программ в пакет FFmpeg входит еще и набор свободно-распространяемых библиотек (из которых вышеприведенные программы и собраны):

  • libavutil — набор вспомогательных функций;
  • libavcodec — аудио/видео кодеки;
  • libavformat — библиотека по работе с контейнерами;
  • libavdevice — работа с устройствами поставляющими медиа контент;
  • libavfilter — различные фильтры;
  • libswscale — библиотека масштабирования, работа с цветовыми пространствами;
  • libswresample — библиотека обработки звука.

В принципе, из-за этих библиотек весь проект FFmpeg и затевался, а программы уже так, бонусом пошли 🙂

Используя эти библиотеки вы можете создавать свои приложения по работе с мультимедиа контентом и даже потом продавать их. Написать свой видеоплеер или видеоконвертер не составит труда. В сети полно руководств и инструкций по использованию библиотек FFmpeg.

История

История развития FFmpeg так же богата, как и его содержимое. Начавшись в 2000 году она претерпела сильное потрясение в 2011, когда часть разработчиков решила создать свою собственную библиотеку по работе с медиа контентом, назвали они ее — Libav. Свое желание уйти из проекта они объяснили недовольством организацией проекта FFmpeg, где по сути вся власть находилась в руках одного человека и все решения принимал только он сам.

Сейчас Libav идет своим путем и никого не слушает. Код обновляется не так часто, как FFmpeg. Каждое обновление тщательно проверяется.

FFmpeg в долгу не остался и исправно, каждые два дня, забирает к себе в норку изменения в коде, сделанные командой Libav:-)

В настоящее время FFmpeg продолжает активно развиваться, как доказательство скриншот репозитария исходных кодов:

Установка

Пакет FFmpeg настолько популярен, что включен во многие дистрибутивы Linux по умолчанию. Если вы по какой-то причине не установили его сразу, то это можно сделать потом с помощью менеджера пакетов. Установка FFmpeg для начинающих не должна вызвать особых проблем. В зависимости от дистрибутива Linux, нужно будет выполнить ряд стандартных команд.

Sudo add-apt-repository ppa:mc3man/trusty-media sudo apt-get update sudo apt-get install ffmpeg

Yum -y install ffmpeg ffmpeg-devel

openSuSe

Zypper install ffmpeg

Самые свежие версии FFmpeg для Windows можно скачать с:

https://ffmpeg.zeranoe.com/builds/

Два типа FFmpeg

Есть два вида в которых FFmpeg приходит на ваш компьютер:

1) static-build — в этом случае все кодеки, фильтры и утилиты вкомпилированы «внутрь» ffmpeg.exe (ffprobe.exe, ffplay.exe) и вам достаточно скачать только один из этих файлов, чтобы начать смотреть киношку (ffplay.exe). В этом случае размер исполняемого модуля сильно раздувается (до 39Mb). Зато очень удобно.

2) shared-build — здесь кодеки, фильтры и другие вспомогательные программки являются самостоятельными отдельными файлами, которые FFmpeg находит и по мере надобности подгружает. В этом случае размер исполняемого модуля всего 190Kb.

Если вы устанавливаете FFmpeg в Linux, то с вероятностью 99.9% будет установлен shared-build.

Лично я, предпочитаю static-build (не надо думать о других библиотеках). Чтобы получить static-build под Linux нужно собрать FFmpeg самому из исходников. Для начинающих пользователей Linux это может оказаться сложно.

А как смотреть кино?

Все понятно, но как фильмы-то смотреть? Как говорилось выше, ffplay (ffplay.exe — под Windows) является консольной программой, то есть у нее нет графического интерфейса. Для просмотра видео необходимо выполнить в командной строке:

Ffmpeg.exe film.avi

после чего сразу начинает воспроизводиться фильм:

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

Если вы чувствуете себя неуверенно при работе с командной строкой Windows, то можете воспользоваться следующим способом. Захватите фильм мышкой и перетащите его на ffplay.exe, кино сразу же станет воспроизводиться.

Контроль за воспроизведением (краткий список команд):

q, ESC — выход,
f — полный экран (двойной клик левой кнопкой мыши),
p — поставить на паузу,
m — звук вкл/выкл,
9, 0 — звук прибавить/убавить,
t — переключение субтитров,
c — cycle program
s — покадровое перемещение по фильму,
стрелка влево/вправо — перемещение на 10 сек назад/вперед,
стрелка вниз/вверх — перемещение на 1 мин назад/вперед,
page down/page up — перемещение на 10 мин назад/вперед.

Графический интерфейс проигрывателя ffplay выглядит довольно аскетичным, вернее сказать его вообще нет. Отсутствуют привычные ползунки, кнопочки, менюшки присущие media player’ам с графическим интерфейсом. При работе с ffplay вы видите только сам фильм и какие-то непонятные цифры и слова мелькающие в окне терминала, как в фильме «Матрица». На самом деле управлять фильмом с клавиатуры просто и понятно, через несколько просмотров пальцы сами запомнят какие кнопки нужно нажимать.

Несколько примеров запуска ffplay с различными опциями:

Уменьшить изображение в 4 раза по ширине

Ffplay -vf scale=iw/4:-1 video.avi

Почистить видео от шума

Ffplay -vf hqdn3d=4:3:6:4.5 video.avi

Ускорение в 2 раза

Ffplay -vf setpts=0.5*PTS video.avi

А как перекодировать?

Перевести mpg в avi

Ffmpeg -i video.mpg video.avi

Извлечь звук из видео и записать в формате MP3

Ffmpeg -i video.mp4 -vn -ab 128 audio.mp3

Склеить звук и видео

Ffmpeg -i audio.wav -i video.avi final_video.mpg

Извлечь видеодорожку (без звука)

Ffmpeg -i video.mp4 -an video_bez_zvuka.mp4

Изменить размер видео

Ffmpeg -i video.mp4 -s 640x480 -c:a copy video640480.mp4

Выбросить первые 45 секунд видео и оставить участок длительностью 40 секунд

Перекодировать WAV в MP3

Ffmpeg -i audio.wav -b:a 192k audio.mp3

Разложить видео на кадры (изображения)

Ffmpeg -i video.webm thumb%04d.jpg

Сделать видео из набора изображений

Ffmpeg -i frame-%03d.png video.avi

Заключение

Данная статья имеет целью познакомить читателя с мощнейшим набором программ FFmpeg. Дается краткое описание пакета FFmpeg. Приводятся примеры его использования для просмотра видео и для обработки (ковертиования) аудио и видео материалов.

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

Задачей данной статьи было показать, что FFmpeg для начинающих пользователей Linux должен быть незаменимым инструментом при работе с media контентом. Не нужно бояться отсутствия GUI. Работа с аудио и видео из консоли тоже может быть очень эффективной.

P.S. Так как FFmpeg приходится пользоваться часто, то я решил собрать все популярные приемчики использования в одной книге .

FFmpeg - это набор библиотек для обработки видео и аудио файлов. FFmpeg сконвертирует mov в mp4, наложит водяной знак, склеит несколько видео файлов в один, поменяет разрешение, перекодирует потоковое видео, создаст поток сам. FFmpeg полезен для тех, кто профессионально работает с видео, разрабатывает медиа приложения или просто обрабатывает домашние записи.

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

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

Получаем информацию о файле

ffmpeg -i file.mp4

Тут все просто, вводим путь к файлу, получаем информацию о нем: кодеки, количество дорожек, разрешение, битрейт и фреймрейт. Мы указываем пути к файлам флагом -i (input):

I file1.mp4 -i file2.mp4 .

Конвертируем в mp4

Допустим у нас есть сайт, на котором видео проигрывалось через Flash плеер. Мы хотим поменять его на HTML5 Video. Для этого конвертируем видео файлы на сервере из flv формата в mp4.

  • output.mp4 - путь к сконвертированному файлу.
  • -vcodec libx264 - указываем какой видео кодек хотим получить. В нашем случае это H264, который поддерживается большинством браузеров .
  • -acodec libvo_aacenc - аудио кодек AAC .

Список поддерживаемых вашим ffmpeg кодеков можно получить через ffmpeg -codecs .

Вместо -vcodec встречается запись -codec:v и -c:v . Если не указать кодеки для конвертации ffmpeg -i flashvideo.flv output.mp4 , то ffmpeg установит дефолтные кодеки для формата файла на выходе .

При конвертации задают не только кодеки. Увеличим число настроек:

Ffmpeg -i flashvideo.flv -b:v 700k -r 25 -pix_fmt yuv420p -vcodec libx264 \ -b:a 128k -ar 44100 -acodec libvo_aacenc -y output.mp4

Мы установили битрейт для видео -b:v и аудио -b:a в 700 и 128 кб/c. Битрейт можно обозначить другими флагами: -vb и -b для видео или -ab для аудио.

Оставшиеся три параметра - это фреймрейт -r 25 в кадрах в секунду, цветовая модель YUV равная обычному значению yuv420p и частота дискретизации звука 44100 Гц. Флаг -y нужен для перезаписи файла, если он уже существует.

Вырезаем фрагмент видео

ffmpeg -ss 10 -t 20 -i source_video.mp4 -vcodec copy -acodec copy result.mp4

Флагом -ss указываем с какого момента исходного видео обрезаем, -t - продолжительность. На выходе мы получим двадцати секундное видео, которое начнется с десятой секунды исходного. Запись -ss 00:00:10.250 -t 00:00:20.120 пригодится для указания более точного промежутка времени. До версии 2.1 FFmpeg в обоих случаях обрезал видео по ближайшему ключевому кадру . В новых версиях итоговое видео максимально близко к указанному интервалу.

Мы добавили -vcodec copy -acodec copy , чтобы сохранить кодеки исходного видео. Иначе ffmpeg перекодировал бы их в кодеки по умолчанию. Сейчас видео не перекодируется и команда выполнится быстро. Дальше упростим эту запись флагом -c copy .

Если расположить флаги -ss и -t после входящего видео, то итоговое видео будет таким же, но команда будет выполняться дольше. Флаги будут относиться к итоговому видео и FFmpeg будет декодировать фрагмент видео до -ss . В первом случае эта часть будет проигнорирована.

Флаг -t можно заменить на -to , указав вместо продолжительности конечную точку. Этот флаг нельзя применить к входящему видео:

Ffmpeg -ss 10 -i source_video.mp4 -to 30 -c copy result.mp4

Команда дала нам другой результат: тридцати секундное видео с десятой секунды исходного. Это произошло, потому что -to использовал временную шкалу result.mp4 , тридцатая секунда на котором равна сороковой секунде source_video.mp4 . Чтобы использовать исходную шкалу добавим флаг -copyts . Так мы получим такое же видео, как от первой команды:

Ffmpeg -ss 10 -i source_video.mp4 -to 30 -copyts -c copy result.mp4

Фильтры. Меняем разрешение

Один из самых мощных инструментов ffmpeg - фильтры. Они могут добавлять эффекты, накладывать разные видео друг на друга, сшивать несколько файлов в один. Увидеть список установленных фильтров мы можем по команде ffmpeg -filters . Изменим с их помощью разрешение видео:

Ffmpeg -i source_video.avi -vf scale=640:480 source_preview.avi

Мы использовали флаг -vf , указав фильтр scale и разрешение 640:480 . Этот фильтр может сохранять пропорции и вычислять разрешение динамически .

Объединение фильтров. Ускоряем воспроизведение

ffmpeg -i source_video.mp4 \ -filter_complex "setpts=0.5*PTS;atempo=2.0" accelerated.mp4

Мы объединили несколько фильтров в один флагом filter_complex и получили ускоренный в два раза файл. Чтобы разобраться применим фильтры по одиночке.

Ffmpeg -i source_video.mp4 -vf setpts=0.5*PTS accelerated_video.mp4

Мы ускорили воспроизведение видео дорожки фильтром setpts . Однако аудиодорожка не изменилась, и файл получится той же продолжительности что и был: видео проиграется в 2 раза быстрее, а последний кадр будет висеть всю вторую половину файла. Если убрать аудио дорожку флагом -an , то длительность итогового файла будет определяться по видео дорожке и будет в два раза меньше исходной.

Наоборот, если нужна только ускоренное аудио без видео, воспользуемся фильтром atempo , а флагом vn уберем видео дорожку.

Ffmpeg -i source_video.mp4 -af atempo=2.0 -vn accelerated_audio.mp3

Добавив filter_complex и применив оба фильтра, мы ускорили файл целиком.

Выполним ту же операцию другим методом:

Ffmpeg -f concat -i list.txt -c copy output.mp4

В FFmpeg есть элементы, которые читают или записывают медиа в определенных форматах. Они называются демультиплексор и мультиплексор . -f concat - это демультиплексор, который принимает текстовый файл, со списком медиа файлов и склеивает их в один. Посмотреть другие элементы можно командой ffmpeg -formats .

Содержимое list.txt:

File "input1.mp4" file "input2.mp4"

Такой метод удобен, если у нас много файлов и надо склеить их друг за другом. Он не перекодирует видео и работает быстрее первого метода.

Но первый метод применяется чаще. Во-первых, он может принять на вход видео с разными кодеками. Во-вторых, дает большую гибкость. Например, если нужна только часть первого видео, мы можем воспользоваться флагами -ss и -t . Обратите внимание, эти флаги действуют только на первый файл input1.mp4 .

Ffmpeg -ss 5 -t 2 -i input1.mp4 -i input2.mp4 \ -filter_complex " concat=n=2:v=1:a=1 [v] [a]" \ -map "[v]" -map "[a]" -y result.mp4

Водяной знак

Последний пример, который мы рассмотрим - это наложение водяного знака. Фильтр overlay принимает на вход координаты расположения водяного знака на итоговом видео.

Расположим водяной знак по центру. Зная размер исходного видео и png картинки, можно вычислить координаты самим. Например при видео 1280×720 и водяном знаке 200×200, положение по горизонтали x = (1280 - 200) / 2 = 540 и по вертикали y = (720 - 200) / 2 = 260 . Соответственно значение фильтра "overlay=540:260" . Однако удобнее написать универсальную команду, чтобы ffmpeg посчитал все за нас. Размер видео получим из параметров main_w и main_h , а водяного знака из overlay_w и overlay_h . Далее ту формулу, по которой мы вычисляли координаты запишем в значение фильтра "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" . Готово, мы получили команду для наложения водяного знака по центру:

Ffmpeg -i source_video.mp4 -i watermark.png \ -filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" \ -codec:a copy video_protected.mp4

Твитнуть