Меню Рубрики

Установка ffmpeg в линукс

Как Установить FFmpeg Linux (CentOS, Ubuntu, Arch)

FFmpeg — это универсальный мультимедийный кодекс, который может конвертировать аудио и видео в различные форматы. Он доступен как инструмент командной строки. FFmpeg поддерживает большинство аудио и видео форматов. Он также может редактировать и передавать мультимедийные файлы. Вот как установить FFmpeg на свой компьютер с Linux или VPS.

Вот некоторые другие функции FFmpeg, на которые вы можете рассчитывать:

  • Извлечение аудио из серии видеофайлов
  • Извлечение только видео, без аудио
  • Изменение размера видеофайлов
  • Обрезка существующих видео в меньший клип
  • Объединение видео
  • Конвертирование аудио и видео

Подсказка: если вы хотите знать, как установить FFmpeg на Linux VPS, подключитесь к вашей машине через ssh, прежде чем продолжить.

Помните, какую версию Linux вы используете, вы можете проверить, установлен ли FFmpeg или какая версия работает, с помощью следующей команды:

Типичный вывод этой команды будет выглядеть так, как показано ниже:

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

Установить FFmpeg 4 — последнюю версию — на Ubuntu 14.x и выше очень просто.

Мы установим FFmpeg из mc3man ppa. PPA означает Personal Package Archives (Персональные Пакеты Архивов), которые поддерживаются сообществом Ubuntu.

Чтобы добавить этот PPA, нам нужно выполнить:

После установки PPA перейдите к обновлению хранилища, выполнив:

Наконец, для установки ffmpeg нам нужно выполнить:

На этом установка ffmpeg завершена. Проверить версию можно с помощью следующей команды:

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

Чтобы установить FFmpeg в Debian 9 — Stretch, вам необходимо войти в систему как пользователь root. Пакет FFmpeg использует для установки менеджер пакетов apt. Он доступен в официальном репозитории Debian.

Сначала обновите список пакетов, используя:

После этого мы можем выполнить следующую команду для установки FFmpeg:

Если вы используете Debian 8 — Jessie, FFmpeg не будет доступен в официальном репозитории. Однако мультимедийный репозиторий Debian можно использовать для установки кодекса.

Нам нужно будет добавить мультимедийный репозиторий Debian. Чтобы добавить его, нам нужно отредактировать файл /etc/apt/sources.list. Этот файл содержит список репозиториев, которые использует APT. Для редактирования этого файла вы можете использовать редактор терминала, такой как nano или vi.

Откройте файл с помощью следующей команды и нажмите I (Insert), чтобы начать редактирование:

Добавьте строки, перечисленные ниже, в файл:

Чтобы сохранить изменения в редакторе vi, нажмите клавишу Esc. Для выхода из редактора нажмите: и выполните q!

Далее нам нужно будет установить пакет deb-multimedia-keyring. Сначала мы обновим, затем установим и обновим ещё раз. Это гарантирует, что все изменения правильно обновлены и отмечены.

Когда вы закончите, установите пакет FFmpeg, используя:

Чтобы проверить правильность установки в Debian, используйте следующую команду:

Как установить FFmpeg на CentOS, Fedora и RHEL

CentOS не предоставляет официальный репозиторий для установки FFmpeg. Его можно установить с помощью стороннего репозитория nux dextop yum.

Чтобы установить с помощью CentOS 7 или 6, обновите систему, используя:

В CentOS 7 и RHEL 7 используйте следующую команду:

В CentOS/RHEL 6/5 команда немного отличается и относится к другому хранилищу.

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

На этом установка завершена.

Чтобы установить FFmpeg в Fedora, используйте репозиторий RPMfusion. Если он не установлен, используйте эту команду:

Далее мы можем установить FFmpeg и его пакет разработки, используя менеджер пакетов DNF.

Вот и всё, вы успешно добавили FFmpeg на вашу виртуальную машину Fedora.

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

Для Arch Linux нам нужно использовать менеджер пакетов Pacman. Это репозиторий Arch Linux. Официальный репозиторий предоставит подробную информацию о том, какая версия доступна.

Для обновления БД мы можем использовать следующую команду:

Далее мы можем установить FFmpeg используя:

Чтобы отразить эти изменения, обновите систему, используя:

И вы сделали это! FFmpeg должен быть успешно добавлен на ваш компьютер Arch Linux. Чтобы проверить установку, выполните:

Заключение

Установка FFmpeg на компьютере с Linux проста и занимает всего несколько минут. Просто войдите в систему как пользователь root и следуйте инструкциям для вашей ОС. Каждый вариант Linux — Ubuntu, Arch Linux, Debian, CentOS/RHEL, Fedora — имеет небольшие различия при установке FFmpeg. Начните использовать этот мощный кодекс!

Автор

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

источник

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

FFmpeg — это одна из лучших мультимедийных платформ, которая содержит различные инструменты для различных задач.

Например, ffplay — это портативный медиаплеер, который можно использовать для воспроизведения аудио / видео файлов, ffmpeg может конвертировать файлы в разные форматы, ffserver может использоваться для потоковой трансляции в прямом эфире, а ffprobe может анализировать мультимедийный поток.

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

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

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

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

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

Позвольте мне привести пример, очень простой. Следующая команда преобразует ваш файл mp4 в простой файл avi.

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

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

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

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

Установите FFmpeg в Ubuntu и Linux Mint

Я установлю FFmpeg через PPA, рекомендованный в официальном блоге. Откройте новый терминал (CTRL + ALT + T) и затем выполните следующие команды.

Установите FFmpeg в Debian

Чтобы установить FFmpeg, сначала вам нужно добавить следующую строку в ваш файл /etc/apt/sources.list.

В соответствии с вашим дистрибутивом измените «mydist» на «stretch», «jessie» или «wheezy».

Затем обновите исходные коды системных пакетов и установите FFmpeg с помощью следующих команд.

Установите FFmpeg на CentOS и RHEL

Чтобы установить FFmpeg в дистрибутивах CentOS и RHEL, вам необходимо включить репозиторий EPEL и RPM Fusion в системе, используя следующие команды.

Чтобы установить и включить EPEL, используйте следующую команду.

Чтобы установить и включить RPM Fusion, используйте следующую команду в вашей версии дистрибутива.

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

Установите FFmpeg на Fedora

В Fedora вам нужно установить и включить RPM Fusion для установки FFmpeg, как показано на рисунке.

Компиляция FFmpeg из исходного кода

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

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

Во-первых, скажите системе, чтобы она разобрала последние пакеты.

Установите зависимости с помощью следующей команды.

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

Теперь скомпилируйте и установите ассемблер yasm, используемый FFmpeg, выполнив следующие команды.

После того, как вы успешно установили ассемблер yasm, пришло время установить несколько различных кодеков, которые будут использоваться с конкретными инструментами FFmpeg. Используйте следующие команды для установки видеокодера H.264.

Другим полезным полезным кодировщиком является аудиокодер libfdk-aac AAC.

Установите libopus аудио декодер и кодировщик.

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

Примечание. Если вы не установили определенные кодировщики, обязательно удалите ‘–enable-encoder_name‘ из вышеуказанной команды ‘./configure so, чтобы установка прошла без проблем.

Заключение

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

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

источник

FFmpeg

Содержание

— 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

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

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

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

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

1. Команда вызова программы — ffmpeg
2. Входная часть строки — расположена до ключа . Примечательна тем, что некоторые ключи сильно зависят от их положения в этой части строки. Например ключ (rate) в качестве входного параметра работает совершенно по иному алгоритму, нежели в качестве выходного параметра (подробнее об этой особенности смотрите в разделе Применение).
3. Опция ввода — обозначается ключом (input). Как правило указывает входные файлы с путями их расположения на носителе. Или входные устройства, драйвера и протоколы для записи аудио и видео. Параметры находящиеся в строке после ключа в большинстве своём, считаются выходными.
4. Основные (предварительные) параметры — их можно ещё назвать как глобальные параметры, которые характеризуются в AVOption как опции и которые располагаются до установки предпочитаемого кодека и его параметров для кодирования видео или аудио. В качестве основных, могут выступать параметры установок пиксельных форматов , опции ресайзинга (изменения размеров кадра), опции образцовых и дисплейных аспектов, выходная опция выше озвученного рейта , опция формата файла, типа , опции видеофильтра типа — и прочее.
5. Параметры кодека для видео — начинаются с установки предпочитаемого кодека для кодирования видео и продолжаются до окончания перечисления устанавливаемых вами параметров, относящихся к видеокодеку, включая опцию (подробнее в таблице сравнения параметров ffmpeg и x264 и в таблице для кодека x264) и её параметры синтаксиса из самого кодека x264. Опции видеофильтра должны располагаться либо в этой части строки либо в основных. Опции видеофильтра расположенные в части строки для кодирования аудио — работать не будут.
6. Параметры кодека для аудио — начинаются с установки предпочитаемого кодека для кодирования аудио и продолжаются до окончания перечисления устанавливаемых вами аудиопараметров, относящихся к аудиокодеку. Опции аудиофильтра должны располагаться здесь же. Опции аудиофильтра расположенные в разделе строки для видео — работать не будут.
7. Опция вывода — указывает выходной путь и имя для результирующего файла.
В принципе, многие параметры могут работать и при другом их расположении в строке кодирования, но подобная организация делается для удобства пользователя, что бы избежать хаоса, путаницы и некоторой части загадочных вопросов на тему — почему что-то не работает, ведь вроде бы всё правильно
Тем не менее некоторые основные части строки указанные выше — являются принципиальными, такие как — команда вызова программы, вход строки, ввод, видео, аудио, вывод…

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

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

Полный список основных и дополнительных опций можно посмотреть здесь: FFmpeg All, Main Options, Advanced Options, Advanced Video Options, Advanced Audio Options, Advanced Subtitle Options.
Так же в FFmpeg существуют AVOption. AVOption — это опции, которые предоставляются непосредственно в libavformat, libavdevice и библиотеками кодеков. AVOption делятся на два типа:
— Могут быть установлены для любого контейнера, кодека или устройства. К ним можно отнести большинство Main и Advanced опций.

— Параметры типа id3v2 и пр. которые являются специфическими (приватными) для соответствующего контейнера, устройства или кодека. Частные опции так же могут быть перечислены в их соответствующих контейнерах, устройствах и кодеках. Например, чтобы написать заголовок ID3v2.3 вместо умолчательного ID3v2.4 к MP3 -файлу, используйте , как личную возможность MP3 — мультиплексора, — смотрите главу Ключи параметров ffmpeg для Аудио, параграф 8. Работа с MP3 тегами.

Main + Advanced Option:

