archiver 2015/04/24 18:50
FFmpeg - набор свободных библиотек с открытым исходным кодом, которые позволяют записывать, конвертировать и передавать цифровые аудио и видеозаписи в различных форматах. Он включает libavcodec - библиотеку кодирования и декодирования аудио и видео и libavformat - библиотеку мультиплексирования и демультиплексирования в медиа контейнер. Название происходит от названия экспертной группы MPEG и FF, означающего Fast Forward. FFmpeg разработан под ОС на основе Linux, однако может быть скомпилирован под многие другие операционные системы. Разработчики не выпускают релизов и рекомендуют использовать последнюю версию из Git. Распространяется под лицензиями GNU LGPL или GNU GPL.
По этой ссылке указаны общие, но полезные сведения по параметрам и кодированию FFmpeg: Useful FFMPEG info, некоторые из них могут быть уже устаревшими - проект развивается.

Установка и компиляция FFmpeg на Ubuntu

В первую очередь стоит обратить внимание на то, что программа FFmpeg с некоторых пор отсутствует в репозиториях Ubuntu. Вместо неё в репозиториях находится программа Libav, носящая по инерции название FFmpeg и являющаяся форком (ответвлением) группы разработчиков. Подробнее об этом можно прочитать здесь Продолжающийся конфликт между FFmpeg и Libav мешает развитию обоих проектов. Всё это привело к тому, что в этих программах синтаксис управления и возможности несколько отличны. Данная же статья описывает синтаксис управления именно программы FFmpeg. Информация о продукте Libav находится по этому адресу - Libav.
CompilationGuideUbuntu - рекомендуемое разработчиками FFmpeg руководство по компиляции программы для ОС Ubuntu:
Это руководство применимо для всех поддерживаемых выпусков Ubuntu, Debian, Linux Mint и предоставляет локальную установку последних инструментов и библиотек FFmpeg, в том числе несколько внешних библиотек кодирования и декодирования (кодеков). Это не будет мешать основным пакетам репозитория. Руководство предоставит вам информацию об установки и компиляции последней версии FFmpeg и некоторых внешних библиотек кодирования и декодирования: fdk-aac (AAC encoder), libfaac (AAC encoder), libmp3lame (MP3 encoder), libopencore-amr (AMR encoder/decoder), librtmp (for additional RTMP protocols), libtheora (Theora encoder), libvorbis (Vorbis encoder), libvpx (VP8 encoder/decoder), and libx264 (H.264 encoder). Не все из этих библиотек являются обязательными и могут быть опущены, если это необходимо.
Вы также можете обратиться к руководству Generic FFmpeg Compilation Guide, для получения дополнительной информации при самостоятельной компиляции проекта. Эта страница содержит некоторые общие указания, начиная с исходного кода пакета под UNIX и так же его производных. Обратите так же внимание, что основные принципы являются общими для большинства дистрибутивов Linux/Unix и MinGW.
Разработчики FFmpeg рекомендуют использовать только последние версии п.о. О выходе последней статической сборки (билда) можно узнать на сайте FFmpeg.org в разделе страницы FFmpeg Releases. На данный момент актуальна версия: FFmpeg 3.3.2 "Hilbert".
Последний статический билд (сборка), также доступен и для ленивых людей и для тех, кто не владеет навыками сборки пакетов. Статический билд ограничен в элементах и не поддерживает несвободные кодеры.
Проекты и программы основанные на FFmpeg: FFmpeg-Based Projects; FFmpeg WikiStart: FFmpeg.org-wiki. Альтернативные ссылки на релизы FFmpeg и FFmpeg GUIs/Frontends: videohelp.com-ffmpeg; FFmpeg-Ubuntu-GUI traGtor

  • Для любителей репозиториев, - установка не официального, но рекомендованного разработчиками репозитория:
sudo add-apt-repository ppa:mc3man/trusty-media && sudo apt-get update 
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8E51A6D660CD88D67D65221D90BD7EACED8E640A
sudo apt-get install ffmpeg 

Следите за более новыми сборками для репозитория по этой ссылке: Canonical Group Ltd (GB) - launchpad.net … Так же смотрите страницу оригинального сайта ffmpeg.org, в разделе Downloads, для Ubuntu - http://ffmpeg.org/download.html#build-linux

