ffmpeg - Как скопировать | Извлечь настройки кодировки из существующего медиа-файла?

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

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

Как я могу извлечь эти настройки из существующего файла, чтобы использовать их (напрямую) для кодирования с помощью ffmpeg?

Например, я получил mkv видео, закодированное с x264 с некоторыми настройками, а другой несжатый avi файл. Я хотел бы "скопировать" настройки кодирования, используемые для файла x264 MKV, чтобы перекодировать AVI с теми же настройками.

Примечание: я ищу способ, который не должен включать человеческую работу с "переводом" настроек из декодера в кодировщик. Это нормально, если мне нужно сначала извлечь настройки и сохранить их где-нибудь, но я хотел бы иметь возможность просто передать параметры чтения в командную строку или файл предварительной настройки | для ffmpeg.

1 ответ

Решение

Это не будет тривиальным. Я не знаю ни одного скрипта, который бы позаботился об этих задачах, которые обычно выполняются вручную. Для получения большей информации о настройках кодировки в Unix/Linux или OS X вы можете использовать mediainfo с некоторыми хитростями Bash.

Например, для видео в кодировке x264 в файле MP4:

mediainfo input.mp4 | grep "Encoding settings" | cut -d':' -f2- | tr '/' '\n' | sed 's/ //'

Это выведет список параметров x264:

cabac=1
ref=3
deblock=1:-1:-1
analyse=0x3:0x113
me=hex
subme=7
psy=1
…

Затем вы можете вручную передать эти параметры в двоичный файл x264.

Если вы пройдете через FFmpeg, это немного сложнее, поскольку не все параметры x264 могут или должны отображаться таким образом. Обратите внимание, что часто простая предустановка, настройка и спецификация профиля также подойдут (как видно из x264 --fullhelp и руководство по кодированию x264), и достаточно указать уровень CRF.

И это даже не касается аудио, где, к счастью, вариантов не так много.

Другие вопросы по тегам