Ключ Пример Описание
-i -i movie.avi Путь/имя входного файла. Без установки параметров обработки означает информацию о входном файле
-f -f matroska Формат входного/выходного файла
-r -r 23.976 Количество кадров в секунду.
В качестве входного параметра игнорирует любые временные метки хранящиеся в файле, — используется для ускорения или замедления видеопотока (например 23.976 > 25 fps).
В качестве опции вывода, — дублирует или удаляет кадры для достижения заданной параметром частоты кадров, скорость воспроизведения видеопотока остаётся при этом неизменной. (Смотрите в разделе применение)
Альтернативные опции по установке функции смотрите здесь Video rate
-s -s 720×400 Установка размера видеокадра — Pixel Aspect Ratio (PAR) — Установка Пиксельного Соотношения Сторон (соотношение сторон кадра измеряемое в пикселях) см. одноимённую графу в таблице для кодека x264. Так же возможна установка опции Video size — например , которая подразумевает установку размеров видеокадра в соответствии с видеостандартами.
-b -b 200K ABR — Average BitRate. Установка базового (усреднённого) битрейта, — уровня потока данных видео или аудио в секунду. Измеряется в килобитах или мегабитах в секунду (Kb/s),(Mb/s) задаётся в строке с буквой K или M, например: или оно же . Если не проставить букву K, то кодер будет кодировать материал ссылаясь на биты — 2000 = 2000Bit, что очень мало для визуально-приличного качества. По этому — важно обратить внимание на этот нюанс. При кодировании, рекомендуется выставлять значение битрейта, если не используются другие опции влияющие на уровень битрейта. Это предпочтение характеризуется тем, что по умолчанию уровень битрейта для кодирования любительского или поточного видео в FFmpeg — достаточно низок. Подробнее смотрите ту же графу -b в таблице для кодека x.264, включая графы crf и qp.
> Спецификатор потоков. Обычно добавляется к имени опции и отделен от него двоеточием. Возможные формы обозначения спецификаторов потока: — например опция , где будет означать второй аудиопоток. Отсутствие спецификатора будет означать кодирование для всех имеющихся потоков. — означает конкретизацию потоков по их отношению к контенту (содержимому), например: -c:v — для видео, -c:a — аудио -c:s — субтитры -c:d — данные. Варианты также смотрите ниже в этой таблице.

— принудительная установка обозначения программного потока, который обычно отображается в mediainfo как для видео и как для аудио. -b:v, -b:a Псевдонимы опции -b конкретизирующие тип потока (видео или аудио) — актуально для последних версий FFmpeg. Не актуально для кодирования в Libav. -ss

-ss 00:10:50 Метка для начальной позиции кодирования. Во избежание подвисаний в попытках поиска алгоритмом метки по файлу, будет лучше установить этот параметр на входе, до ключа . Так как в большинстве форматов невозможно искать позицию точно, поэтому FFmpeg будет стремиться искать ближайшую точку до заданного положения. Параметр задаётся в формате времени — hh:mm:ss[.xxx], или в секундах. Для более точной «резки» видеофайл лучше разжать предварительно, в raw или lossless формат. -accurate_seek Эта опция включает или отключает точный поиск метки во входных файлах с установленной опцией . Точный поиск включен по умолчанию, поэтому опция ищет c повышенной точностью при транскодировании. Используйте опцию , чтобы отключить точный поиск, что может быть полезно, например, при копировании некоторых потоков или транскодировании других. -t

-t 00:15:10 Конечная позиция кодирования -vframes -vframes 1000 Задаем количество кадров кодирования -vcodec -c:v libx264 Установка кодека для кодирования видео, где псевдоним для опции , не актуален для Libav. -acodec -c:a ac3 Установка кодека для кодирования аудио, где псевдоним для опции , — не актуален для Libav. -scodec -c:s dvbsub Установка кодека для кодирования субтитров, где псевдоним для опции , — не актуален для Libav. -intra -intra Кодирование в режиме (Intra) интра-кадров. То же самое что и GOP=1 . Подробнее о GOP смотрите ниже, включая графу в таблице кодека x264 -qscale -qscale 1 Использует фиксированную шкалу качества (VBR), где — высшее качество по шкале -q -q 1 Псевдоним для см. выше-ниже … -q:v — для видео, -q:a — для аудио. Чем меньше значение, тем выше качество. -sameq -sameq Сохранить видео в том же качестве. Является устаревшей опцией и иногда вместо неё приходится вводить -y -y Разрешить перезапись выходного файла без запроса на подтверждение -n -n Запретить перезапись выходного файла -vn -vn Не кодировать видео -an -an Не кодировать аудио -sn -sn Не использовать субтитры -dn -dn Не использовать data-данные -vlang -vlang eng Выбираем язык видео -alang -alang jpn Выбираем язык аудио -slang -slang rus Выбираем язык субтитров -vsync Способ синхронизации видео при мультиплексации (сведении) аудио и видеодорожек. Имеет опции: — сквозной метод, 1 кадр в секунду, где каждый кадр передается с меткой времени от демультиплексора на мультиплексор. — кадры будут дублироваться или опускаться (выбрасываться), чтобы добиться именно заданной постоянной частоты кадров. — кадры проводятся через их временные метки или опускаются так, чтобы предотвратить 2 дублированных кадра в пределах одной и той же временной метки. — то же что и сквозной, но уничтожает все метки, заставляя мультиплексор генерировать свежие метки на основе частоты кадров. — выбирает между 1 и 2 в зависимости от возможностей мультиплексора — используется по умолчанию. С установленной опцией можно будет выбрать, из какого потока берутся временные метки. Вы можете оставить либо видео или аудио без изменений и синхронизировать только один из потоков, оставив другой неизмененным. -аsync Способ синхронизации аудио. Является устаревшей опцией. Разработчики рекомендуют фильтр aresample — подгонка 1000 сэмплов (выборок) в секунду для растяжения или сжатия звука в соответствии временным меткам, — т.е. кодер будет раз в секунду делать попытку синхронизации аудиопотока с выборкой в 1000 произвольных частей звуковой волны, согласно установленным временным меткам (25 кадр/сек или 30 кадр/сек — и т.д.) -vf filter=value Опция установки видеофильтра -аf filter=value Опция установки аудиофильтра -intra_matrix Установка матрицы кодирования I-кадров (опорных, интра-кадров) для mpeg2video — см. ниже в разделе для mpeg-2 -inter_matrix Установка матрицы кодирования P,B-кадров (внутренних интер-кадров) для mpeg2video — см. ниже в разделе для mpeg-2 -itsoffset Установка задержки одного потока относительно другого — аудио относительно видео, например: 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
Дополнительную информацию по опциям можно посмотреть в главе кодеки и енкодеры FFmpeg для аудио параграф 8. Работа с MP3 тегами. -target Устанавливает тип стандарта видеофайла (VCD,SVCD,DVD,DV,DV50,PAL-VCD,NTSC-SVCD — и т.п.). Все параметры форматов, такие как битрейт, кодеки, размеры буферов и пр. при этом устанавливаются автоматически, соответственно выбранному стандарту. Вы можете просто указать тип. -deinterlace -deinterlace Включаем опцию деинтерлейсинга. Эта опция устарела, поскольку деинтерлейсинг очень низкого качества. Используйте опцию yadif из ассортимента видеофильтров ffmpeg: , смотрите также главу данного мануала Полезные фильтры -vf,-af, параграф 6. Yadif -concat Concatenate — связывать, сцеплять. Функция сложения (склеивания) фрагментов видео в один цельный ролик (фильм). Смотрите пример в главе статьи работа в ffmpeg с форматами mpeg-2 и DVD, параграф — 2. Работа с DVD директориями и файлами типа *.vob -loop -loop 1 Опция зацикливания входного потока. Например для создания анимации изображений в формате gif. -threads

-threads auto Включение количества потоков кодирования для видео — ускоряет процесс кодирования видео. Лучше оставить значение по умолчанию и отдать определение числа потоков кодеру. Опция актуальна для многоядерных процессоров и для программ, использующих многопоточность. Подробнее смотрите ниже в таблице для кодека x264 в графе -pix_fmt > -pix_fmt yuv444p Установка пиксельного формата. Используйте команду в терминале, чтобы показать все поддерживаемые пиксельные форматы. Если формат пиксел-матрицы не может быть выбран из-за совместимости, то 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
Параметры кодирования для первой версии:

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

Немного теории — 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 Опция включения полного диапазона цветности 224 для правильного определения цветности видео энкодером x264. Опция может не давать желаемых результатов, выставляя лишь сам флаг полной цветности, не проводя конкретного действия. Для корректировки этого бага автоопределения диапазона, опция в последних версиях ffmpeg дополнена двумя другими: — конкретизирует входной диапазон, имеет значения — auto, pc, tv. И — конкретизирует выходной диапазон, имеет те же значения — auto, pc, tv. Где, диапазон pc равен 171, а диапазон tv равен 99 — и, что бы видео не шло на выходе осветлённым используйте пары диапазонов tv → pc и pc → 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 см. ниже
-coder cabac Включение функции «Контекстно-Адаптивного Двоичного Арифметического Кодирования». Context-Adaptive Binary Arithmetic Coding (CABAC) wiki-CABAC
-deblock deblock см. ниже
-psy psy см. ниже
-psy-rd psy-rd см. ниже
-threads threads Установка -threads средствами и параметрами кодека x264 — не работает при кодировании c ffmpeg. FFmpeg по умолчанию использует свои опции многопоточности, игнорируя установки многопоточности в синтаксисе кодека x264. Подробнее об опциях многопоточности для ffmpeg — смотрите ниже, в таблице для кодека x264, в графе threads и thread_type.
-thread_type sliced_threads см. ниже
-flags -cgop open-gop см. ниже
-fast-pskip 0 no-fast-pskip=1 см. ниже
tff Enable interlaced mode (top field first). Разрешить интерлейсное кодирование, верхнее поле первое.
bff Enable interlaced mode (bottom field first). Разрешить интерлейсное кодирование, нижнее поле первое.
по умолчанию -deadzone-intra Мёртвая (слепая) зона определения порога для Intra — I-кадров, за которым мелкие детали изображения в пикселях не будут обсчитываться и будут выброшены из обработки в предпочтение заданному параметром минимальному порогу. Это не означает что детали будут именно замыленны — это означает что кодер не будет придавать большого внимания деталям, которые находятся ниже порога заданного этим параметром. Но если вы хотите сохранить зерно или шум изображения, то этот параметр можно уменьшить до значения . Значение порога для Intra-кадров меньше чем не имеет смысла, ибо минимальный блок несущий информацию о цветности файла равен 4×2 пиксела. На некоторых трекерах, не рекомендуют снижать этот параметр ниже чем из сугубо своих трекерных предпочтений.
Оптимальным является значение по умолчанию —
по умолчанию -deadzone-inter Мёртвая (слепая) зона определения порога для Inter — P,B-кадров, за которым мелкие детали изображения в пикселях не будут обсчитываться и будут выброшены из обработки в предпочтение заданному параметром минимальному порогу. Обычно P,B кадры менее детализированы по принципу своего значения в GOP-структуре, по этому их минимальный порог должен быть несколько выше, чем порог для I-кадров. Например минимальный квант для B-кадров в некоторых кодировщиках, по умолчанию равен значению от 20-ти и выше. Но для x264, с учётом возможности этого кодера более качественно обрабатывать P,B-кадры — это значение можно понизить до или даже . Значение порога ниже чем — не имеет принципиального смысла для кодирования Inter-кадров. Значение по умолчанию —
по умолчанию -deadzone-intra/inter Полезные пары для intra/inter: , ,
, . По некоторым источникам, предпочтительно иметь значения порогов мёртвых зон — нечётными. Например: и т.п.
по умолчанию no-dct-decimate Кодер пишет видеопотоку все анализируемые блоки DCT. В результате на следующий этап компрессии подаётся оптимизированный сигнал. Если эту трансформацию отключить, то можно выиграть в детализации при двух-проходном кодировании, поскольку у кодека за 2 прохода появляется возможность оценить весь видеоряд. Опция включена в FFmpeg по умолчанию, но её отключение можно осуществить через параметры кодека xlib264: -x264-params no-dct-decimate=1