Управление FFmpeg через терминал

  • Вызов мануала по FFmpeg:
man ffmpeg
Сохранение мануала в текстовый файл, где /user/ - имя вашего профиля в ubuntu. обычно это трактуется в терминале как user@computer:
man ffmpeg > /home/user/ffmpeg_man
  • Вызов справки помощи по FFmpeg, где < -h > - краткая справка помощи. < -h long > - длинная справка помощи. < -h full > - полная справка помощи:
ffmpeg -h full
Сохранение справки в текстовый файл:
ffmpeg -h full > /home/user/ffmpeg_fullhelp
  • Актуальны так же следующие некоторые опции, полный список которых можно узнать в начале краткой справки по FFmpeg <ffmpeg -h>:
ffmpeg -codecs -информация по возможным кодекам в FFmpeg
ffmpeg -decoders -информация по возможным декодерам в FFmpeg
ffmpeg -encoders -информация по возможным энкодерам в FFmpeg
ffmpeg -filters -информация по возможным фильтрам в FFmpeg
ffmpeg -pix_fmts -информация по возможным пиксельным форматам в FFmpeg

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

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

  • Строка FFmpeg состоит из нескольких принципиальных частей - это:

1. Команда вызова программы - ffmpeg
2. Входная часть строки - расположена до ключа < -i >. Примечательна тем, что некоторые ключи сильно зависят от их положения в этой части строки. Например ключ < -r > (rate) в качестве входного параметра работает совершенно по иному алгоритму, нежели в качестве выходного параметра (подробнее об этой особенности < -r > смотрите в разделе Применение).
3. Опция ввода - обозначается ключом < -i > (input). Как правило указывает входные файлы с путями их расположения на носителе. Или входные устройства, драйвера и протоколы для записи аудио и видео. Параметры находящиеся в строке после ключа < -i > в большинстве своём, считаются выходными.
4. Основные (предварительные) параметры - их можно ещё назвать как глобальные параметры, которые характеризуются в AVOption как опции < generic > и которые располагаются до установки предпочитаемого кодека и его параметров для кодирования видео или аудио. В качестве основных, могут выступать параметры установок пиксельных форматов < -pix_fmt >, опции ресайзинга (изменения размеров кадра), опции образцовых и дисплейных аспектов, выходная опция выше озвученного рейта < -r >, опция формата файла, типа < -f avi >, опции видеофильтра типа < -vf scale > - и прочее.
5. Параметры кодека для видео - начинаются с установки предпочитаемого кодека для кодирования видео < - vcodec > и продолжаются до окончания перечисления устанавливаемых вами параметров, относящихся к видеокодеку, включая опцию < -x264opts > (подробнее в таблице сравнения параметров ffmpeg и x264 и в таблице для кодека x264) и её параметры синтаксиса из самого кодека x264. Опции видеофильтра < -vf > должны располагаться либо в этой части строки либо в основных. Опции видеофильтра < -vf > расположенные в части строки для кодирования аудио - работать не будут.
6. Параметры кодека для аудио - начинаются с установки предпочитаемого кодека для кодирования аудио < - аcodec > и продолжаются до окончания перечисления устанавливаемых вами аудиопараметров, относящихся к аудиокодеку. Опции аудиофильтра < -аf > должны располагаться здесь же. Опции аудиофильтра расположенные в разделе строки для видео - работать не будут.
7. Опция вывода - указывает выходной путь и имя для результирующего файла.
В принципе, многие параметры могут работать и при другом их расположении в строке кодирования, но подобная организация делается для удобства пользователя, что бы избежать хаоса, путаницы и некоторой части загадочных вопросов на тему - почему что-то не работает, ведь вроде бы всё правильно ;-)
Тем не менее некоторые основные части строки указанные выше - являются принципиальными, такие как - команда вызова программы, вход строки, ввод, видео, аудио, вывод…

  • Схематически это всё будет выглядеть так:
1.[ffmpeg] 2.[input option] 3.[input file] 4.[main-input-param,-vf] 5.[vcodec,video param] 6.[acodec,audio param,-af] 7.[output file]

Правило: цепочки фильтров формируются в строке через запятую, без пропуска - пример: -vf filter1=value,filter2=value… то же и для -af filter

  • Та же строка но с примерами, наглядно:
1.[ffmpeg] 2.[-r 25(?)] 3.[-i /home/usr/video.mkv] 4.[-pix_fmt yuv420p -vf scale=800:448:flags=bicubic -s 800x448 -sar 1:1 -aspect 16:9 -f avi] 5.[-c:v libx264 -profile high -x264-params input-range=pc:range=pc -b 2000K -g 250 -bf 2 -keyint_min 25 -qmin 1 -i_qfactor 1.00] 6.[-c:a ac3 -ac 2 -b:a 256K -ar 48000 -af filter] 7.[/home/usr/video_out.avi]
  • Если вы кодируете в x264, то основным параметром после установки кодека < -vcodec libx264 >, должна быть установка профиля кодирования - < -profile high >. От установки профиля будет зависеть то, какие именно опции смогут быть задействованы кодером автоматически или вами вручную, а какие - опущены. Подробнее смотрите ниже, в таблице для кодека x264, в графе profile. После установки профиля кодирования в x264 у вас будет актуально правило: Если вы не зададите какого-нибудь ключа и параметра кодирования, то кодер выставит его автоматически на основании анализа видео, включая умолчания. Если вы хотите, что бы ключ кодирования имел именно тот параметр, который хотите вы, то ключ придётся установить (прописать), например < -qdiff 1 > (по умолчанию будет < -qdiff 4 >) и т.п. - но возможность установки того или иного параметра зависит так же от задействованного профиля кодирования.

Основные и дополнительные ключи параметров FFmpeg

Полный список основных и дополнительных опций можно посмотреть здесь: FFmpeg All, Main Options, Advanced Options, Advanced Video Options, Advanced Audio Options, Advanced Subtitle Options.
Так же в FFmpeg существуют AVOption. AVOption - это опции, которые предоставляются непосредственно в libavformat, libavdevice и библиотеками кодеков. AVOption делятся на два типа:
<generic> - Могут быть установлены для любого контейнера, кодека или устройства. К ним можно отнести большинство Main и Advanced опций.
<private> - Параметры типа id3v2 и пр. которые являются специфическими (приватными) для соответствующего контейнера, устройства или кодека. Частные опции так же могут быть перечислены в их соответствующих контейнерах, устройствах и кодеках. Например, чтобы написать заголовок ID3v2.3 вместо умолчательного ID3v2.4 к MP3-файлу, используйте < id3v2_version >, как личную возможность MP3 - мультиплексора, - смотрите главу Ключи параметров ffmpeg для Аудио, параграф 8. Работа с MP3 тегами.

Main + Advanced Option:

КлючПримерОписание
-i <filename> -i movie.avi Путь/имя входного файла. Без установки параметров обработки означает информацию о входном файле
-f <format> -f matroska Формат входного/выходного файла
-r <fps> -r 23.976 Количество кадров в секунду.
В качестве входного параметра игнорирует любые временные метки хранящиеся в файле, - используется для ускорения или замедления видеопотока (например 23.976 > 25 fps).
В качестве опции вывода, - дублирует или удаляет кадры для достижения заданной параметром частоты кадров, скорость воспроизведения видеопотока остаётся при этом неизменной. (Смотрите в разделе применение)
Альтернативные опции по установке функции < -r > смотрите здесь Video rate
-s <size> -s 720×400 Установка размера видеокадра - Pixel Aspect Ratio (PAR) - Установка Пиксельного Соотношения Сторон (соотношение сторон кадра измеряемое в пикселях) см. одноимённую графу в таблице для кодека x264. Так же возможна установка опции Video size - например < -video_size vga >, которая подразумевает установку размеров видеокадра в соответствии с видеостандартами.
-b <integer> -b 200K ABR - Average BitRate. Установка базового (усреднённого) битрейта, - уровня потока данных видео или аудио в секунду. Измеряется в килобитах или мегабитах в секунду (Kb/s),(Mb/s) задаётся в строке с буквой K или M, например: < -b 2000K > или оно же < -b 2M >. Если не проставить букву K, то кодер будет кодировать материал ссылаясь на биты - 2000 = 2000Bit, что очень мало для визуально-приличного качества. По этому - важно обратить внимание на этот нюанс. При кодировании, рекомендуется выставлять значение битрейта, если не используются другие опции влияющие на уровень битрейта. Это предпочтение характеризуется тем, что по умолчанию уровень битрейта для кодирования любительского или поточного видео в FFmpeg - достаточно низок. Подробнее смотрите ту же графу -b в таблице для кодека x.264, включая графы crf и qp.
<stream spec> Спецификатор потоков. Обычно добавляется к имени опции и отделен от него двоеточием. Возможные формы обозначения спецификаторов потока: <stream_index> - например опция < -c:a:1 ac3 >, где <1> будет означать второй аудиопоток. Отсутствие спецификатора < -c:a ac3 > будет означать кодирование для всех имеющихся потоков. <stream_type> - означает конкретизацию потоков по их отношению к контенту (содержимому), например: -c:v - для видео, -c:a - аудио -c:s - субтитры -c:d - данные. Варианты также смотрите ниже в этой таблице. <p:program_id> < -c:a:p:1 ac3 > - принудительная установка обозначения программного потока, который обычно отображается в mediainfo как <0> для видео и как <1> для аудио.
-b:v, -b:a Псевдонимы опции -b конкретизирующие тип потока (видео или аудио) - актуально для последних версий FFmpeg. Не актуально для кодирования в Libav.
-ss <position> -ss 00:10:50 Метка для начальной позиции кодирования. Во избежание подвисаний в попытках поиска алгоритмом метки по файлу, будет лучше установить этот параметр на входе, до ключа < -i >. Так как в большинстве форматов невозможно искать позицию точно, поэтому FFmpeg будет стремиться искать ближайшую точку до заданного положения. Параметр задаётся в формате времени - hh:mm:ss[.xxx], или в секундах. Для более точной «резки» видеофайл лучше разжать предварительно, в raw или lossless формат.
-accurate_seek Эта опция включает или отключает точный поиск метки во входных файлах с установленной опцией < -ss >. Точный поиск включен по умолчанию, поэтому опция < -ss > ищет c повышенной точностью при транскодировании. Используйте опцию < -noaccurate_seek >, чтобы отключить точный поиск, что может быть полезно, например, при копировании некоторых потоков или транскодировании других.
-t <position> -t 00:15:10 Конечная позиция кодирования
-vframes <n> -vframes 1000 Задаем количество кадров кодирования
-vcodec <value> -c:v libx264 Установка кодека для кодирования видео, где < -c:v > псевдоним для опции <vcodec>, не актуален для Libav.
-acodec <value> -c:a ac3 Установка кодека для кодирования аудио, где < -c:a > псевдоним для опции <acodec>, - не актуален для Libav.
-scodec <value> -c:s dvbsub Установка кодека для кодирования субтитров, где < -c:s > псевдоним для опции <scodec>, - не актуален для Libav.
-intra -intra Кодирование в режиме (Intra) интра-кадров. То же самое что и GOP=1 < -g 1 >. Подробнее о GOP смотрите ниже, включая графу в таблице кодека x264
-qscale -qscale 1 Использует фиксированную шкалу качества (VBR), где <1> - высшее качество по шкале
-q -q 1 Псевдоним для < -qscale > см. выше-ниже … -q:v - для видео, -q:a - для аудио. Чем меньше значение, тем выше качество.
-sameq -sameq Сохранить видео в том же качестве. Является устаревшей опцией и иногда вместо неё приходится вводить < -qscale 0 >
-y -y Разрешить перезапись выходного файла без запроса на подтверждение
-n -n Запретить перезапись выходного файла
-vn -vn Не кодировать видео
-an -an Не кодировать аудио
-sn -sn Не использовать субтитры
-dn -dn Не использовать data-данные
-vlang <code> -vlang eng Выбираем язык видео
-alang <code> -alang jpn Выбираем язык аудио
-slang <code> -slang rus Выбираем язык субтитров
-vsync Способ синхронизации видео при мультиплексации (сведении) аудио и видеодорожек. Имеет опции: < -vsync 0 > - сквозной метод, 1 кадр в секунду, где каждый кадр передается с меткой времени от демультиплексора на мультиплексор. < -vsync 1, cfr > - кадры будут дублироваться или опускаться (выбрасываться), чтобы добиться именно заданной постоянной частоты кадров. < -vsync 2, vfr > - кадры проводятся через их временные метки или опускаются так, чтобы предотвратить 2 дублированных кадра в пределах одной и той же временной метки. < -vsync drop > - то же что и сквозной, но уничтожает все метки, заставляя мультиплексор генерировать свежие метки на основе частоты кадров. < -vsync -1, auto > - выбирает между 1 и 2 в зависимости от возможностей мультиплексора - используется по умолчанию. С установленной опцией < -map > можно будет выбрать, из какого потока берутся временные метки. Вы можете оставить либо видео или аудио без изменений и синхронизировать только один из потоков, оставив другой неизмененным.
-аsync Способ синхронизации аудио. Является устаревшей опцией. Разработчики рекомендуют фильтр aresample < -af aresample=async=1000 > - подгонка 1000 сэмплов (выборок) в секунду для растяжения или сжатия звука в соответствии временным меткам, - т.е. кодер будет раз в секунду делать попытку синхронизации аудиопотока с выборкой в 1000 произвольных частей звуковой волны, согласно установленным временным меткам (25 кадр/сек или 30 кадр/сек - и т.д.)
-vf filter=value Опция установки видеофильтра
-аf filter=value Опция установки аудиофильтра
-intra_matrix <code> Установка матрицы кодирования I-кадров (опорных, интра-кадров) для mpeg2video - см. ниже в разделе для mpeg-2
-inter_matrix <code> Установка матрицы кодирования P,B-кадров (внутренних интер-кадров) для mpeg2video - см. ниже в разделе для mpeg-2
-itsoffset <offset> Установка задержки одного потока относительно другого - аудио относительно видео, например: ffmpeg -i /home/user/video.mkv -itsoffset 00:00:00.500 -i /home/user/video.mkv -vcodec copy -acodec copy -map 0:0 -map 1:1 /home/user/video_out.mkv - сдвигает (задерживает) аудиопоток относительно видеопотока на 500 миллисекунд. Можно установить минус перед таймкодом, тогда поток аудио будет опережать видео на те же 500 миллисекунд.
-metadata Устанавливает метаданные в файл, в паре ключ=значение. Например: FFmpeg -metadata title=«мой титул». Для удаления метаданных достаточно выставить title пустым, например: -metadata title=«». Актуальны так же следующие опции: artist=«артист», album=«название альбома», title=«название трека», genre=«жанр», track=«номер трека», date=«дата выхода альбома». ffmpeg -i /home/user/audio.wav -metadata artist=«Gipsy Kings» -metadata title=«Bambolero» -metadata album=«Greatest Hits» -acodec libmp3lame -q:a 1 -b:a 128k -f mp3 /home/user/audio.mp3
Дополнительную информацию по опциям < -metadata > можно посмотреть в главе кодеки и енкодеры FFmpeg для аудио параграф 8. Работа с MP3 тегами.
-target Устанавливает тип стандарта видеофайла (VCD,SVCD,DVD,DV,DV50,PAL-VCD,NTSC-SVCD - и т.п.). Все параметры форматов, такие как битрейт, кодеки, размеры буферов и пр. при этом устанавливаются автоматически, соответственно выбранному стандарту. Вы можете просто указать тип.
-deinterlace -deinterlace Включаем опцию деинтерлейсинга. Эта опция устарела, поскольку деинтерлейсинг очень низкого качества. Используйте опцию yadif из ассортимента видеофильтров ffmpeg: < -vf yadif=value >, смотрите также главу данного мануала Полезные фильтры -vf,-af, параграф 6. Yadif
-concat Concatenate - связывать, сцеплять. Функция сложения (склеивания) фрагментов видео в один цельный ролик (фильм). Смотрите пример в главе статьи работа в ffmpeg с форматами mpeg-2 и DVD, параграф - 2. Работа с DVD директориями и файлами типа *.vob
-loop -loop 1 Опция зацикливания входного потока. Например для создания анимации изображений в формате gif.
-threads <threads> -threads auto Включение количества потоков кодирования для видео - ускоряет процесс кодирования видео. Лучше оставить значение по умолчанию и отдать определение числа потоков кодеру. Опция актуальна для многоядерных процессоров и для программ, использующих многопоточность. Подробнее смотрите ниже в таблице для кодека x264 в графе < -threads >
-pix_fmt <stream_spec> -pix_fmt yuv444p Установка пиксельного формата. Используйте команду < ffmpeg -pix_fmts > в терминале, чтобы показать все поддерживаемые пиксельные форматы. Если формат пиксел-матрицы не может быть выбран из-за совместимости, то ffmpeg выдаст предупреждение. Если pix_fmt имеет префикс +, то ffmpeg завершится с ошибкой, при условии что запрашиваемый пиксел-формат не может быть выбран и автоматическое преобразование внутри графического фильтра отключено. Внимание! - некоторые старые версии ffmpeg и libx264 работают только с 4:2:0 пиксельным форматом (yuv420), так же как и некоторые плейеры не воспроизводят пиксел-форматы выше чем 4:2:0 и 4:2:2, по этому если у вас на входе 4:4:4 пиксел-матрица (формат), то необходимо задать опцию преобразования формата к совместимому с libx264, пример: -pix_fmt yuv420p или -vf format=yuv420p .. Подробнее об пиксел-форматах видео см. wiki-Цветовая субдискретизация
-vf scale in_range:out_range Функция от видеофильтра, с использованием опций фильтра scale - in_range:out_range - для установки или коррекции цветовых диапазонов входного видеофайла. Опция может работать с входными raw и lossless файлами, до установки предпочитаемого кодека. Примеры и подробности смотрите в главе Полезные фильтры -vf, -af, в конце параграфа 1. Работа с чёрными полями кадра средствами ffmpeg

