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

Твитнуть

История FFmpeg

В 2000 году программист с ником Gerard Lantau выложил для всеобщего использования исходники проекта FFmpeg. За годы концепция осталась прежней:

  • Деление на программы FFmpeg для кодирования видео и FFserver для организации потокового вещания.
  • Максимально быстрое кодирование звука и видео.

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

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

Где скачать FFmpeg и FFserver

FFmpeg разрабатывается под Linux. Если на сайте видите окошко с трансляцией видео - 9 шансов из 10, что оно работает благодаря FFmpeg и FFserver.

Версия FFmpeg (и FFserver) для Windows тоже существует, но часть функциональности будет недоступна. Впрочем, это не мешает работать видеоконвертеру MediaCoder (www.mediacoderhq.com) и плееру

На выбор есть 32- и 64-битные версии. Для кодирования видео выбирайте 64-битную Static-версию (ссылка вида «Download FFmpeg git-*** 64-bit Static «).

Если нужно организовать видеотрансляцию с, например, IP-видеокамеры, желательна 32-битная версия FFmpeg, с 64-битной я заметил проблемы - программа закрывалась сама по себе. Возможно, потому что FFserver для Windows - 32-битный, есть несовместимость.

FFserver на Windows тоже существует, хотя об этом мало кто знает. Программу трудно скомпилировать, потому что используется много специфичного для Linux кода. Разработчики системы видеонаблюдения Xeoma оказались молодцы, потому что выложили свой FFserver для Windows на своем сайте: http://felenasoft.com/xeoma/ru/ffserver/ Не забудьте скачать cygwin1.dll оттуда же.

Про FFserver в Интернете много инструкций. Они написаны на примере Linux-версии, но прекрасно работают под Windows. Единственное отличие - файл ffserver.conf должен лежать не в папке /etc, а в одной папке с ffserver.exe, cygwin1.dll и ffmpeg.exe.

Как установить FFmpeg

2. Создайте на диске C: папку ffmpeg и распакуйте туда архив.

Для установки ffmpeg этого достаточно. Советую выполнить пункт 4 для удобства в будущем.

3. Если нужно настроить трансляцию, в папку c:\ffmpeg\bin распакуйте ffserver и положите файлик cygwin1.dll .

4. Чтобы в командах не писать каждый раз полный путь к программе, можно добавить его в переменную PATH: Панель управления - Система - Дополнительные параметры системы - вкладка Дополнительно - Переменные среды - в конце строки переменной Path добавьте «;c:\ffmpeg\bin » без кавычек. Если там было пусто (что не совсем нормально), то «c:\ffmpeg\bin «, т.е. без точки с запятой в начале.

Потом перезагрузите компьютер, чтобы изменения вступили в силу.

Вы можете пропустить четвертый шаг, но потом вместо команд ffmpeg и ffserver придется писать полный путь «c:\ffmpeg\bin\ffmpeg.exe» и «c:\ffmpeg\bin\ffserver.exe».

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

На главной странице FFmpeg красуется надпись:

Человек, не знакомый с командной строкой, будет в ступоре. Куда вводить команду?

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

В папке ffmpeg\doc собрано много примеров по использованию компонентов, все команды можно посмотреть там.

Примеры

Имена файлов у вас будут свои. Если есть пробелы или на русском - обрамляйте имена в кавычки.

Отобразить информацию о файле:

ffmpeg -i video.mp4

или ffprobe video.mp4

Пережать видео avi в mp4:

ffmpeg -i video.avi video.mp4

Пережать mov в flv и изменить разрешение:

ffmpeg -i video.mov -s 640x360 -b 1700k -vcodec flv -ar 44100 video.flv

Пережать видео в webm среднего качества, звук формата OGG:

ffmpeg -i video.mp4 -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis video.webm

Пережать видео кодеком MPEG4, звук - mp3, контейнер - avi:

ffmpeg -i video.mp4 -vcodec mpeg4 -mbd rd -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 100 -qscale 3 -acodec libmp3lame -ac 2 -ab 128k -y video.avi ffmpeg -i video.mp4 -vn -ar 44100 -ac 2 -ab 192 -f mp3 zvyk.mp3

Добавить звуковую дорожку к видео («-acodec libmp3lame» можно выкинуть, тогда ffmpeg сам решит, как кодировать звук):

ffmpeg -i zvyk.mp3 -i video.mp4 -acodec libmp3lame video_final.mp4

Добавить звуковую дорожку без перекодирования видео (сохраняет качество, работает быстро):

ffmpeg -i zvyk.mp3 -i video.mp4 -acodec libmp3lame -vcodec copy video_final.mp4 ffmpeg -ss 00:00:02 -i video.mp4 -f image2 -vframes 1 thumb.jpg ffmpeg -i video.mp4 -vf deshake out.mp4

Структура

Как видно из примеров, команды ffmpeg имеют структуру:

ffmpeg -опции -еще_опции -можно_опции_с_параметрами_например 1 -i "имя файла.расширение" -опции_кодирования -еще опции +опции_кодека "имя_результирующего_файла.расширение"

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

Команды

Информационные (чтобы узнать возможности установленной версии)

-L
Показать текст лицензии.

-h, -?, -help, -help
Список доступных команд.

-version
Узнать версию ffmpeg.

-formats
Показать список доступных форматов контейнеров (не кодеков!).

В Windows не хватит строк в командной строке для показа всего списка, для исправления откройте свойства окна и на вкладке «Расположение» поставьте высоту буфера экрана в 500. В списке буквы D и E означают поддержку декодирования и кодирования.

-codecs
Список доступных кодеков. Кроме интуитивно понятных D и E (Decoder для «чтения» и Encoder для кодирования), видны следующие обозначения:
V - кодек для видео, A - для звуковых дорожек, S - субтитров, I - только для кодирования I-фреймов, L - кодек сжимает с потерями данных (большинство), S - без потери данных (сохраняет качество, сжимает слабо).

-bsfs
Показать поддерживаемые bitstream filters (фильтр потока данных), которые нужны в ряде случаев для правильной обработки потока данных.
-protocols
Показать доступные протоколы. Из выдаваемого списка понятно, что в качестве входных данных может использоваться RTMP поток (видеотрансляция) и многое другое, не только файлы. Как выходные - тоже.
-filters
Доступные фильтры видео и аудио. В FFmpeg их громадное количество. Кроме банальных поворота и настроек яркости, в FFmpeg есть расширение стереобазы, генерирование фракталов и прочее, прочее. Подробные инструкции - в doc/ffmpeg-filters.html.

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