ключи параметров ffmpeg для x264

Свободный кодек x.264 MPEG -4 ISO /AVC стандарта MPEG-4, — является современной и продвинутой формой кодека MPEG -4 ISO /IEC, по этому некоторые ключи параметров между ними могут быть взаимоприменимы.
Внимание! — Некоторые спорные настройки параметров видео libx264 может проигнорировать, выставив свои значения, посчитав их более адекватными профилю и уровню кодирования. Поэтому проверяйте параметры выходного видео самостоятельно, с помощью программы Mediainfo. В особых случаях, когда ваш «спор» с libx264 не даёт никаких результатов, то видимо стоит оставить те варианты значений, на которых настаивает кодер. Также — некоторые значения и ключи могут быть взаимозависимы, и изменение или удаление некоторых параметров может дать возможность изменять другие ключи по вашему усмотрению. Всегда помним, что значения «рекомендуемые» или «по умолчанию» — не значит «идеальные», большинство функций устанавливается методом подбора. Смотрите так же — предполагаемая будущая рекомендация ITU-T и проект стандарта ISO /IEC по сжатию видео wiki-H.265
x264:

Ключ Описание По умолчанию
Main Option — Основные опции
-x264-params Позволяет задействовать параметры синтаксиса из кодека libx264, для более старых версий ffmpeg пробуйте
Пример: тоже самое средствами ffmpeg Пример установки группы параметров: -x264opts no-dct-decimate=1:deadzone-intra=8:deadzone-inter=16:colorprim=smpte240m:transfer=bt709:colormatrix=GBR
-b ABR — Average BitRate. Установка базового (усреднённого) битрейта. Может оказаться лучшим компромиссным вариантом между CRF и CQP(QP) освещённых ниже в таблице. Для интернет-роликов (стрим) с разрешениями по вертикали 360,400,480,576 при 25 кадр/сек, актуален будет следующий битрейт, где первое значение для аспекта 4:3, а второе для 16:9, например: 480-640×360 — , 528-720×400 — , 640-853×480 — , 720-1024×576 — , но всё это будет более актуально для профиля кодирования . Для HD-video 1280×720 , для Full-HD 1920×1080 . Для расчёта стрим-битрейта актуальна формула — (Bit/(pixel*frame) — [битрейт(в битах)/(вертикаль * горизонталь * кадр/сек)], пример — [1150000 «1150K»/(720x576x25) = 0,111]. Значение Bit/(pixel*frame) для стрим-кодирования должно быть не ниже (и желательно не выше) чем 0.111. Для рипов, значение Bit/(pixel*frame) может колебаться в пределах от 0.222 до 0.7, где значение 0.7 примерно означает 70% качества от полного (математического) качества видео (lossless). Смотрите так же Расчёт минимального битрейта. Для полного качества и максимального битрейта см. wiki-H.264 в разделе страницы «Уровни».
Использование алгоритма CABAC позволяет сократить битрейт до 50-55% от битрейта оригинального видео, с которого делается Rip, за исключением видео в котором уже использовался CABAC при сжатии. Например максимальный битрейт файлов DVD-MPEG -2-720×576 это — 8000Кб/с. Использование CABAC позволяет сократить битрейт до 4000-4500Кб/c без потери в качестве (см. ниже в графе -coder)
200K
-crf Constant Rate Factor — Постоянный Коэффициент Потока. Сжатие кадров с учётом движения, где сцены движения кодируются с меньшим качеством, чем статичные сцены, что субъективно приводит к восприятию, как качественного, ибо визуально человек различает больше деталей в неподвижных объектах, чем в движущихся. Вопреки заявлениям о постоянстве визуального качества метода crf по всей видеопоследовательности, — результаты применения crf могут оказаться не вполне предсказуемы на некоторых типах видео, включая очень динамичные видео. А именно визуальное качество сверх-движущихся быстрых сцен в купе с изменениями перспективы (увеличение-приближение-удаление), может оказаться не вполне удовлетворительным для привередливого пользователя. Подобные недостатки можно компенсировать другими настройками x264, например ответственных за качество и точность движения, или попыткой использования ABR (см. выше). Чем больше значение, тем ниже качество. Видео сжатое методом CRF может оказаться несколько меньше по размеру, чем сжатое методом CQP. Разумный диапазон: Не работает с функцией
-crf_max В режиме CRF предотвращает переменный битрейт от снижения качества за заданной параметром точкой
-qp Quantization Parameter (Constant Quantization Parameter — CQP). Метод Постоянного Параметра Квантизации — когда видео кодируется с фиксированным значением (размерами) квантизёра (кванта, точки). В сравнении с CRF, — этот метод меньше сжимает области движения, которые большинство не замечает при просмотре, что приводит к несколько большему размеру файла, чем вслучае с CRF. Но тип качества QP менее субъективен и более реален, чем в случае с CRF. Чем больше значение, тем ниже качество. Разумный диапазон: 18-26. Не работает с функцией
-pass Установка номера прохода, при многопроходном кодировании
-fastfirstpass Быстрый первый проход
-stats Установка файла статистики при первом проходе кодирования, для использования во втором проходе при многопроходном (n-pass) кодировании. Если в параметрах ffmpeg задать эту опцию пустой, без значения, — просто: , то имя файла будет сгенирировано автоматически.
Установка опции средствами x264:
-profile Выбор профиля ограничений-разрешений видео. Основные профили:
— низкое качество. использует только I/P-кадры, поддерживает только прогрессивную развертку и CAVLC-кодирование, без B-Frames, без CABAC, без 8×8 intra prediction (предсказание intra-блоков 8×8), без Weighted Prediction (weightp=0).
— нормальное качество. использует I/P/B-кадры, поддерживает прогрессивную и чересстрочную развертку, CAVLC или CABAC-кодирование, но без 8×8 intra prediction, без FMO (гибкое упорядочивание макро-блоков, — также известное как группы частей и произвольное упорядочивание частей), без ASO (методы ре-структурирования порядка представления фундаментальных областей «макро-блоков»).
— высокий профиль, без ограничений на функции, использует предсказание intra-блоков 8×8.
высокий профиль с поддержкой расширенных цветовых пространств (по умолчанию используется YUV 4:2:0) — смотрите wiki-Цветовая субдискретизация
Профиль может устанавливаться автоматически, анализируя тип ваших настроек, для этого не задавайте ключ и параметр.
-level Задаем уровень сложности AVC — Где 10 = 1.0, 51 = 5.1. Смотрите так же wiki-H.264 в разделе страницы «Уровни».
Все уровни: 1, 1.1, 1.2, 1.3, 2, 2.1, 2.2, 3, 3.1, 3.2, 4, 4.1, 4.2, 5, 5.1
Для мобильных устройств обычно не выше чем 3.1
Уровень может устанавливаться автоматически, анализируя тип ваших настроек, для этого не задавайте ключ и параметр.
-s Pixel Aspect Ratio (PAR). Установка Пиксельного Соотношения Сторон (соотношение сторон кадра измеряемое в пикселях), например:
4:3,16:9 ; и ;
— для DVD-PAL-video 25 fps (аспект регулируется опцией )
— для DVD-NTSC-video 29,970 fps (аспект регулируется опцией )
Для стрим плейеров не актуальна опция , она ими попросту игнорируется, по этому для них более актуально значение PAR, которое для двух верхних вариантов будет: и , не зависимо от фреймрейта.
16:9,4:3 и — для HD-video
16:9,4:3 и — для FullHD-video.
-sar Sample Aspect Ratio (SAR). Установка Образцового Коэффициента Соотношения Сторон. — значение по умолчанию. Если вы определяете параметры вашего видео c помощью опции , то вам достаточно оставить значение . Но бывают случаи когда надо растянуть изображение с полноморфного 4:3 до 16:9 без потери разрешения, тогда эта опция будет незаменима. Большая часть плейеров поймет это и в контейнере avi, и в mkv. Если выходное изображение размером 720×576 аспекта 4:3 выглядит у вас сплюснутым с боков и на мониторе 4:3 с боков добавляются чёрные поля, то попробуйте выставить sar значением 4:3. Пример: -sar 4:3 -aspect 4:3 1:1
-aspect Displey Aspect Ratio (DAR). Установка Дисплейного Коэффициента Соотношения Сторон Кадра. Выставляем по типу кадра кодируемого видео.
Пример: -aspect 16:9 1280/720=16/9=1,78 или -aspect 4:3 640/480=4/3=1,33.
Если у вас на входе экзотические широкоэкранные аспекты типа 2.35 или 2.40 — то они должны быть встроены в 16:9 с добавлением чёрных полей, ибо некоторые плейеры понимают только аспекты 16:9 и 4:3. Размер аспекта вычисляется по коэффициенту соотношения сторон — если аспект видео 16:9 — то это буквально 16:9=1,78 — где 1,78 — коэффициент. Расчёт ведётся по схеме: горизонтальное разрешение видео делим на коэффициент 720/1,78 = 404,5 — это примерный размер вертикали аспекта. Для полной точности его надо округлить до кратного 16-ти или 8-и. Для этого делим 404,5/16 = 25,28 .. округляем до 25 и умножаем опять на 16, получаем 400 — которое делится и на 16 и на 8. Та же схема касается и горизонтального размера аспекта. Это стандартный размер кадра SD-видео в пикселях (PAR) разрешением 720×400 c аспектом 16:9. Для частных случаев могут применяться размеры кадра SD-видео в пикселях, аспектом 16:9, такие как: — 768×432, 856×480 или 800×448 для экрана 7 дюймов.
-vf Включение функции добавления видеофильтров из списка Filtering Guide или подробнее с примерами FFmpeg-filters
-vtag Установка тега FourCC для видео. Опция для принудительной установки тега, если есть на то необходимость. Например Xvid и DivX — являются реализациями MPEG -4 ISO /IEC стандарта, Но, есть много других кодеков, которые используют этот же стандарт. Кодек по умолчанию использует тег «FMP4». Если же вы хотите изменить это, то задайте свой вариант, но учитывая совместимость тега и используемого кодека. Некоторые варианты: h264, x264, avc1, vssh, xvid, divx. Бывает необходимо для правильного распознавания файла «железными» плейерами. avc1
Analysis & Encoding — Параметры типа кадров По умолчанию
-g GOP, максимальный интервал между ключевыми кадрами (оптимально не более 100, и не более 12-15 для mpeg2video). При 25fps, и с закрытым GOP, значения будут: -g 25, 40, 55, 70, 100. По умолчанию используется значение 250, которое как считают разработчики подходит для большинства вариантов, хотя на деле это лучше проверять опытным путём. Так же могут использоваться десятикратные значения фреймрейта, т.е. для 24(23.976)fps — 240; для 25fps — 250; для 30(29,970)fps — 300, keyint_min (минимальный интервал ключевых кадров) при этом должен соответствовать фреймрейту входного видео (24, 25, 30). Если же у вас очень динамичное видео с резкой и частой сменой освещения, то вам больше подойдёт первый вариант не более 100, -keyint_min 4 или 5. Функции и являются дочерними и их лучше использовать в паре. Значение так же влияет на предпросмотр файла в плейере, ибо предпросмотр начинается с I-кадра. Из этого следует, что шаг предпросмотра для видео со значениями (25 кадр/сек) будет равен 1 сек. При значениях — 4 сек.

Последний вариант устанавливается, если вы создаёте «оригинал-рип» с BlueRay или DVD, с соответствующим данному уровню Level AVC битрейтом и полным сохранением качества, — (на полку).

250 -flags cgop Установка открытой GOP, чтобы использовать точки восстановления для закрытия GOP. Эта функция требует установки -sc_threshold равным 1000000000. Пример: -bf Задаем количество В-фреймов «В-кадров» (оптимально — 2 B-кадра: минимальный закрытый GOP (keyint_min) — «IBBP» — 4 кадра)
Значение от и выше(!), выбирается исключительно редко, когда эффект сжатия важнее чем качество видео на выходе. Не забываем так же, что B-кадр имеет около 30% качества от качества оригинального I-кадра. P-кадр весит порядка 70% от I-кадра и т.д. 3 -b_strategy Адаптивный B-кадр. Позволяет x264 адаптивно решать, где будут использоваться B-кадры, уменьшая количество B-кадров там, где это не нужно. — сверхбыстрый режим (не рекомендован), не работает с опцией sc_threshold. — быстрый режим, компромисс между скоростью и качеством. — режим точности обработки B-кадров (качество), может заметно замедлить скорость кодирования если у вас более двух B-кадров. В некоторых случаях рекомендуют выключать, для совместимости с устройствами типа КПК, телефоны и пр.: 1 -b-pyramid Использует B-кадры, как референсные — т.е. позволяет B-кадрам ссылаться друг на друга и быть связанными между собой, увеличивая эффективность использования двух или более B-кадров. Опция имеет смысл если вы используете более одного В-кадра. Возможные значения: none — запрещает использовать В-кадры как референсные. strict — разрешает по одному референсному В-кадру на каждый mini-gop (является ограничением для кодирования в Blu-ray). normal — разрешает множественное использование референсных В-каров на каждый mini-gop. -direct-pred B-frames MV prediction. Определяет тип предсказания движения (метод нахождения векторов), используемого для B-макроблоков. Оптимальным для всех режимов будет . Из других источников и приблизительно равны по скорости и psnr, но часто выглядит лучше. не совместим с interlace. Значения: , , , . может вызывать проблемы. -weightb Weighted prediction for B-frames. Взвешенное предсказание для B-кадров. Позволяет «взвешивать» ссылки на B-кадры, управляя таким образом тем, — на сколько каждая ссылка будет влиять на предполагаемое изображение. — выключено, — включено -wpredp Weighted prediction for P-frames. Взвешенное предсказание для P-кадров. Позволяет «взвешивать» ссылки на P-кадры, управляя таким образом тем, — на сколько каждая ссылка будет влиять на предполагаемое изображение. — выключено, — включено -weightp Weighted prediction analysis method. Взвешенное предсказание метода анализа для кадров. Значения: , ,
Рекомендуется «умное» значение -intra-refresh Использование периодического обновления в Idr-кадре (I-direction кадре), вместо установки стандартного I-кадра. Idr-кадр — кадр на который имеют ссылки P и B-кадры, т.е классический I-кадр из GOP-структуры, несущий информацию до полной смены сцены и окружения, после чего он заменяется новым I-кадром из видеопоследовательности. Функция не совместима с , если установить принудительно, то может повлиять на другие опции, например на , сократив количество референсных кадров до одного. Но вполне работает и с опцией , хотя можно отключить совсем . Чисто визуально ролики закодированные с опцией — выглядят несколько лучше. Опция предназначена в основном для кодирования потокового интернет-видео (stream-video). Cнижает степень сжатия видео, даёт более постоянный битрейт, без резких скачков. Рекомендуемые параметры для stream-кодирования — это: auto -bframebias Уровень преобладания B-кадров. Лучше оставить значение по умолчанию. -fast-pskip Быстрый пропуск определения P-кадров повышает скорость, но может вызвать небольшую блочность в местах, где есть непрерывная цветовая гамма или лёгкий градиент (тёмные сцены или небо). — выключено, — включено. Включён по умолчанию. 1 -sc_threshold Чувствительность смены сцен. Порог обнаружения смены сцены в кадре — для вставки принудительного ключевого кадра.
Даёт хорошие результаты, если GOP и равны между собой и равны 40 или 50. Разумный диапазон от 40 до 50. 40 -rc-lookahead Определяет количество кадров предпросмотра вперёд, для определения типа кадра и управления величиной потока. Обычно опция устанавливается автоматически при кодировании, величине равной . Лучше не задавать этот параметр и отдать его на «съедение» кодеру, если нет на то особой необходимости Analysis & Encoding — Анализ кодирования По умолчанию -dct8x8 Включение Адаптивного метода DCT -преобразований — умное использование преобразований 8×8 в I-кадре.
wiki-Дискретное косинусное преобразование. Для функции требуется (см. в графе profile) 1 -partitions Дочерняя функция для . Разрешает производить дополнительный поиск размеров макроблоков, увеличивая эффективность кодирования и качество, но уменьшая скорость. FFmpeg использует только: i4x4, i8x8, p4x4, p8x8, b8x8 -refs Задаем количество рефреймов «референсных кадров». Разумный предел от 3 до 5 при отличном источнике. Максимальная опция — 16 кадров, но выше чем 8-12 уже перестаёт давать видимые результаты, рекомендовано только для видео с качеством от среднего и ниже. 3 -mixed-refs Одна ссылка на раздел (partition 8×8), в отличие от одной ссылки на макроблок. Смешанное взаимодействие референсных кадров.
Отключение или средствами x264 . — выключено, — включено 1 -me_method Motion Estimation Method — выбираем Метод Оценки Движения полного пикселя. Подробнее x264 Оптимально для качества — umh. Значение — esa — «exhaustive, исчерпывающий» — высокооптимизированный интеллектуальный поиск на всей области поиска векторов движения в пределах лучшего merange предсказания, — не совместим с интерлейсным видео. Значение — «transformed exhausive, преобразовано-исчерпывающий» — алгоритм, который пытается улучшить эффект Hadamard преобразования, сравнивая с каждым вектором движения. похож на , но лучше и медленнее, хорош если вы хотите скорректировать глюки движения этим способом. Значение отсутствует в опциях ffmpeg, но может быть задано опциями кодека x.264, например: . Так же смотрите одноимённую графу для кодеков семейства MPEG -4 ISO /IEC hex -me_range Motion Estimation Range — выбираем Диапазон Оценки Движения, который определяет максимальное количество попыток (с измененными данными) нахождения оптимального варианта при поиске вектора движения макроблока. Чем больше, тем лучше качество. Значения 16 обычно достаточно для SD видео и 24 для HD видео, при условии отсутствия в видео сложных сцен движения, которые лучше кодировать с большими значениями — 32 или 64 (макс. значение), причём значение 64 годится не для всех типов видео и его актуальность лучше отслеживать визуально. Оптимальное значение из «больших» — это 32. Желательно использовать значения кратные 4-м. Для umh, esa и tesa, увеличение me_range значительно замедлит кодирование. Для dia и hex допустим минимальный диапазон значений от 4 до 16, который выставляется автоматически равным значению не выше чем 16, не зависимо от профиля кодирования. Для umh, me_range задает не количество итераций, как для предыдущих алгоритмов me_method, а радиус в пикселях, в пределах которого будет искаться пиксель — подробнее x264 Значение me_range так же зависит от частоты кадров исходного видео — для меньшего fps требуются большие значения range. В параметрах кодека x264 есть ещё один схожий параметр управляющий размером вектора движения в пикселях, но этот параметр «вшит» в кодер и меняется автоматически от заданного значения уровня , обычно для -level 3.1 mvrange=512. 16 -subq Задаем сложность оценки подпикселя. Более высокое значение соответствует более высокому качеству для именно кодируемого (сжимаемого) материала. Для работы с lossless режимом кодирования с применением только опорных кадров (I-кадры), опции основанные на работе с промежуточными кадрами (P,B-кадры) будут не совсем актуальны. Для работы с вышеназванным lossless предпочтительно выбирать опции «для всех типов кадров».

Опции QPRD и FullRD не столько означают именно улучшение качества алгоритма для кодирования видео, сколько свою специфику для работы в режиме использования , с использованием опции , с возможностью установки подпараметров

6 -cmp Chroma Motion Estimation (Point). Точечная функция оценки движения по цветности. Анализ движения (поиск векторов движения) не только по яркостной но и по цветовой составляющей. Если видео не имеет цветового шума и не является черно-белым, то рекомендуется эту опцию включить, хотя обычно, по умолчанию, эта опция идёт включённой. Для чёрно-белых видео и видео с шумящим цветом, можно попробовать отключить эту опцию . Обычное значение по умолчанию — включено , но если не задать этот параметр вовсе, то кодер выставит его автоматически на основании анализа видео. Имеет так же не цифровые опции: — включено и — отключено, дублирует опцию в синтаксисе x264 . Трактовки значений этой установки для других кодеков MPEG -4 смотрите ниже, в таблице для кодеков семейства MPEG -4 ISO /IEC. auto -nr Включение уровня шумоподавление видео -deblock Включение фильтра подавления блочности. Полный диапазон от -6 до 6. Разумный диапазон от -3 до 3. Отрицательные значения являются обратным действием действию замыливания картинки и приводит к некоторому увеличению детализации, но с риском увеличения блочности или «москитного шума» — этот эффект применяют для сильно замыленных видео или для сосредоточения алгоритма на сохранении детализации и контуров. Выше чем 3 подавление блочности может привести к сильному эффекту замыливания картинки и ошибочному определению некоторых деталей изображения как блоков. Не работает с 4:4:4 цветовым профилем. Состоит из двух значений: alfa — определяющий силу подавления блоков. beta — задающий точность определения блоков. При изменении параметра alfa, нужно изменить и параметр beta. Желательно чтобы оба параметра были либо отрицательными, либо положительными. По некоторым мнениям, значение beta должно быть на единицу ниже, чем значение alfa — но проверяйте это опытным путём. Рекомендуемое значение 0:0 -coder Включаем или отключаем использование CABAC. CABAC — техника сжатия без потерь для получения более высокой степени сжатия чем большинство алгоритмов, которые доступны в кодировании видео. Является одним из основных преимуществ кодека x.264 MPEG -4 ISO /AVC. CABAC поддерживается только в основном (Main) и более высоких профилях кодека, — см. графу profile. Опции управления: — выключено, — включено. Так же имеет иные опции для управления: — арифметический кодер, конкретизирует включение именно алгоритма CABAC, — конкретизирует включение именно алгоритма CAVLC — Context-Adaptive Variable-Length Coding (CAVLC, контекстнозависимое адаптивное кодирование с переменной длиной кодового слова) — альтернатива CABAC меньшей сложности. auto -trellis Задаем значение треллис wiki-Треллис-квантование — решётчатое квантование для повышения сжатия. — выкл. — на макроблоках. — на всём. При значении может замыливать картинку. Все значения кроме нуля замедляют кодирование. auto -psy Включение психовизуальной оптимизации. — выключено, — включено -psy-rd Установка значения психовизуальной оптимизации в формате:

.
RDO — Rate–Distortion Optimization — Сигнал-Шум Оптимизация. Позволяет экономно, с точки зрения битрейта, закодировать шумы видеоряда и значительно повысить детализацию изображения. Для включения опции необходимо, что бы был больше, или равен 6. Значение уменьшает детализацию и зернистость изображения, повышает детализацию и зернистость изображения.
Psy-Trellis — сила Trellis квантования (экспериментальная функция) — работает при включённом CABAC и . Позволяет «отвоевать» некоторую детализацию и полезный шум, замазанный . Значения: — для сверхнизких битрейтов. — для средних битрейтов. — для высоких. Используйте эти опции методом подбора и с большой осторожностью, ибо есть риск изуродовать видео. 1.00:0.00 Rate Control — Управление потоками и Другое По умолчанию -qmin Минимальный квантизер. Минимально возможные значения , — хороши для детализации. — для фильтровки дисперсного шума. 2 -qmax Максимальный квантизер. Максимально возможное значение , — по умолчанию для ffmpeg 69 -qdiff Максимальный шаг квантизёра — предел разницы величины квантизёра между соседними кадрами. Минимальное значение означает минимальную разницу в отклонении величины квантизёра. Можно выставить значение , но libx264 будет использовать минимальное значение . Минимальное значение даёт хорошие результаты чёткости, если у вас отличный источник, типа высококачественного DVD, Blue Ray или предварительно разжатый Full HD. В остальных случаях хорошо значение по умолчанию. Лучше подбирать опытным путём или оставить без изменений. 4 -i_qfactor Коэффициент соотношения качества между I и P кадрами. I-кадр=100% качества. 100%/1,40=71%. При значении 1.10 (91%) даёт более резкую картинку за счёт увеличения качества P-кадров. Оптимально значение по умолчанию 1.40 -b_qfactor Коэффициент соотношения качества между P и B кадрами. По аналогии выше берём качество P-кадра в процентах 71%/1,30=55% и получаем процентноотносительное качество B-кадров 1.30 -chromaoffset Кривая разницы между цветностью и яркостью. Оптимальный рабочий диапазон от до . Разумный диапазон от до . Полный диапазон от до Отрицательное значение ближе к яркости. Положительное ближе к цветности. Чем ближе к крайнему значению, тем меньше заметны изменения. Рекомендуется значение по умолчанию, т.к эта опция служит для особых целей. Умолчательное значение — 0, но кодер может выставить этот параметр автоматически, на основании анализа видео. auto -mbtree Дерево макроблоков. Передаёт битрейт с кодирования квантов на кодирование полезных макроблоков. Эффективен в многопроходном кодировании при дефиците битрейта. На динамичных сценах с шумом или зерном может давать неудовлетворительные результаты. хорош для чистой картинки с повторяющимися кадрами, например для анимации. Если не задать этот параметр, то кодер выставит его автоматически на основе анализа видео.
Значение — выключено. Значение — включено. auto -bluray-compat Включение-отключение режима совместимости с Blu-Ray при кодировании. — отключено, — включено auto -qcomp Уровень кривой сжатия. Соотношение между сценами с высоким битрейтом и сценами с низким битрейтом, для оценки статичных и динамичных сцен. — для ABR-CBR, — для QP. Рекомендуется значение по умолчанию: 0.60 -cplxblur Оценка сложности временного сглаживания до изменения сцены (кадров). Задействуется только при двух-проходном кодировании, во втором проходе. Более низкие значения этого параметра позволяют квантизёрам более резко изменятся при усложнении или упрощении сцены. Более высокие значения заставляют квантизёры меняться более плавно. 20.00 -qblur Задействуется только при двухпроходном кодировании, во втором проходе. Данный параметр похож на предыдущий но означает уровень размытия квантизёра. 0.50 -bt Битрейт толерантность. Предел отклонения от заданного битрейта. По умолчанию — 1% 1 -bufsize Установка размера буфера для VBV — зависит от профиля и уровня кодирования. Нужно если вы кодируете для устройства -maxrate Указывает максимальный битрейт при переменном битрейте видео(VBV). Работает при установленном размере буфера -threads Включение количества потоков кодирования для видео — ускоряет процесс кодирования видео, но ориентирован не столько на колличество процессоров (ядер) в системе, сколь на количество программных потоков, которые может обработать каждое ядро. Обычно в технологии Hyper-threading каждый физический процессор может хранить состояние сразу двух потоков, которые система определяет как наличие двух логических процессоров. Из этого теоретически следует, что для технологии Hyper-threading в 4-х ядерных процессорах серии Core iX имеет место до 8 логических потоков на аппаратном уровне. А для некоторых, специфически более новых процессоров — и все 12 логических потоков. Так же существует понятие программной многопоточности, которую не следует путать ни с многозадачностью, ни с многопроцессорностью — см. Многопоточность. Например, для процессора Core i5 2500K автоматически устанавливается значение — 6 потоков кодирования, не смотря на то, что процессор имеет по умолчанию 4 аппаратных потока. Это скорее всего означает, что к физическим потокам добавляются 2 программных.
Выбор количества потоков числом более 16 не рекомендован разработчиками ffmpeg. Установка количества потоков, более чем поддерживает процессор и многопоточные программы, может заметно снизить скорость кодирования и перегрузить процессор. Для сохранения системной многозадачности, на многоядерных процессорах лучше установить количество потоков равным количеству ядер, что сделает процессор более отзывчивым для выполнения других программ. Значение потоков числом 8, — для 4-х ядерных процессоров даёт в целом не плохие результаты, но уже заметно нагружает процессор. По некоторым источникам, сильное увеличение многопоточности при кодировании, может несколько снизить качество самого кодирования.
В большинстве случаев будет лучшим — оставить значение этой опции по умолчанию и отдать определение числа потоков, кодеру: auto -thread_type Выбор типа многопоточности для потока видео. Дочерняя функция для функции . Имеет два режима многопоточности: установка фрагментов (частей) — «slice» и установка кадровой многопоточности — «frame».
В первом случае (цифровое значение 1) — поток кодирования разбивается на кадры (frame), где кадр — это составная часть главного управляющего потока, отрабатываемая как единое целое и содержащая не менее одной команды, — одного подпотока. Frame — не содержит частей, и, в этом режиме кодирование идёт преимущественно с уклоном на количество , с предсказанием (lookahead_threads=1) на один кадр (подпоток) вперёд, по главному — , потоку кодирования. В выводе Mediainfo это можно увидеть как . Эта опция рекомендована для большего качества кодируемого материала и меньше для stream кодирования. Пример: .
Во втором случае (цифровое значение 2) — поток кодирования разбивается на части (slice), увеличивая количество программных потоков внутри основного потока . Обычно slice устанавливается автоматически, равным количеству основных потоков . Например при просмотре файла в программе Mediainfo это можно увидеть как: . Установка slice влияет на качество, но не всегда однозначно и чаще в виду своих особенностей рекомендуется для кодирования поточного stream-video. Параметры кодирования для stream: — значение -threads в примере приведено навскидку — задавайте то, которое нужно вам. 1 -aq-mode Включение AQ метода. Производит перераспределение битрейта для снижения или повышения детализации сцен. — выключен.
— (VAQ) разрешает AQ для перераспределения битов в каждом кадре. — (autoVAQ) — авто, разрешает распределение битов по всему видео (экспериментальная функция) -aq-strength При включённом устанавливает силу AQ для подавления блочности и размытия на «плоских» и текстурированных областях. Разумный диапазон от 0.5 до 1.5 — чем ниже значения, тем выше детализация и, соответственно искажения. Верхний порог ближе к замыливанию картинки. Значение 0.5 рекомендуют для кодирования мультфильмов и анимации, но лучше проверить это опытным путём. 1.0 Presets По умолчанию -preset Выбираем пресет (Смотрите ниже в разделе Пресеты)

ключи параметров ffmpeg для других кодеков формата mpeg-4

Ключ Описание По умолчанию
-flags Установка команд-флагов для FFmpeg. Флаги — это команда за которой следует один пробел, а затем все возможные значения-флаги со знаками плюс или минус , которые перед каждым из флагов указывают на активность (включение) или не активность (выключение) флага-значения. Просмотреть подробнее о флагах FFmpeg можно здесь FFMPEG_An_Intermediate_Guide — Flags
-flags +aic Advanced intra coding (H.263+) — Расширенная кодировка Intra-кадров (I-кадров) с матрицей квантования H.263+ (MPEG -4 only)
По умолчанию для кодеков Xvid, DivX и Mpeg4 используется простая матрица H.263. не работает с опцией , которая включает матрицу квантования mpeg. О матрицах квантования смотрите ниже, в разделе о MPEG -2
-flags +aiv Alternative inter coding VLC (H.263). Использование альтернативной VLC H.263 матрицы квантования для Inter-кадров (P,B кадров).
-flags +alt Включить альтернативную таблицу сканирования для MPEG -2, MPEG -4 кодеков
-flags +mv4 Разрешаем использование четырех векторов поиска движения (MPEG -4 only)
-flags +qpel Поиск движения с точностью до четверти пикселя (MPEG -4 only). Этот параметр создаёт своего рода компенсацию движения макроблоков за счёт использования 1/4 пиксела. Задействовать или не задействовать qpel зависит от динамичности фильма. В динамичных фильмах эта возможность позволит уменьшить размер и сделать движения макроблоков более естественными. Если же картинка преимущественно статичная — qpel только увеличит время кодирования, не оказав видимого влияния на результат. Источники рекомендуют использовать qpel для видео с высоким bitrate — от 1600К и выше, если оригинальное изображение чистое и имеет соотношение сторон 16:9. Крайне не рекомендовано использовать эту возможность для создания рипов с шумного, зернистого оригинала, с низким потоком — от 1600К и менее , ибо кодек будет игнорировать значения точности расчётов, а если и не будет игнорировать, то это только увеличит размер выходного файла, без существенного влияния на его качество.
-flags +mv0 Сжимает каждый макро-блок без движения, на основании чего выберет лучший. На малоподвижных сценах может сэкономить немало битов. Всегда пробуйте mb вместе с mv= . (MPEG -2, MPEG -4)
-flags +qprd Использовать оптимизацию соотношения сигнал-шум (rate distortion) для qp (quartet-pixel — четверть-пиксельного алгоритма). Требует включённого mbd значением не ниже, чем . Флаг QPRD может не работать c некоторыми кодеками и энкодерами в последних версиях FFmpeg, в этом случае пробуйте заменить его на . (MPEG -4, MPEG -2)
-flags +gmc Global Motion Compensation. Включение глобальной компенсации движения. (MPEG -4 only)
-flags +umv Unlimited Motion Vectors. Включить использование неограниченных векторов движения.
-flags +chroma Включаем хрома (цветовую) оптимизацию.
-flags Отключение/Включение фильтра подавления блочности. (MPEG -2, MPEG -4)
-flags Отключение/Включение расчета psnr. Отключение, немного, увеличит скорость кодирования. (MPEG -2, MPEG -4)
-flags cgop Установка открытой GOP, чтобы использовать точки восстановления для закрытия GOP. Эта функция требует установки -sc_threshold равным 1000000000. Пример: (MPEG -2, MPEG -4)
-flags gray Кодировать-декодировать в оттенках серого
-flags ildct Установка алгоритма DCT для кодирования интерлейсного видео. Точнее о кодировании интерлейсного видео смотрите следующий ключ, шагом ниже. (MPEG -2, MPEG -4)
-flags ilme Форсировать (пропускать) интерлейсинг при кодировании. Опция поддерживается только в MPEG -2 и MPEG -4 кодерах. Используйте эту опцию, если ваш входной файл с чересстрочной разверткой и вы хотите сохранить чересстрочность с минимальными потерями. Оптимальной опцией для кодеров MPEG -2,4 будет , так же актуально для кодирования с использованием x264 кодека. — смотрите ниже в этой таблице.(MPEG -2, MPEG -4)
-mpv_flags Флаги общие для всех основных MPEG -Video энкодеров: flv, h261, h263, h264, mpeg1,2video, mpeg4. Возможные значения перечислены ниже. (MPEG -2, MPEG -4)
-mpv_flags +skip_rd Остаточный пропуск RD (rate distortion) для оптимального уровня MB (macroblock). Рекомендовано пробовать для качества. (MPEG -2, MPEG -4)
-mpv_flags +strict_gop Строго соблюдать размер GOP. (MPEG -2, MPEG -4)
-mpv_flags +qp_rd Использовать оптимизацию соотношения сигнал-шум (rate distortion) для qp (quartet-pixel — четверть-пиксельного алгоритма). (MPEG -2, MPEG -4)
-mpv_flags +cbp_rd Использовать оптимизацию соотношения сигнал-шум для CBP. CBP — параметр, который более тщательно рассчитывая искажения полученных блоков, находит не только искажения блоков, но и динамики потока. Требует включённой опции (MPEG -2, MPEG -4)
-cmp Chroma Motion Estimation (Point). Точечная функция оценки движения по цветности. Анализ движения (поиск векторов движения) не только по яркостной но и по цветовой составляющей. Если видео не имеет цветового шума и не является черно-белым, то рекомендуется эту опцию включить. Для чёрно-белых видео и видео с шумящим цветом можно попробовать отключить эту опцию. Значение по умолчанию — включено. Если не задать этот параметр, то кодер выставит его автоматически на основании анализа видео. Если вы нуждаетесь установить эту опцию вручную, для специфических случаев, то перечень возможных параметров указан ниже. (MPEG -2, MPEG -4) auto
-cmp sad сумма абсолютных разностей, цифровое значение
-cmp sse сумма ошибок квадратов, цифровое значение
-cmp satd сумма абсолютных преобразованных разностей Адамара, цифровое значение (приемлем, рекомендован для качества разработчиками ffmpeg, цифровое значение )
-cmp dct сумма абсолютных преобразованных разностей DCT (дискретно-косинусного преобразователя) приемлем, цифровое значение
-cmp psnr cумма ошибок квадратного квантования (крайне не рекомендуется, низкое качество)
-cmp bit число битов, необходимых для блока, цифровое значение (приемлем)
-cmp rd уровень начала искажений — rate distortion — оптимальное соотношение сигнал-шум, цифровое значение (медленно, приемлем)
-cmp zero
-cmp vsad сумма абсолютных вертикальных разностей
-cmp vsse сумма квадратов вертикальных разностей
-cmp nsse сохраняющая шум сумма квадратов разностей
-cmp w53 5/3 вейвлет, ограниченное использование для частных случаев
-cmp w97 9/7 вейвлет, ограниченное использование для частных случаев
-subcmp Cуб-точечная функция сравнения движения по цветности. Разновидность значений смотрите выше в графе -cmp. (MPEG -2, MPEG -4) 1
-precmp Препроход анализа движения по цветности. Разновидность значений смотрите выше в графе -cmp. (MPEG -2, MPEG -4) 1
-mbcmp Функция сравнения макро-блока (по умолчанию). Разновидность значений смотрите выше в графе -cmp. (MPEG -2, MPEG -4) 1
-mbd Macroblock Decision. Алгоритм принятия решения о макро-блоке. Основные значения: simple (1) — то же что и mbcmp (см. выше) — простая функция,- наименьшее качество. bits (2) — использовать наименьшее колличество бит для формирования блока, — оптимальное качество. rd — использовать уровень перед началом искажений, — лучшее качество. (MPEG -2, MPEG -4) 1
-dct Включение алгоритма DCT. Оптимальные значения: , , . Где faan — это AAN DCT с плавающей точкой. (MPEG -2, MPEG -4) auto
-idct Select IDCT (Inverse Discrete Cosine Transform). Выбор реализации IDCT (обратного дискретно-косинусного преобразования): , ,
,

, , . (MPEG -2, MPEG -4) auto -dc Intra Digital Center Precision. Точность цифрового центра внутреннего косинусоидального преобразования DCT.
Возможные значения 8;9;10 — пример: . Наиболее точным являетя значение 10 и скорее всего подойдёт для оригинальной, качественной картинки, но — на практике лучше подбирать это значение индивидуально для каждого видео, ибо в определённых случаях, то или иное значение будет выглядеть либо хуже, либо лучше, — для конкретного видео (MPEG -2, MPEG -4) -ildctcmp Функция черезстрочного (интерлейсного) DCT сравнения. Возможные значения смотрите выше, в графе cmp. В некоторых случаях и при некоторых суммарных настройках кодирования будут работать только значения 1 или 2. (MPEG -2, MPEG -4) -me_method Алгоритмы оценки движения. Оптимальное значение для MPEG -2,4 только epzs: оно же dia, оно же x1. (MPEG -2, MPEG -4) Возможные значения: -dia_size Включение определения размера граней окна (ромб) «алмазной огранки» в пикселях, в алгоритме метода поиска движения diamond type в me_method — иными словами установка размера грани. Числовые значения от 1 и выше. Оптимально допустимое верхнее значение — 4. При значениях выше чем 4, будет выведено предупреждение о возможном неверном значении. Обычно алгоритм diamond type size (тип алмазной огранки), обсчитывает только 4 окружающих пикселя, по этому значение выше чем 4 по большему счёту бессмысленно, — но попробуйте поиграться с большими значениями, символизирующими более удалённые пикселя и больший размер окна (ромба), — но это может привести к артифактам и смазываню краёв. Теоретически, значение 1 (окно = точке) должно давать более точные края и частицы при кодировании, но при смазанных движениях — более уместными будут значения 2,3,4. Например, при установке значния -dia_size равным 4, при установке -pre_dia_size равным 1, будет выведено предупреждение о возможном неверном параметре. Вообщем и целом, — адекватное значение данного параметра подбирается опытным путём и желательно не должно превышать значения — 4. (MPEG -2, MPEG -4) 1-4 -pre_dia_size Включение предварительного анализа движения окружающего пикселя в установленном размере грани ключа -dia_size алгоритма diamond type. Описание см. выше. Подразумевает предварительный анализ размера возможного и допустимого движения, в пикселах (точках) относительно параметра -dia_size. Из описания выше следует, что ромбовидное окно -dia_size с размером стороны в 4 пиксела, скорее всего будет иметь очень плохой анализ возможной дальности окружения при движении, если -pre_dia_size будет равен — 1, вследствие чего кодер выведет предупреждение об этом на стандартный вывод терминала. (MPEG -2, MPEG -4)
О предпроходах и теории рендеринга можно ознакомится в относительно родственных статьях: Что такое предпроходы IM?, Diamond Types
И в этих, более родственных: Diamond-square algorithm, Moving average algorithms for diamond 1-4 -me_range Диапазон поиска векторов при анализе движения. Зависит от частоты кадров исходного видео (для меньшего fps требуются большие значения range). Из шаблона Main Concept, для кодека актуально значение . Подробнее смотрите выше, в таблице для x264
Для DivX Player и MPEG -2 — не выше чем -preme Включение алгоритма обсчёта предварительного движения (колличество предпроходов). Значения от 1 и выше. (MPEG -2, MPEG -4) -last_pred Установить колличество предсказателей движения из предыдущего кадра. Значения от 1 и выше. При больших значениях может очень сильно замедлить кодирование. Из учёта логики алгоритма diamond type (см. графу значений me_method) — минимально-оптимальным значением для данного алгоритма будет 4 или даже — 6-8. (MPEG -2, MPEG -4) -chroma_elim_threshold Порог отбрасывания одиночного коэффициента цветности (включая отрицательные значения). Коррекция цветности, — целое. (MPEG -4 only) -luma_elim_threshold Порог отбрасывания одиночного коэффициента яркости (включая отрицательные значения). Коррекция яркости, — целое. (MPEG -4 only) -qscale Задаем статический квант. Иногда для конкретизации требуется ввести для видео: пример . (MPEG -2, MPEG -4) -b_strategy Стратегия выбора I/P/B кадров. 0 — выключено, 1 — включено. Заметьте, что параметры этой опции в MPEG -4 ISO /IEC и MPEG -2 отличаются от параметров использования этой же опции в x264. (MPEG -2, MPEG -4) -mpeg_quant Выбор матрицы квантования mpeg, — не совместимо с , значение: -bf Задаем количество В-фреймов. (MPEG -2, MPEG -4) -trellis Задаем уровень треллис квантования. Решётчатое квантование для повышения сжатия. — выкл. — на макроблоках. — на всём. При значении может замыливать картинку. Все значения кроме нуля замедляют кодирование. (MPEG -2, MPEG -4) auto -vtag Смотрите выше, в таблице для кодека x264 FMP4

работа в ffmpeg с форматами mpeg-2 и DVD

1. Кодирование

Данный пример даёт отличное качество как для двухслойной заготовки (DVD-9), так и для DVD-4.5 … Опцию +loop можно отменить в зависимости от случая, особенно если эффект замыливания становится слишком заметным. Так же в зависимости от ситуации можно увеличить опцию -subq и покрутить опцию -trellis от 2 до 0 (полного отключения) и увеличить опции и до значения rd, в купе с опцией . Отсматривая конечные, опытные результаты на некотором кодируемом куске видео, в котором желательно должны присутствовать все типы сцен — от статических, до сцен со сложным и размашистым движением…

Крайне не рекомендовано использовать матрицы квантования при кодировании в x.264, который имеет свою адаптивную матрицу распределения квантов.

2. Работа с DVD директориями и файлами типа *.vob

Где файл VIDEO_TS.VOB — является файлом меню DVD-диска, а файлы с VTS_01_0.VOB по VTS_01_4.VOB — являются сегментами фильма. Чтобы их объеденить средствами FFmpeg, применяется команда , — , — пример:

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

Ключ Описание По умолчанию
Main Audio Option — Основные Аудио Опции
-ab Битрейт аудио. Пример: . Опция устарела, используйте 64kbit/s
-ac Количество каналов. Пример: -aс 6 2
-ar Частота дискредитации. Пример: -ar 48000 44100Hz
-q:a Качество аудио. Пример: , где 1 — высшее качество по шкале. При установленном битрейте включает VBR. См. так же qscale.
-vol Изменение уровня громкости аудио, где 256=normal. Пример: -vol 256
-af Включение функции добавления фильтров для аудио. Cмотрите ссылку в таблице x264 в графе . Этот список так же можно вызвать командой в терминале: ffmpeg -filters или подробнее с примерами FFmpeg-filters. Опция (ключ) должна стоять в строке задачи после ключа (c:a), в разделе строки для ключей аудио, в противном случае аудиофильтр работать не будет.
Пример применения -af: ускорение темпа на 4.26%: — подробнее смотрите в главе фильтров данного мануала.
Advanced Audio Option — Продвинутые Аудио Опции
-atag Установка и изменение fourcc тега для аудио
-channel_layout Включение схемы распределения каналов для многоканальных аудиодорожек. см Channel-Layout
-apre

2. Audio Encoders. wavpack
WavPack lossless audio encoder. — wiki-WavPack — Свободный и универсальный lossless и lossy аудиокодек. Позволяет сжимать (и восстанавливать) 8, 16, 24 и 32-битные аудиофайлы. Поддерживает многоканальные потоки (до 255) и высокие частоты дискретизации (до 192Кгц). Эффективность сжатия зависит от исходных данных, но обычно оно лежит в диапазоне между 30% и 70% для обычной популярной музыки, выше для классической музыки и других аудиоданных с более широким динамическим диапазоном. WavPack lossless audio encoder — это родной libavcodec WavPack кодер. Существует также кодер на основе libwavpack, но нет практически никаких оснований использовать его. Так же как и предыдущий, относится к категории кодеков без потерь. Имеет свои приватные опции:

Смотрите как же для mid/side и left/right — Основы Mid-Side записи

3. Audio Encoders. aac
Advanced Audio Coding (AAC) encoder. — Этот кодер является экспериментальным, родным для ffmpeg. В настоящее время поддерживается только профиль с низкой сложностью (AAC-LC). Чтобы использовать этот кодер, вы должны установить опцию для «experimental», например: . Так как этот кодер является экспериментальным, то он может вести себя несколько не стабильно время от времени. Для более стабильного кодирования в AAC можно применять энкодер libvo-aacenc, но имейте в виду, что он имеет худшее качество по сообщениям некоторых пользователей.
VisualOn AAC encoder — Требует присутствие libvo-aacenc заголовков и библиотеки при сборке ffmpeg. Вам необходимо настроить сборку с опцией –enable-libvo-aacenc –enable-version3. Этот кодер считается худшим, чем нативный экспериментальный FFmpeg AAC кодер aac -strict experimental, по заявлению пользователей. Пример установки: .
Libfaac AAC (Advanced Audio Coding) encoder wrapper. — Несвободный энкодер. Требует присутствие libfaac заголовков и библиотеки во время сборки ffmpeg. Вам необходимо настроить сборку с опцией –enable-libfaac –enable-nonfree. Этот кодер считается более качественным по отношению к aac -strict experimental. Для получения дополнительной информации см. проект libfaac — FAAC. Пример установки: . Помимо основных опций, указанных выше в таблице, имеет свои опции, которые можно посмотреть по заглавной ссылке. Имеет свои установленные профили кодирования:

4. Audio Encoders. ac3 and ac3_fixed
AC-3 audio encoders — Эти энкодеры реализуют часть стандарта ATSC A/52:2010 and ETSI TS 102 366, а так же недокументированный RealAudio 3 (a.k.a. dnet). AC3 кодер использует арифметику с плавающей точкой, в то время как ac3_fixed кодер использует только фиксированную точку цельночисленной математики. Это вовсе не означает, что один энкодер всегда будет быстрее чем другой, по этому тот или иной могут лучше подходить для конкретной системы. AC3 с плавающей точкой обычно дает более высокое качество звука для данного битрейта. AC3_fixed кодер не является кодеком по умолчанию для любого из выходных форматов, по этому он должен быть указан явно, c использованием конкретной опции . Имеет большой набор опций, которые можно посмотреть по заглавной ссылке.

7. Audio Encoders. libtwolame
TwoLAME MP2 encoder wrapper — Оптимизированная обертка для MPEG-1 Audio Layer II (MP2) энкодера на основе проекта tooLAME, Майка Ченга (Mike Cheng). Требует присутствие libtwolame заголовков и библиотеки при настройке и сборке ffmpeg. Вам необходимо настроить сборку ffmpeg с опцией –enable-libtwolame. Эффективны так же для применения родственные энкодеры — mpeg2video и mp2 (аудио).

Вы можете установить значение для любого ID3v2 в кадре с помощью ‘-‘ а затем кадр идентификатор. Например:

работа с аудио для видео

Каналы на выходе конфигурируются по следующей схеме: FL, FR, FC, LFE, SL, SR … и соответственно, в исходной папке дорожки стоит проименовать согласно каналам, которые они олицетворяют (см. пример). Это особенно важно для правильной сборки дорожки, во избежания путаницы каналов в результирующем треке и ухудшения звучания самого трека … Об опциях конфигурации каналов для всевозможных случаев можно посмотреть здесь: Channel Layout.
Пример:

Полезные фильтры -vf, -af

Полный перечень фильтров видео-vf и аудио-af можно посмотреть в родительской документации FFmpeg, здесь: FFmpeg Filters Documentation. В данном же мануале мы попытаемся рассмотреть наиболее необходимые фильтры, в которых наиболее чаще возникает необходимость в процессе кодирования.

1. Работа с чёрными полями кадра средствами ffmpeg

Значения параметров обрезки видеокадра задаются в пикселях. В последних версиях ffmpeg опции croptop,cropbottom,cropleft,cropright отсутствуют и взамен им предложено использовать родственные опции от графического видеофильтра . Например: -vf crop=width:height:x:y — где: width — горизонтальная «ширина» видеокадра. height — вертикальная «высота» видеокадра. x:y — размеры отступа от левого верхнего угла, это бывает необходимо чтобы сместить вырезанный кусок кадра от центра к противоположным углам — верхнему (нижнему) левому, или нижнему (верхнему) правому. Примеры использования опций обрезки от видеофильтра ffmpeg:

Внимание: При несимметричной обрезке значения width:height и x:y являются взаимозависимыми и, например, изменение x на 2 пикселя должно отразиться на значении width, которое от исходного 720 должно быть установлено в 718. Вторая установка фильтра по обрезке низ-право должна брать исходными значения после обрезки лево-верх в первой установке, см. пример выше. Для большего удобства и точности обрезку лучше вести с предпросмотром, добавляя по паре пикселей за раз и отсматривая изменения на результате кодирования, в качестве которого достаточного небольшого фрагмента видео.

Смотрите также главу Scaler Options — варианты (флаги) масштабирования для фильтра scale.

— реальный размер входного кадра, к которому требуется добавить чёрные поля (полосы). Например: 720×320 аспектом 2.24 до аспекта 16:9
— , где 720:400 — желаемый (выходной) размер кадра на выходе, аспектом 16:9. X:Y (0:40) — смещение по оси «X» (горизонталь) равно нулю, это значит что добавление чёрных полос по бокам не ведётся, а по оси «Y» (вертикаль) мы добавляем по 40 пикселей сверху и снизу, до масштаба 720×400 — где 400-320=80 .. 80/2=40.. Не забываем про функцию которая будет регулировать окончательное, выходное соотношение сторон вашего кадра. В данном примере аспект должен быть 16:9 (pad=aspect)
— означает цвет добавляемых полей (полос) — чёрный.

— опция для установки входного диапазона уровня цветности, принимает значения: auto — автовыбор; jpeg/full/pc — включение полного диапазона цветности (0-255 с яркостью в 8-bit); mpeg/tv — установка диапазона MPEG (TV) (16-235 с яркостью в 8-bit)
— принимает те же значения, что и

где:
24p = 23 (classic) — это инверсия (реверс) видео с 23.976fps до 29.970fps, после применения классического «NTSC 2:3 пуллдаун».
24p = 2332 — это универсальный алгоритм инверсии видео после применения, как «NTSC 2:3 пуллдаун» так и «NTSC 3:2 пуллдаун».
24p = 222222222223 — это инверсия видео с 24fps до 25 fps, после применения «PAL 2:2:2:2:2:2:2:2:2:2:2:3 пуллдаун», где каждый 12-й кадр показывается за время длительности трёх полей, вместо двух. Этот пуллдаун помогает избежать проблемы 4%-го ускорения видеофайла, но делает обращение процесса существенно более сложным по сравнению с классическим PAL 2:2 pulldown, который приводит к 4%-му ускорению видеофайла. PAL 2:2:2:2:2:2:2:2:2:2:2:3 пулдаун более актуален для музыкальных произведений, где изменение скорости звука на 4% может сместить тон и существенно повредить музыкальную партитуру. Если вы видите попеременную гребёнку каждые полсекунды, ваше видео скорее всего представляет собой 2:2:2:2:2:2:2:2:2:2:2:3 пуллдаун. В этом случае скорость аудиодорожки скорее всего изменять не придётся, но проверяйте это опытным путём. Если же вы не видите в видеофайле никакой гребёнки, то скорее всего ваш фильм есть PAL 2:2 пулдаун, где каждый кадр показывается за время длительности двух полей путем извлечения чётных и нечётных строк и в подобном случае лучше прибегать к методу ускорения-замедления видео-аудиопотока для соответствия желаемой вами частоты кадров на выходе, путём установки соответствующего ключа на входе строки кодирования. Смотрите в таблице основных и дополнительных ключей ffmpeg и в разделе Применение — Изменение скорости воспроизведения видеопотока с 23.976 до 25 fps.

— установка входного чередования полей:

— установка режима стратегии:

— чередование полей в кадре:

— компенсация движения по цветности:

— порог обнаружения изменений в сцене по яркости:

— если combatch выключен, то fieldmatch будет учитывать десятки гребенок решая, что соответствует финальному параметру. доступные значения:

— форсировать fieldmatch для расчета метрик гребёнок некоторых полей и напечатать их. этот параметр известен как ‘micout’ в TFM/VFM синтаксисе. доступные значения:

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

— параметр который решает, будет ли цветность рассматривается при расчёте метрик гребёнок, в кадре.

— — размер окна по осям x,y — используемого для обнаружения гребёнки.

— определяет колличество пикселов в гребенке, которые могут находиться в пределах любого из блоков (окон): и . при значении сombpel=0 в купе с максимальными значениями и , установка будет означать что ни один пиксел не будет определён как гребёнка. значение по умолчанию — 80

6. Yadif — yet another deinterlacing filter

7. Kerndeint — adaptive kernel deinterlacer filter

8. Mcdeint — motion-compensation deinterlacing filter

9. w3fdif — weston 3 field deinterlacing filter

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

10. pp — enable the postprocessing subfilters

Деблокирование

Экспериментальные фильтры деблокирования

Устранение звона, шума, коррекция яркости, квантование

Фильтры деинтерлейсинга постобработки

Собственные установки для pp-фильтра

Примеры установок для pp-фильтра

11. Adelay — Delay one or more audio channels.

12. Afade — Apply fade-in/out effect to input audio.

13. Atempo — Adjust audio tempo.

Для более-менее точной корректировки темпа аудиодорожки для видео, с 23,976 (24) кадр/сек до 25 кадров/сек — высчитываем изменение темпа в процентах по схеме: желаемый фрейрейт/исходный фреймрейт. Для начала, для наибольшей точности преобразовываем дробное к дробному: 25 — 25000/1001*100%=24.975 → (24.975/23.976=1.041666

14. Asetrate — Set the sample rate without altering the PCM data.

Для расчёта частоты используется формула: [исходная частота] * [желаемый фреймрейт] / [исходный фреймрейт] = [желаемая частота], например:

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

15. Subtitles — Draw subtitles on top of input video.

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

Мультиплексация-Демультиплексация средствами FFmpeg

1. Демультиплексация.

2. Мультиплексация.

В случае сохранения выходного файла именно в контейнер *.mkv при перекодировании видеоматериала, может дать неопределённый профиль, например Container profile=Unknown@3.1. Но, так же, во избежание этого — эту операцию можно попытаться провести в программе mkvmerge из пакета mkvtoolnix из репозитория ubuntu.

Ключ может быть обязателен в случае, если у входного mpeg-файла несоответствующий mpeg размер кадра (стандартным размером для mpeg является 720×576 для PAL и 720×480 для NTSC), в этом случае аудиодорожка воспроизводиться не будет. В таком случае ключи обязательны. В некоторых, не очень удачных случаях при повреждении потоков, это придётся сделать с применением принудительного перекодирования потоков с сохранением исходного качества. Приблизительно, — это можно осуществить при помощи ключей , , что является ремейком устаревшей опции . Возможные варианты ключей: , , .

Видеозахват средствами ffmpeg

1. Запись видео с экрана монитора средствами ffmpeg
X11grab — возможность создание скринкастов, которая подразумевает захват видеосигнала происходящего на экране монитора. Скринкаст, буквально — отбросок экрана; отливка экрана.

Номер устройства для аудио формируется по цифрам, — карта (card) и устройство (device), например :0,0 или :0,1. Также можно оформить опцию как hw:0,0 — некоторые версии ffmpeg не поймут эту опцию без . Знак запятая (не точка) в аудиодевайсах — может быть обязателен для некоторых версий ffmpeg, иначе ffmpeg не поймёт и откажется работать со строкой. Если этот метод не сработает, то попробуйте поставить , иногда это решает проблемы с определением устройства. Или используйте варианты обозначенные ниже.
Опция аудиоподсистемы у вас будет своя, та которая задействована в системе. В случае неработоспособности этой опции, можно попытаться определить её методом подбора. Если в системе используется звуковой сервер PulseAudio, то опция должна выглядеть как: . Если без PulseAudio, то:
Возможные варианты:

Опция в последних версиях ffmpeg означает тоже, что и , а точнее является её заменой. Для старых версий ffmpeg используйте . Для обеспечения наилучшего качества захвата видеоcигнала, используйте опцию (она же ), при условии что не будет глюков и притормаживаний, в противном случае лучше всё же использовать .

Cвободный lossless кодек qtrle — имеет меньшую по сравнению с mpeg4 нагрузку на процессор и память и по этому несколько более рекомендован для видеозахвата.

Смотрите также: Запись скринкастов (видео с рабочего стола). Для тех кто использует Ubuntu в дуалбуте с Windows, — осуществить захват экрана на Win можно через DirectShow фильтр.

2. Видеозахват с вебкамеры средствами ffmpeg
Для видеозахвата с вебкамер в среде Linux используется программный интерфейс video4linux2 или кратко «v4l2», например:

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

3. Видеозахват по шине FireWire через порт IEEE1394 средствами ffmpeg
Видеозахват по шине FireWire через порт IEEE1394 осуществляется с помощью iec61883. Чтобы включить это устройство ввода, необходимо наличие в системе установленных библиотек libiec61883, libraw1394 и libavc1394. Используйте опцию –enable-libiec61883 to compile with the device enabled.

— Выключает автоопределение DV/HDV. Это должно использоваться только тогда, когда автоматическое определение не работает точно, или если использование другого типа видео на входе должно быть запрещено. Попытка ввода DV устройства в качестве HDV устройства (или наоборот) не будет работать и может привести к непредсказуемым последствиям. Допустимы значения: dv, hdv. Значения по умолчанию — auto.
— Установка максимального размера буфера для поступающих данных, в кадрах. Для DV — это будет точное значение. Для HDV — это не точное количество кадров, так как HDV не имеет фиксированного размера кадра.
— Выбор устройства захвата с указанием на GUID. Захват будет производиться только с указанного устройства и не будет выполняться, если ни одно устройство с указанным GUID не найдено. Это может быть полезно для выбора входа, если подключено несколько устройств одновременно. Смотрите в /sys/bus/firewire/devices чтобы узнать идентификаторы GUID.

Покадровый вывод видео средствами FFmpeg

Image file demuxer. image2-2Image file demuxer — демультиплексор файлов изоражений. Предполагает форматирование файла при помощи опции , которая преобразует кадры видео в формат image2, поддерживающий вывод кадров в графические форматы (демультиплексация), типа jpg, png и пр. Для мультиплексации при помощи этой функции — размеры, пиксельные форматы, и формат расширения файла каждого из изображений в последовательности, — должны быть одинаковыми для всех файлов. Применение этой опции может быть актуально, если вы например хотите очистить определённый участок видео от помех, дефектов и артефактов при помощи графических редакторов.

созданные файлы изображений (кадров) будут последовательно пронумерованы как: 000001.png, 000002.png 000003.png и т.д.

изображения должны иметь имена 000001.png, 000002.png 000003.png и т.д.

Автоматизация кодирования

Принцип постановки операторов и команд bash для данного случая см. здесь Основы BASH. Часть 2. Так же можно обратиться к детальной статье о bash Advanced Bash Scripting по-русски

Пресеты FFmpeg

Версии FFmpeg из Git устанавливаются в домашнюю папку с папками: /home/user/bin , /home/user/ffmpeg_build , /home/user/ffmpeg_sources

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

Применение

Для работы в видеоредакторах, например Avidemux, иногда бывает необходима предварительная распаковка (разжатие) видеофайла в uncompressed — raw-форматы, для более удобной и безошибочной работы с ними. Включая применение цветового субсемплинга для файла, в случаях если вы получаете — зелёный, чёрный или рябой экран при загрузке рав-файла в Avidemux. Ибо Avidemux не совсем корректно работает с raw-файлами имеющими RGB-цветность. Но хорошо понимает файлы с YUV, YV12, NV и прочими цветовыми профилями основанными на 4:2:2 и 4:2:0 типах цветности, см. — Цветовая субдискретизация

1 fps (4,27%)=(25/23,976023976 x 100%), — или, если видеопоток ускорялся с 23,976 до 25, то точнее будет с предварительным преобразованием параметров до дробных значений -((25/1001)/(24/1001) x 100% = 1.0416666666

1,0426 ←или→ (24,975024975/23,976023976 x 100%). Это преобразование темпа так же можно сделать при помощи фильтров и (см. раздел фильтры). А так же в аудиоредакторе для Ubuntu — Audacity v2.0.0, в его подразделе «фильтры», «смена темпа». Audacity не работает с 5.1 дорожками, — дорожки придётся расщепить на 6 моно файлов и работать с каждым отдельно.

Ссылки, авторство

© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

источник

Читайте также:  Установка алюминиевых входных групп

Популярные записи

Установка второй печки на дэу нексия
Установка пиролиза отработанных масел
Установка tmp что это
Установка привода на багажник классика
Установка гофры на слив унитаза
Установка передних сидений назад

Добавить комментарий