Ключи параметров FFmpeg для Видео

Вступление:
Данные настройки необходимы для более точного задания характеристик выходного видео. Желательно использовать, только если вы уже знакомы с основами кодирования, иначе есть вероятность сделать выходное видео только хуже. Но темне менее, для тех кому приступы любознательности и шаловливые ручки не оставляют особого выбора, мы попробуем в данной статье развить вопрос о том, что же такое цифровое видео, кодирование и как с ним работать примененяя опции и возможности консольного кодировщика FFmpeg. Для начинающих рекомендовано сперва ознакомится со статьями: Видео; Медиаконтейнер. К тому же, некоторые необходимые ссылки на сопутствующие и полезные статьи, будут указываться в тексте по ходу толкования. Параллельно читайте и изучайте их.

кодеки и энкодеры для видео, без потерь (lossless)

FFV1 - означает «FF видеокодек 1», представляет собой видеокодек без потерь внутри кадра. Он может использовать кодирование с переменной длиной слова (vlc) или производить арифметическое кодирование (ac) для энтропийного кодирования. Кодер и декодер являются частью бесплатной библиотеки libavcodec с открытым исходным кодом в проекте FFmpeg с июня 2003 года.
FFV1 version 1
Параметры кодирования для первой версии:

Level     < -level >   - Версия кодера (уровень)        - < 1,3 >, где 1 = версия 1, 3 = версия 3 (по ум. = 1)
Сoder     < -coder >   - Используемый тип кодера        - < 0,1 >, где 0 = Golomb Rice, 1 = Range Coder
Сontext   < -context > - Используемый кадровый контекст - < 0,1 >, где 0 = small, 1 = large 
GOP size  < -g >       - Размер кадровой GOP-структуры  - (по ум. = 1)

