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.
И это даже не касается аудио, где, к счастью, вариантов не так много.