Основные опции

-loglevel значение или -v значение

Уровень логгирования. От минимума - quiet до максимально подробного debug. Полный список: quiet, panic, fatal, error, warning, info, verbose, debug. Полезно, если в процессе кодирования видео происходят ошибки и нужно узнать подробности.

-f значение (mp4, avi, mkv, gif и т.д.)

Указать определенный формат (контейнер) файла. Обычно FFmpeg выбирает по расширению выходного файла, но можно переназначить.

-i путь_до_файла

Команда для указания входящего файла или потока (например, rtmp://адрес для захвата потокового видео).

-y
Перезаписывать уже существующий выходной файл без запроса.

-ss время

Указывает, с какого времени нужно кодировать видео/аудио. Формат в виде «чч:мм:сс». Подробнее: https://trac.ffmpeg.org/wiki/Seeking

-t время

Указать, до какого времени нужно кодировать видео/аудио. Вместе с предыдущей командой удобно использовать для вырезания отрезка видео.

-fs размер
Лимит выходного файла. Например, при -fs 10M кодирование останавливается, как только выходной файл станет 10 Мб размером. Поддерживаются K, M, G (килобайты, мегабайты и гигабайты).

Опции кодирования видео

-b значение
Устанавливает битрейт видео. Выше битрейт - лучше качество и больше размер файла. Указывайте в конце цифры K или M, чтобы программа понимала, в килобитах/сек или мегабитах/сек значение.

-vframes значение

Количество кадров, которые нужно кодировать.

-r значение
Указание частоты кадров.

-s размер

Указание, в каком разрешении кодировать видео. Например, 1920×1080 для FullHD видео на выходе. FFmpeg понимает буквенные сокращения (vga, hd480, hd720, hd1080 и другие).

-aspect соотношение_сторон

Указать соотношение сторон видео (4:3, 16:9 or 1.3333, 1.7777 и т.д.). Как известно профессионалам, в видео пиксели могут быть прямоугольными.

-croptop значение , -cropbottom значение , -cropleft значение , -cropright значение

Обрезка количества пикселей видео сверху, снизу, слева или справа.

-padtop значение , -padbottom значение , -padleft значение , -padright значение

Добавление границы видео сверху, снизу, слева или справа.

-padcolor hex_color

Цвет границы в шестнадцатеричном формате (#000000 - черный, #FF0000 - красный и т.д.).

-vn
Не кодировать видео.

-bt значение

Значение задает максимальное отклонение от указанного битрейта. Может не работать, в зависимости от кодека.

-maxrate битрейт

Указывает максимальное значение битрейта. Требует указания размера буфера через -bufsize.

-minrate битрейт

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

ffmpeg -i video.avi -b 4000K -minrate 4000K -maxrate 4000K -bufsize 1835k video-out.mp4

-bufsize размер

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

-vcodec кодек

Выбор кодека (см. команду -codecs для списка кодеков). Можно указать copy , тогда FFmpeg будет копировать видеопоток без перекодирования.

Сохранять качество исходной картинки/звука. Это не то же самое, что -vcodec copy . Сохраняется качество видео, кодек может быть любым, видеодорожка перекодируется.

-pass n

Для многопроходного кодирования видео. Указывает, какой делать проход (1 или 2). Префикс имени файла со статистикой указывается командой -passlogfile значение .

Можно отключить обработку звука при первом проходе, чтобы экономить время и ресурсы:
ffmpeg -i video.mp4 -vcodec libxvid -pass 1 -an -f rawvideo -y NUL

Опции звука

-aframes количество

Сколько фреймов звука (да, у звука есть кадры!) нужно кодировать.

-ar частота

Указание частоты звука (по умолчанию 44100 Гц).

-ab битрейт

Битрейт (по умолчанию = 64K).

-aq значение

Указание качества (зависит от кодека, применяется при переменном битрейте).

-ac число

Количество аудиоканалов (по умолчанию 1).

Не кодировать звук.

-acodec кодек

Указание кодека для звука. Значение copy позволяет копировать звуковую дорожку без перекодирования

-newaudio

Добавление еще одной звуковой дорожки. Ее параметры указываются до команды -newaudio:

ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio

Субтитры

-scodec кодек

Кодек для субтитров (copy - для прямого копирования).

-newsubtitle

Добавление еще одних субтитров.

-slang код

Указание языка субтитров в стандарте ISO 639 (3 буквы).

Отключение субтитров.

Другие команды

-threads количество

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

-vsync значение

Синхронизация кадров. Значения:

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

1 - кадры будут дублироваться или удаляться, чтобы сохранить требуемую частоту кадров.

2 - кадры будут пропускаться или удаляться, чтобы сохранить требуемую частоту кадров.

1 - значение по умолчанию. FFmpeg выбирает сам между методами 1 и 2.

С помощью команды -map можно указать, что к чему будет подстраиваться. Подробности: https://trac.ffmpeg.org/wiki/Map

-async кадры_в_секунду

Выбор метода синхронизации звука. Чтобы звук и видео совпадали по времени, аудиодорожка может растягиваться и сжиматься. Значение 1 скорректирует звуковую дорожку только в самом начале по принципу «дальше будь что будет».

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

-shortest

Когда самый короткий входящий файл закончился, прекращение кодирования.

Еще команд?

Команды для FFmpeg смотрите здесь:

http://help.ubuntu.ru/wiki/ffmpeg (на русском).

https://ffmpeg.org/ffmpeg.html (официальная документация).

Для кодирования кодеком x264, который сейчас приобрел популярность, гляньте это:

http://wiki.rosalab.ru/ru/index.php/FFmpeg (на русском, есть примеры).

Почему команд так много?

Они нужны для полного контроля процесса обработки файлов с видео и звуком.

Большинство пользователей конвертируют видео, не понимая, что важен не только кодек для сжатия, но и его параметры. Есть нюансы, которые непросто осознать начинающим пользователям. Например, файл с расширением «mp4» не обязательно содержит в себе видео с кодеком MPEG4.

Если есть какие-то вопросы по FFmpeg - спрашивайте в комментариях. Помогу, чем смогу.

В прошлом посте я рассказал как установить .

В данном посте я рассмотрю базовые команды, которые существенно облегчат работу с FFMpeg. Огромное количество информации содержится в мануалах, они как известно рулез, так что если какая-то информация оказалась за пределами поста, «man ffmpeg» вам в помощь.

Для понимания, более простых конструкций, например такой:

Ffmpeg -ss 5 -i a.mp4 -aspect 4:3 -f image2 -r 1 -vframes 300 a%2d.jpg

чуть ниже я перечислю наиболее часто используемые опции.

Опции ffmpeg

Рассмотрим некоторые полезные опции (в скобках примеры). Если какие-то из опций не будут указаны, то FFmpeg подставит их из значений по умолчанию:

-i — задает имя исходного (входного) файла.
-threads — числовое значение, определяет количество ядер процессора. Что, естественно, отражается на скорости кодирования и операций над файлами. Число 0 устанавливает автоматическое определение доступного числа ядер (-threads 2 ).
-t — задает длительность кодируемого видео в целых секундах или же в формате чч:мм:сс.
-ss — указывает позицию в видеофайле с которой будет начинаться кодирование. Формат в целых секундах или чч:мм:сс.
-fs — числовое значение в байтах, килобайтах (k), мегабайтах (M). Регистр приставки важен. Ограничивает размер конечного файла. Полезно для экспериментов над небольшим кусочком видеофайла, чтобы не кодировать весь файл (-fs 5M ).
-y — эта опция перезаписывает уже существующие файлы без запроса на подтверждение.
Видео опции:
-vcodec — видеокодек, которым будет осуществляться кодирование видео (-vcodec mpeg4 ).
-vpre — выбираем предустановку для видеокодека. Сначала FFmpeg ищет файлы предустановок в ~/.ffmpeg, затем в /usr/share/ffmpeg или /usr/local/share/ffmpeg, в зависимости от пути установки. Посмотреть самим, какие присутствуют файлы предустановок, можно по этим же путям.
-f — force, указываем принудительно формат конечного файла (-f avi ).
-b — битрейт видеопотока. По умолчанию: 200kb/s (-b 1500 ).
-bt — толерантность битрейта. По умолчанию: 4000k. При двухпроходном кодировании указывает как далеко в первом проходе можно отклониться от указанного среднего битрейта. Значение не связано с минимальным/максимальным битрейтом. Слишком сильное снижение этого параметра оказывает негативное влияние на качество.
-r — количество кадров в секунду. По умолчанию: 25 (-r 15 ).
-s — размер фрейма, то есть разрешение выходного видеофайла. По умолчанию определяется размером файла-источника. Может быть задано буквенными сокращениями, например svga означает размер 800×600. Просмотреть все доступные сокращения можно в man ffmpeg . (-s 640×480 или -s vga ).
-aspect — числовые значения, определяет соотношение сторон выходного файла (-aspect 4:3 или -aspect 1.3333 ).
-croptop
-cropbottom
-cropleft
-cropright — обрезка кадров сверху, снизу, слева, справа. Значения указываются в пикселях. Может использоваться, например, для удаления черных полос (-croptop 15 ). В некоторых версиях ffmpeg данные опции могут быть удалены и вместо них используется опция -vf crop=width:height:x:y . Подробнее о ней в соответствующем разделе ниже.
-pass — количество проходов при кодировании, 1 или 2 (-pass 2 ).
-g — размер группы кадров, после которой следует ключевой кадр. Например -g 300 устанавливает по одному ключевому кадру каждые 10 секунд, при скорости исходного видеофайла 29.97fps. 30 кадров в секунду * на 10 секунд = значение опции 300 (примерное значение для рипа DVD-файла). Чем меньше битрейт и количество кадров в секунду, тем меньше должно быть это значение.
-deinterlace — удаление «гребенки».
Аудио опции:
-ar — устанавливает частоту дискретизации звука. По умолчанию: 44100Гц (-ar 22050 ).
-ab — битрейт звуковой дорожки. По умолчанию: 64kb (-ab 256k ).
-ac — число каналов звуковой дорожки. По умолчанию, для входящих потоков это значение равно 1, для исходящих равно числу каналов исходного файла. Другими словами, если вы делаете захват звука, то число каналов по умолчанию 1, а если берете звук из видеофайла, например, то число каналов по умолчанию будет равно исходнику (-ac 2 ).
-an — кодирование видео без звуковой дорожки.
-acodec — аудиокодек, которым будет осуществляться кодирование звука (-acodec flac ).
-apre — набор предустановок для аудиокодека.

Наиболее часто используемые конструкции:
1. Получение информации о видеофайле

Ffmpeg -i video.avi

2. Превратить набор картинок в видео

Ffmpeg -f image2 -i image%d.jpg video.mpg

Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg


Ffmpeg -r 12 -y -i "image_%010d.png" output.mpg


здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf)

3. Порезать видео на картинки

Ffmpeg -i video.mpg image%d.jpg

Эта команда создаст файлы image1.jpg, image2.jpg и т.д., поддерживаются так же форматы PGM, PPM, PAM, PGMYUV, JPEG, GIF, PNG, TIFF, SGI.
4. Конвертировать видео в формат iPod/iPhone

Ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4

Пояснения:

  • Источник: source_video.avi
  • Аудио кодек: aac
  • Битрейт аудио: 128kb/s
  • Видео кодек: mpeg4
  • Битрейт видео: 1200kb/s
  • Размер видео: 320 на 180 пикселей
  • Полученное видео: final_video.mp4

5. Конвертировать видео в формат PSP

Ffmpeg -i source_video.avi -b 300 -s 320x240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4

Ffmpeg — инструмент, который может помочь вам конвертировать практически любой аудио и видео файл из командной строки. В этой статье написаны некоторые полезные команды ffmpeg, которые вы должны для этого знать. Программа Ffmpeg является чрезвычайно мощным и универсальным инструментом командной строки для конвертации аудио и видео файлов. Программа бесплатная и доступна для Windows, и Mac и Linux машин. Хотите ли вы объединить два видео файла, извлечь аудио компоненты из видео файлов, конвертировать видео в анимированный GIF, ffmpeg’а может сделать всё это и даже больше.

Полезные Команды Ffmpeg

Программа Ffmpeg поддерживает все популярные аудио и видео форматы. Или вы можете выполнив команду ./ffmpeg -formats чтобы получить список каждого формата, поддерживаемый вашей установленной версией ffmpeg. Если вы только начали, вот несколько команд, которые дадут вам хорошее представление о возможностях этого инструмента.

1. Разрезать видео файл на более мелкие клипы

Вы можете использовать разницу во времени параметра (-SS), чтобы указать начальную метку времени в формате ЧЧ:мм:СС.мс Формат а-т параметра для указания фактической продолжительности клипа в секундах.

2. Разделить видео на несколько частей

Если вы хотите разделить большой видео файл на несколько небольших клипов без повторного кодирования, ffmpeg может помочь. Эта команда будет разделять исходное видео на 2 части — одна заканчивается на 50s от начала. а другая, начинается с 50s и заканчивается в конце входного видеосигнала.

3. Конвертировать видео из одного формата в другой

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

Ffmpeg -i youtube.flv -c:v libx264 filename.mp4 ffmpeg -i video.wmv -c:v libx264 -preset ultrafast video.mp4

4. Объединить (объединять) видео файлы

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

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

5. Отключение видео (удалить аудио компонент)

Используйте этот параметр, чтобы отключить звуковую часть видеопотока.

Ffmpeg -i video.mp4 -an mute-video.mp4

6. Извлечь аудио из видео

Переключатель vn извлекает аудиодорожку из видео, и мы используем — AB переключатель, чтобы сохранить звук в качестве 256кбит / MP3 аудио файл.

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

7. Конвертировать видео в анимированный GIF файл

Ffmpeg — это отличный инструмент для конвертирования видео файлов в анимированные GIF файлы, и качество получается довольно не плохое. Используйте шкалу фильтра, чтобы задать ширину изображения GIF, параметр — t для конкретной длительности, а параметр r задает частоту кадров (fps).

Ffmpeg -i video.mp4 -vf scale=500:-1 -t 10 -r 10 image.gif

8. Извлечь изображения кадров из видео

Эта команда извлечёт видеокадр на 15s и сохранит его в качестве 800px в ширину изображения в формате JPEG. Вы можете также использовать параметр s (400×300) указав точные размеры изображения в файл, хотя он, вероятно, создаст растягивающееся изображение, если размер изображения не соответствует пропорции оригинального видео-файла.

Ffmpeg -ss 00:00:15 -i video.mp4 -vf scale=800:-1 -vframes 1 image.jpg

9. Конвертировать видео в изображения

Вы можете использовать ffmpeg для автоматического извлечения изображения кадров из видео каждый ‘N’ секунд и сохранять изображения в последовательности. Эта команда сохраняет изображения кадра через каждые 4 секунды.

Ffmpeg -i movie.mp4 -r 0.25 frames_%04d.png

10. Слияние аудио и видео файлов

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

Ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental output.mp4 ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental -shortest output.mp4

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

Используйте переключатель размер (-ы) для изменения размера видео, сохраняя при этом его пропорции.

Ffmpeg -i input.mp4 -s 480x320 -c:a copy output.mp4

12. Создать видео слайд-шоу из изображений

Эта команда служит для создания видео слайд-шоу с использованием серии картинок, которые названы как img001.png, img002.png, и т. д. Каждое изображение будет иметь продолжительность 5 секунд (-r 1/5).

Ffmpeg -r 1/5 -i img%03d.png -c:v libx264 -r 30 -pix_fmt yuv420p slideshow.mp4

13. Добавить плакат изображения для аудио

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

Ffmpeg -loop 1 -i image.jpg -i audio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4

14. Преобразовать одно изображение в видео

Используйте параметр t для указания длительности видео.

Ffmpeg -loop 1 -i image.png -c:v libx264 -t 30 -pix_fmt yuv420p video.mp4

15. Добавить субтитры в фильм

Эта команда создаст субтитры с файлами.srt . Ffmpeg может также выполнить декодирование наиболее распространенных форматов субтитров.

Ffmpeg -i movie.mp4 -i subtitles.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast output.mkv

16. Обрезать аудио файл

Это позволит создать 30-секундный звуковой файл, начиная с 90 секунды из исходного аудио файла без перекодировки.

17. Изменение громкости звука

Вы можете использовать фильтр объёма для изменения объёма медиа-файла используя команду ffmpeg. Эта команда будет наполовину уменьшат громкость аудио файла.

Ffmpeg -i input.wav -af "volume=0.5" output.wav

18. Повернуть видео

Эта команда будет поворачивать видео на 90° по часовой стрелке. Вы можете установить транспонировку на 2, чтобы повернуть видео на 90° против часовой стрелки.

Ffmpeg -i input.mp4 -filter:v "transpose=1" rotated-video.mp4

Эта команда будет поворачивать видео на 180° против часовой стрелки.

Ffmpeg -i input.mp4 -filter:v "transpose=2,transpose=2" rotated-video.mp4

19. Ускорить или замедлить видео

Вы можете изменить скорость видео при использовании фильтра setpts (в электронном виде штамп времени). Эта команда сделает видео 8х (1/8) быстрее или используя setpts=4*PTS сделает видео в 4x медленнее.

Ffmpeg -i input.mp4 -filter:v "setpts=0.125*PTS" output.mp4

20. Ускорить или замедлить аудио

Для изменения скорости аудио, используйте аудио фильтр atempo. Эта команда будет выполнять двойную скорость звука. Для аудио, Вы можете использовать любое значение между 0,5 и 2,0.

Ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv

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

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

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

FFMPEG (1) FFMPEG (1)

НАИМЕНОВАНИЕ

FFmpeg - FFmpeg видео конвертер

СИНТАКСИС

FFmpeg [[Опции_входного_файла] [-i INFILE ]]... {[Опции_выходного_файла] OUTFILE} ...

ОПИСАНИЕ

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

Таким образом, порядок важен, вы можете использовать одну и ту же опцию в

Командной строке несколько раз. В каждом случае применяются к

Входному или выходному файлу.

* Чтобы установить видео битрейт выходного файла в 64 Кбит / с:

FFmpeg -i input.avi -b 64K output.avi

* Чтобы установить частоту кадров выходного файла до 24 кадров в секунду:

FFmpeg -i input.avi -r 24 output.avi

* Чтобы установить частоту кадров входного файла (действителен только для сырых форматов)

1 кадр в секунду, а частоту кадров выходного файла 24 кадра в секунду:

Ffmpeg -r 1 -i input.m2v -r 24 output.avi

Опции формата могут быть необходимы для входных файлов.

По умолчанию, FFmpeg пытается преобразовать без потерь, в качестве возможного образца он

Использует те же аудио и видео параметры выхода как и у входа.

ВАРИАНТЫ ОПЦИЙ

*Общие опции*

Эти опции доступны из инструментов ffmpeg *.

L Показать лицензии.

H, -?,-help, --help.

Показать справку.

Version

Показать версию.

Formats

Показать доступные форматы.

Поля предыдущего формата имеют следующие значения:

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

E Кодировка доступна

Codecs

Показать доступные кодеки.

Поля названия кодеков, имеют следующие значения:

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

E Кодировка доступна

V / A / S

Видео / аудио / субтитров кодек

S кодек поддерживает ломтики

D Кодек поддерживает прямой рендеринг

T кодек может обрабатывать входные усечения в случайных местах, а не

Только в границе кадров

Bsfs

Показать доступных битов фильтров.

Protocols

Показать доступные протоколы.

Filters

Показать доступные libavfilter фильтры.

Pix_fmts

Показать доступные форматы пиксела.

LogLevel LogLevel

Установить уровень ведения журнала используется библиотека LogLevel, число или

Строка, содержащая одно из следующих значений:

Quiet

Panic

Fatal

Error

Warning

Info

Verbose

Debug

Основные опции:

F fmt

Группа форматов.

I файла

Входное имя файла

У Переписать выходной файл.

T Продолжительность

Ограничить транскодирование / захватывание видео последовательности с длительностью,

Которое указываются в секундах. "Чч: мм: [. XXX] SS" синтаксис также поддерживается.

Fs limit_size

Устанавливает предельный размер файла.

Ss позиция

Стремитесь данный момент положение в считанные секунды. "Чч: мм: [. XXX] SS" Синтаксис

Также поддерживается.

Itsoffset

Установите входное смещение по времени в секундах. "[-] Чч: мм: сс ". Синтаксис

Также поддерживается. Этот параметр влияет на все входные файлы, которые

Следовавшие за ним. К смещению добавляется метки из входных

Файлов. Указание положительного смещение означает, что соответствующие

Потоки с задержкой "compensation" секунд.

Timestamp время

Установить метку.

Metadata Значение метаданных <ключ ="значение">

Устанавливает метаданные в паре ключ / значение.

Например, для установки титул в выходной файл:

FFmpeg -i in.avi -metadate Title = "мой титул" out.flv

V число

Установить регистрации уровень подробности.

Target Целевого типа

Укажите целевой тип файла ("VCD", "SVCD", "DVD", "DV", "DV50",

"PAL-VCD", "NTSC-SVCD", ...). Все варианты формата (битрейт,

Кодеков, размер буфера) при этом устанавливается автоматически. Вы можете просто

Указать тип:

FFmpeg -i myfile.avi -target VCD /tmp/vcd.mpg

Тем не менее вы можете указать дополнительные параметры, как вы знаете

Они не конфликтуют со стандартными, как и в:

FFmpeg -i myfile.avi -target VCD -bf 2 /TMP/vcd.mpg

Dframes число

Устанавливает число кадров данных для записи.

Scodec кодек

Группа субтитров кодека ("copy", чтобы скопировать поток).

Newsubtitle

Slang код

Устанавливает код языка ISO 639 (3 буквы) из текущей строки

Потока.

Параметры видео

B битрейт

Устанавливает скорость передачи видео в бит/с (по умолчанию = 200 Кб/с).

Vframes число

Устанавливает число кадров видео для записи.

R fps

Устанавливает частоту кадров (Гц значения, доли или аббревиатура), (по умолчанию =

25).

S размер

Устанавливает размер кадра. Формат WxH (ffserver по умолчанию = 160x128, ТВМ-

Привязки по умолчанию = такие же, как и исходного). Следующие сокращения

Признаны:

SQCIF

128x96

QCIF

176x144

352x288

4CIF

704x576

16cif

1408x1152

QQVGA

160x120

QVGA

320x240

640x480

SVGA

800x600

1024x768

UXGA

1600x1200

QXGA

2048x1536

SXGA

1280x1024

Qsxga

2560x2048

Hsxga

5120x4096

WVGA

8520x480

WXGA

1366x768

WSXGA

1600x1024

WUXGA

1920x1200

Woxga

2560x1600

Wqsxga

3200x2048

Wquxga

3840x2400

Whsxga

6400x4096

Whuxga

7680x4800

320x200

640x350

Hd480

852x480

Hd720

1280x720

Hd1080

1920x1080

Aspect аспект

Устанавливает соотношение сторон (4:3, 16:9 или 1,3333, 1,7777).

Croptop размер

Установить верхний размер группы культур (в пикселях).

Cropbottom размер

Устанавливает нижний размер группы культур (в пикселях).

Cropleft размер

Обрезать левую полосу (в пикселях).

Cropright размер

Установить правильный размер группы культур (в пикселях).

Padtop размер

Установите верхнюю площадку размером группы (в пикселях).

Padbottom размер

Установить нижний размер группы панели (в пикселях).

Padleft размер

Левый размер площадки (в пикселях).

Padright размер

Установить правильный размер группы площадки (в пикселях).

Padcolor hex_color

Установить цвет проложенной полосы. Соотношение padcolor выражается как

Шесть цифр шестнадцатеричного числа, где первые две цифры представляют

Красный, две средние цифры зеленого и последние две цифры синий (по умолчанию

000000 (черный)).

Отключить запись видео.

Bt толерантности

Установите скорость передачи видео (в битах, по умолчанию 4000K). С минимальным и

Максимальным значением: (target_bitrate / target_framerate). В 1-проходном режиме,

Битрейт толерантности определяет, как далеко <битпоток> готов делить

С битрейтом среднее значение цели. Это не связано с

Мин / макс битрейтом. Снижение толерантности слишком негативно влияет

На качество.

Maxrate битрейт

Установить максимальную скорость передачи видео (в бит / с). Требуется что бы

Bufsize быть установлен.

Minrate битрейт

Установить минимальный видео битрейт (в бит / с). Самые полезные в создании кодирования:

FFmpeg -i myfile.avi -b 4000K -minrate 4000k -maxrate 4000K -bufsize 1835k out.m2v

Это мало пользы elsewise.

Bufsize размер

Устанавливает видео буфер верификатор размера буфера (в битах).

Vcodec кодек

Вызовите видео кодек для кодека. Используйте "copy" что бы задать особое значение с

RAW Codec данные должны быть скопированы, как есть.

Sameq

Использование качество видео в качестве источника (подразумевает VBR).

Pass n

Выберите передать номер (1 или 2). Он используется, чтобы передавать видео

Кодировки. Статистика видео записываются в первом

Перейти в лог-файл (см. также опцию -passlogfile), а в

Второй проход, что лог-файл используется для создания видео,

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

И установить выход к нулю, примеры для Windows и Unix:

FFmpeg -i foo.mov -vcodec libxvid -pass -an -f rawvideo -y NULL

FFmpeg -i foo.mov -vcodec libxvid -pass -an -f rawvideo -y /dev/null

Passlogfile префикса

Установить двухпроходной имя файла журнала префикса имени файла по умолчанию

Префикс `` ffmpeg2pass"". Полное имя файла будет PRE-

FIX-N.log, где N это номер конкретной в выходной поток.

Newvideo

Добавить новый поток видео на текущий выходной поток.

Vlang код

Установите ISO 639 код языка (3 буквы) текущего видео

Потока.

Функции Advanced Video

Pix_fmt формат

Установить формат пикселей. "list" используется в качестве параметра для отображения

Всех поддерживаемых пиксель форматов.

Sws_flags флаги

Установить SwScaler флаги.

G gop_size

Установить группы размер фотографии.

Intra

Используйте только внутри кадра.

Vdt n

Отмена порога.

Qscale q

Использование фиксированного масштаба видео (VBR).

Qmin q

Минимальный масштаб видео (VBR)

Qmax q

Максимальный масштаб видео (VBR)

Qdiff q

Максимальная разница между квантователя веса (VBR)

Qblur размытия

Видео квантователя масштаб размытия (VBR) (диапазон 0,0 - 1,0)

Qcomp сжатия

Масштаб сжатия видео(VBR) (по умолчанию 0,5). Постоянная

Lmin лямбда

Минимальный коэффициент Лагранжа видео (VBR)

Lmax лямбда

Максимальный видео множитель Лагранжа (VBR)

Mblmin лямбда

Минимальный масштаб квантователь макроблоков (VBR)

Mblmax лямбда

Максимальный масштаб квантователь макроблоков (VBR)

Эти четыре варианта (Lmin, Lmax, mblmin, mblmax) единиц "lambda" использования,

Но вы можете использовать значение постоянной QP2LAMBDA легко конвертировать из "Q"

Единиц:

Ffmpeg -i src.ext-Lmax 21 * QP2LAMBDA dst.ext

Rc_init_cplx сложности

Начальные сложности для прохода одной кодировки

B_qfactor-фактор

Qp фактором между P- и B-кадром

I_qfactor-фактор

Qp фактором между Р- и I-кадром

B_qoffset смещение

Qp смещение между P- и B-кадром

I_qoffset смещение

Qp смещение между Р- и I-кадром

Rc_eq уравнения

Установить курс управления уравнение (по умолчанию = "text ^ qComp").

Rc_override переопределить

Контроль переопределение скорости в определенные промежутки времени

Me_method метод

Установить метод оценки движения к методу. Доступные методы

(От самого низкого до самого лучшего качества):

Zero

Попробуйте просто (0, 0) вектор.

Phods

Epzs

(По умолчанию метод)

Full

Исчерпывающий поиск (медленно и незначительно лучше, чем epzs)

Dct_algo алгоритм

Установить DCT алгоритм. Возможные значения:

0 FF_DCT_AUTO (по умолчанию)

1 FF_DCT_FASTINT

2 FF_DCT_INT

3 FF_DCT_MMX

4 FF_DCT_MLIB

5 FF_DCT_ALTIVEC

Idct_algo алгоритм

Установить IDCT алгоритм. Возможные значения:

0 FF_IDCT_AUTO (по умолчанию)

1 FF_IDCT_INT

2 FF_IDCT_SIMPLE

3 FF_IDCT_SIMPLEMMX

4 FF_IDCT_LIBMPEG2MMX

5 FF_IDCT_PS2

6 FF_IDCT_MLIB

7 FF_IDCT_ARM

8 FF_IDCT_ALTIVEC

9 FF_IDCT_SH4

10 FF_IDCT_SIMPLEARM

Er n

Установить устойчивость к ошибкам n:

1 FF_ER_CAREFUL (по умолчанию)

2 FF_ER_COMPLIANT

3 FF_ER_AGGRESSIVE

4 FF_ER_VERY_AGGRESSIVE

Ec bit_mask

Установить маскировки ошибок в bit_mask. bit_mask маски имеют

Следующие значения:

1 FF_EC_GUESS_MVS (по умолчанию = включено)

2 FF_EC_DEBLOCK (по умолчанию = включено)

Bf кадров

Используйте "frame" B-кадрах (поддерживаются MPEG-1, MPEG-2 и MPEG-4).

Mbd режим

Решения макроблоков

0 FF_MB_DECISION_SIMPLE: Используйте mb_cmp (не может изменить его еще в mmpeg).

1 FF_MB_DECISION_BITS: Выберите один, требующий меньшее количество

Бит.

2 FF_MB_DECISION_RD: соотношение сигнал-шум

Используйте четыре вектора движения на макро блоки (только MPEG-4).

Part

Использование секционирования данных (только MPEG-4).

Bug параметра

Обходить ошибки кодировщика, которые автоматически не обнаружены.

Strict строгости

Как строго следовать стандартам.

Включить расширенные внутри кодирования (h263 +).

Включить Неограниченные векторы движения (h263 +)

Deinterlace

Deinterlace фотографии.

Ilme

Группа поддержки в переплетении кодера (только MPEG-2 и MPEG-4). Используйте

Эту опцию, если входной файл с чересстрочной разверткой или вы хотите сохранить

Чересстрочный формат с минимальными потерями. Альтернативой является

Деинтерлейсинг входного потока с -deinterlace, но деинтерлейсинга

Вводит потерь.

Vstats

Дамп кодирования видео статистики vstats_HHMMSS.log.

Vstats_file файл

Дамп кодирования видео статистики в файл.

Top N

Вверху = 1/bottom = 0/auto =- 1 поле первое

Dc точности

Intra_dc_precision.

Vtag FourCC / теги

Вызовите видео теги / FourCC.

Qphist

Показать QP гистограммы.

Vbsf bitstream_filter

Bitstream_filter являются:

Dump_extra

Remove_extra

Noise

H264_mp4toannexb

Imxdump

Mjpegadump

*Аудио Функции*

Aframes aframes

Установить число кадров аудио записи.

Ar частота

Установите частоту дискретизации звука (по умолчанию = 44100 Гц).

Ab битрейт

Установить аудио битрейт в бит / с (по умолчанию = 64K).

Aq Q

Установите качество звука (кодек конкретных, VBR).

Ac каналы

Установите число аудио каналов (по умолчанию = 1).

An Отключить запись звука.

Acodec кодек

Группа аудио кодек для кодека. Используйте "copy" особое значение для указания

Что RAW Codec данные должны быть скопированы, как есть.

Newaudio

Добавить новую звуковую дорожку в выходной файл. Если вы хотите задать

Параметров, сделать это до надо примерно так: "-newaudio" ("-acodec", "-ab" и т.д..).

Отображение будет сделано автоматически, если количество выходных потоков

Равна числу входных потоков, иначе он будет выбирать до первого совпадения.

Вы можете изменить отображение с помощью "-map"

Как обычно.

Пример:

FFmpeg -i file.mpg -vcodec copy -acodec AC3 -ab 384k test.mpg -acodec MP2

Ab 192K -newaudio

Alang-код

Установите ISO 639 код языка (3 буквы) текущего аудио

Поток.

Advanced Audio вариантов:

Atag FourCC / теги

Группа тэг аудио / FourCC.

Absf bitstream_filter

Bitstream_filter являются:

Dump_extra

Remove_extra

Noise

Mp3comp

Добавлены возможности:

Scodec

Группа кодеков субтитров ("copy", чтобы скопировать поток).

Newsubtitle

Добавить новый поток субтитров на текущий выходной поток.

Alang код

Установите ISO 639 код языка (3 буквы) из текущей строки

Потока.

Sn Отключение записи субтитров.

Sbsf bitstream_filter

Bitstream_filer являются:

Mov2textsub

Text2movsub

Ffmpeg -i file.mov -an -vn -sbsf mov2textsub -scodec copy -f rawvideo sub.txt_

* Аудио / Видео варианты захвата*

Vc канал

Установить канал видео захвата (только DV1394).

Tvstd стандарт

Установите телевизионный стандарт (NTSC, PAL (SECAM)).

Isync

* Дополнительные параметры:*

Map input_stream_id [: sync_stream_id]

Установить поток отображение входных потоков в выходные потоки. Просто enu

Merate входных потоков в порядке, вы хотите их на выходе.

Sync_stream_id если указанные множества входного потока для синхронизации против.

Map_meta_data OUTFILE: INFILE

Перенос мета-данных информации от INFILE в OUTFILE.

Debug

Печатать конкретную информацию отладки.

Benchmark

Показать сравнения информации в конце кодирования. Показывает процессор

Время используются и максимальное потребление памяти. Максимальный объем памяти потребления,

(не поддерживается на всех системах). Если он не поддерживается выдается как 0.

Dump

Дамп каждого входного пакета.

Используется когда нужен сброс пакетов, а также свалки полезной нагрузки.

Bitexact

Используется только немного точные алгоритмы для тестирования кодека.

Ps Размер

Установить RTP размер полезной нагрузки в байтах.

Устройства.

Loop_input

Цикл для входного потока. В настоящее время он работает только для потоков

Изображений. Эта опция используется для автоматического тестирования ffserver.

Loop_output number_of_times

Неоднократные петли выхода для форматов, которые поддерживают циклы, таких как

Аминирование GIF (0 будет петли выхода бесконечно).

Threads кол

Нити

VSync параметр

Видео метод синхронизации:

0 Каждый кадр и его метка передается от демультиплексора на мультиплексор

1 Кадры будут дублироваться и выбрасываться для достижения постоянной частоты кадров.

2 Кадры проходят через свои метки или выбрасываются чтобы предотвратить прохождение 2х

Кадров через одну метку.

1 Выбирает между 1 и 2 в зависимости от возможностей мультиплексора

Вы можете выбрать, из которого потока метки и они должны быть

Приняты. Вы можете оставить либо видео или аудио без изменений и синхронизации

Остальные поток (ов) к неизменным.

Async samples_per_second

Аудио метод синхронизации."Расширяет / сжимает" аудио поток в сеансе метки,

Значение максимального количества отсчетов в секунду, в которые звук изменялся.

Async 1 является частным случаем, где меняется только начальный аудио поток без

Каких-либо последующих изменений

Copyts

Копировать метки от входа до выхода.

Shortest

Готово кодировку при кратчайшие входного потока заканчивается.

Dts_delta_threshold

Timestamp разрыва дельта порога.

Muxdelay секунд

Установить максимальную задержку демультиплексированием-декодирования.

Muxpreload секунд

Установить начальную задержку демультиплексированием-декодирования.

Current файлов

Заданный файл содержит последовательность пары параметр = значение, по одному для каждой

Линии, с указанием последовательности вариантов, которые бы неудобно ложились

В командной строке. Строки, начинающиеся с символа ('#') хэш

Игнорируются и используются для комментариев. Проверьте ffpresets

Каталога в дереве FFmpeg источник примеров.

Текущих файлов указаны с "vpre", "apre", "spre", и "fpre"

Варианты. "Fpre" опция имеет имя файла из предустановленных вместо

Имя шаблона в качестве входных данных и может быть использован для любого вида кодека. Для

"Vpre", "apre", и "spre" опции, параметры, указанные в заданном

Файл применяются для выбранного кодека же типа,

Заданной опции.

Аргумент, передаваемый "vpre", "apre", и "spre" предустановленных параметров

Определяет заданный файл для использования в соответствии со следующими правилами:

Первый FFmpeg поиск файла с именем arg.ffpreset в каталогах

$ HOME / .ffmpeg, и в DATADIR определены во время конфигурации (обычно-

Союзника PREFIX / доли / FFmpeg) в таком порядке. Например, если аргумент

Является "libx264-макс", он будет искать файл libx264-max.ffpreset.

Если такой файл найден, то FFmpeg будет искать файл с именем

Codec_name-arg.ffpreset в вышеупомянутых каталогов, где

Codec_name это название кодека для которых предустановленных параметров файла

Будет применяться. Например, если вы выбираете видео кодек

"-Vcodec libx264" и использовать "vpre-макс", то он будет искать файл

Libx264-max.ffpreset.

@ Якорь {FFmpeg формула оценщика}

FFmpeg формула оценщика

При оценке строку контроля скорости, FFmpeg использует внутренние формулы

По оценке.

Следующие бинарные операторы доступны: "+", "-", "*", "/", "^".

Следующие унарные операторы доступны: "+", "-", "(...)".

Следующие инструкции доступны: "LD", "ST", "а".

Доступны следующие функции:

Sinh (х)

Cosh (х)

Tanh (х)

Sin (х)

COS (X)

Тan (х)

Atan (х)

Asin (х)

Acos (х)

Ехр (х)

Log (х)

Abc (X)

Squish (х)

Gauss (х)

Mod (х, у)

Mах (х, у)

Мin (х, у)

Eq (х, у)

Gte (х, у)

Gt (х, у)

Lte (х, у)

Lt (х, у)

Bits2qp (биты)

Qp2bits (QP)

Следующие константы доступны:

ITex

PTex

FCode

ICount

McVar

AvgQP

QComp

AvgIITex

AvgPITex

AvgPPTex

AvgBPTex

AvgTex

ПРИМЕРЫ

Видео и аудио захвата

FFmpeg можете захватить видео и аудио с устройств при условии, что вы укажете

Формат входных и устройства.

Ffmpeg -f OSS -i /dev/DSP -f video4linux2 -i /dev/video0 /tmp/out.mpg

Обратите внимание, что вы должны активировать права источника видеосигнала и канала до

Запуск ffmpeg с любой телезритель, таких как XawTV (

Sex.org / XawTV />) Герд Knorr. Вы также должны установить аудио записей

ING уровнях правильно с стандартного микшера.

X11 захвата

Ffmpeg -f x11grab -х CIF -i: 0,0 /tmp/out.mpg

Переменная среды.

Ffmpeg -f x11grab -х CIF -i: 0.0 +10,20 /tmp/out.mpg

0,0 представляет display.screen номер вашего сервера X11, так же как DISPLAY

Переменная среды. 10, X-смещение и 20 Y-смещение для

Захват.

Видео и аудио файлов формата преобразования

* FFmpeg можно использовать в любом из поддерживаемых форматов файлов и протоколов в качестве входных данных:

Примеры:

* Вы можете использовать YUV файлы в качестве входных данных:

Ffmpeg -i /tmp/испытание% d.Y /tmp/out.mpg

Она будет использовать файлы:

/ Tmp/test0.Y, / tmp/test0.U, / tmp/test0.V,

/ Tmp/test1.Y, / tmp/test1.U, / tmp/test1.V, и т.д. ..

У файлов использовать в два раза разрешение U и V файлов. Они сырья

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

Декодеров. Вы должны указать размер изображения с S-вариант, если

FFmpeg не может догадаться.

* Вы можете ввести от сырья файл YUV420P:

Ffmpeg -i /tmp/test.yuv /tmp/out.avi

Test.yuv это файл, содержащий сырья плоских YUV данных. Каждый кадр COM-

Поставленные в плоскости Y следуют U и V самолетов на половине вертикальной

И горизонтальное разрешение.

* Вы можете вывести на сырье файл YUV420P:

Ffmpeg -i mydivx.avi hugefile.yuv

* Вы можете установить несколько файлов входных и выходных файлов:

FFmpeg -i /tmp/a.wav -х 640x480 -i /tmp/a.yuv /tmp/a.mpg

Конвертирует аудио a.wav файл и сырья видео YUV файл a.yuv в MPEG

Файл a.mpg.

* Вы также можете сделать аудио-и видео-преобразования в то же время:

Ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2

Преобразует a.wav аудио MPEG при частоте дискретизации 22050 Гц.

* Вы можете кодировать несколько форматов в то же время и определить карту-

Пинг из входного потока в выходной потоки:

Ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0, 0:0 -map

Преобразует a.wav к a.mp2 при 64 кбит и b.mp2 в 128 кбит. '-map

Файл: индекс "указывает, какие входного потока используется для каждого выхода

Поток, в целях определения выходных потоков.

* Вы можете перекодировать расшифрованы VOB-файлы:

Ffmpeg -i snatch_1.vob -f AVI -vcodec MPEG4 -b 800к -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi

Это типичный пример копирования DVD; вход файл VOB,

Выходной файл AVI с MPEG-4 видео и MP3 аудио. Отметим, что в этом

Команда используется B-кадрах так MPEG-4 поток DivX5 совместимы, и

Республиканская партия размер составляет 300, что означает один внутри кадра каждые 10 секунд

29.97fps видеовход. Кроме того, аудиопоток MP3-кодированных так

Вам необходимо включить поддержку LAME, передав "- включить -libmp3lame" к

Настроить. Отображение особенно полезна для DVD транскодирования в

Получить желаемый язык аудио.

ПРИМЕЧАНИЕ: Чтобы увидеть поддерживаемых входных форматов, использование "FFmpeg-форматов".

* Вы можете извлекать изображения из видео, или создать видео из многих

Изображения:

Для извлечения изображений из видео:

Ffmpeg -i foo.avi -r 1 -s WxH -f -image2 Foo% 03d.jpeg

Это позволит извлечь один кадр в секунду из видео и будет

Выход их в файлы с именем Foo-001.jpeg, Фу-002.jpeg и т.д. Изображения будут

Быть пересчитаны для подходят новые значения WxH.

Если вы хотите извлечь только ограниченное число кадров, можно использовать

Выше команды в сочетании с -vframes или -t вариант, или в ком-

Бинации -ss начать извлечение из определенный момент времени.

Для создания видео из многих изображений:

Ffmpeg -f image2 -i -foo -%03d.jpeg -r 12 WxH foo.avi

Синтаксис "foo-03d.jpeg%" указывает на использование десятичной номер, состоящий

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

Это же синтаксис поддерживается функция Е С, но только форматы

Принимать нормальные целое подходят.

* Вы можете поместить много потоков того же типа, на выходе:

Ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy

Acodec copy test12.avi -newvideo -newaudio

В дополнение к первым видео и аудио потоков, в результате выхода

Test12.avi файл будет содержать второе видео и второй аудио

Поток найти в списке входных потоков.

"Newvideo", "-newaudio" и "-newsubtitle" варианты должны быть

Указанного сразу после имя выходного файла, в который вы

Хотите добавить их.

ТАКЖЕ

Ffserver (1), ffplay (1) и документации HTML из FFmpeg.