Так же по тематике смотрите: Коды Голомба, Экспоненциальный код Голомба, Интервальное кодирование (Range encoding)
Пример строки кодирования:

ffmpeg -i /home/user/video-in.avi \
-vcodec ffv1 -level 1 \
-coder 1 \
-context 1 \
-g 1 \
/home/user/video-out.avi

FFV1 version 3
Параметры кодирования, специфичные для третьей версии:

Threads    < -threads >     - Потоки кодирования (нити)                  - (по ум. = в зависимости от ядер прецессора)
Slices     < -slices >      - Разбиение потока на части при кодировании  - допустимо: < 4,6,9,12,16,24,30 >
Error      < -slicecrc >    - Детектор/корректор ошибок частей           - < 0,1 >, где 0 = отключено, 1 = включено. Опция добавляет информацию CRC на каждый фрагмент (slice). 
Это позволяет декодеру обнаруживать ошибки в потоке, а не слепо декодировать сломанный срез. 
Multi-pass < -pass >        - Выставление числа проходов для кодирования - < 1,2 >
Logfile    < -passlogfile > - Префикс журнала логов первого прохода                       - 

Немного теории - gop
GOP Settings – для удобства кодирования видеоданных, при использовании энкодеров и кодеков с потерями (lossy), весь видеопоток разбивается на группы, называемые GOP (Group of Pictures - группой изображений), которые состоят из I,P,B типов кадров, подробнее wiki-Типы кадров . Структуру GOP обычно описывают в виде дроби M/N, для которой: M сообщает общее число кадров в GOP, а N - каким по счету будет очередной P кадр после предыдущего. GOP зависит от выставленного значения M Frames. Если сцены содержат частую смену освещения, быстрое движение, смены цветов, то лучше выбирать более короткую GOP. Для MPEG-2-PAL максимальное значение GOP (Group Of Pictures) - 15 кадров. Например, при импорте видео с GOP = 18 в программу Adobe Encore можно получить ошибку: «Sorry, an abnormal condition has been detected». Для DVD принято использовать структуру 15/3 (IBBPBBPBBPBBPBB) или 12/3 (IBBPBBPBBPBB) - то же самое для закрытого «closed» GOP 13/3 (IBBPBBPBBPBBP) - M=13, N=3. Чем больше длина GOP, тем сильнее сжатие, но увеличение длины GOP уменьшает качество материала. Для рипов DivX, XviD, mpeg4, x264.mkv - используется более свободный и независимый подход в отношении GOP, но тут так же становится важным - не «переборщить». Смотрите также тематическую статью wiki-Кадровая частота

кодеки и энкодеры с потерями (lossy) - аналоги ключей ffmpeg для x264

Аналоги основных ключей параметров кодирования ffmpeg для x264. Для просмотра полного списка параметров кодирования кодека x264, следуйте по ссылке в графе таблицы, - это один из лучших мануалов для x264.
FFmpeg ←→ x264:

Ключи параметров FFmpegАналоги ключей для libx264 Описание
-x264-params, -x264opts см. ниже
-profile profile см. ниже
-level level см. ниже
-b bitrate см. ниже
-bt ratetol см. ниже
-bufsize vbv-bufsize см. ниже
-maxrate vbv-maxrate см. ниже
-rc_init_occupancy vbv-init Начальное заполнение буфера VBV, переменного битрейта. Лучше не устанавливать эту опцию и отдать её в «руки» кодера
fullrange=on Опция включения полного диапазона цветности [0-255] для правильного определения цветности видео энкодером x264. Опция может не давать желаемых результатов, выставляя лишь сам флаг полной цветности, не проводя конкретного действия. Для корректировки этого бага автоопределения диапазона, опция в последних версиях ffmpeg дополнена двумя другими: < input-range > - конкретизирует входной диапазон, имеет значения - auto, pc, tv. И < range > - конкретизирует выходной диапазон, имеет те же значения - auto, pc, tv. Где, диапазон pc равен [0-255], а диапазон tv равен [16-255] - и, что бы видео не шло на выходе осветлённым используйте пары диапазонов tv → pc и pc → pc. Пример: < -x264-params input-range=pc:range=pc > или < -x264-params input-range=tv:range=pc >. Опции могут не работать при использовании ключа -x264opts.
input-range:range см. выше
-bf bframes см. ниже
-b_strategy b-adapt см. ниже
-b-pyramid b-pyramid см. ниже
-direct-pred direct см. ниже
-weightb weightb см. ниже
-weightp weightp см. ниже
-g keyint см. ниже
-keyint_min keyint-min cм. ниже
-qmin qpmin см. ниже
-qmax qpmax см. ниже
-i_qfactor ipratio см. ниже
-b_qfactor pbratio см. ниже
-qp qp см. ниже
-crf crf см. ниже
-qdiff qpstep см. ниже
-qcomp qcomp см. ниже
-cplxblur cplxblur см. ниже
-qblur qblur см. ниже
-refs ref см. ниже
-mixed-refs mixed-refs см. ниже
-mixed-refs 0 no-mixed-refs=1 отключение опции
-sc_threshold scenecut см. ниже
-trellis trellis см. ниже
-nr nr см. ниже
-chromaoffset chroma-qp-offset см. ниже
-pass pass см. ниже
-me_range merange см. ниже
-me_method me см. ниже
-cmp chroma-me см. ниже
-subq subme см. ниж