Я хотел быть в состоянии сделать это несколько раз сейчас, поэтому я спрашиваю.
Если у меня есть существующий видео- или аудиофайл ffmpeg
, mplayer
и другие медиапроигрыватели могут обнаружить хотя бы некоторые из его «свойств», такие как используемый контейнер, кодек и битрейт, возможно, различного качества и определенных настроек кодирования и т. Д.
Как я могу извлечь эти настройки из существующего файла, чтобы использовать их (напрямую) для кодирования с помощью ffmpeg?
Например, я получил mkv
видео, закодированное x264
с некоторыми настройками, и другой несжатый avi
файл. Я хотел бы «скопировать» настройки кодирования, используемые для файла x264 mkv, для перекодирования avi с теми же настройками.
Примечание: я ищу способ, который не должен включать человеческую работу с «переводом» настроек из декодера в кодировщик. Это нормально, если мне нужно сначала извлечь настройки и сохранить их где-нибудь, но я хотел бы иметь возможность просто передать параметры чтения в командную строку или файл предварительной настройки | для ffmpeg.
ffprobe
(особенно с-show_streams
и-show_format
вариантами) и использовать эту информацию для сценария важных вещей-crf
обычно рекомендуется использовать эту опцию. См. Руководство по кодированию FFmpeg и x264 .channels:6
видеофайл, но для его кодирования вам понадобится переключатель-ch:6
. Некоторые коммутаторы используют одну букву, некоторые используют две и т. Д.Ответы:
Там нет автоматического способа сделать это. Вы должны посмотреть на параметры исходного файла и применить их к выходному файлу.
В большинстве случаев это будут следующие:
-filter:v scale
или-s:v
-filter:v fps
-r
-pix_fmt
(например,-pix_fmt yuv420p
должно дать вам лучшую совместимость)-g
Но даже если у вас все в порядке, некоторым устройствам может потребоваться конкретная запатентованная информация, встроенная в поток битов.
Что касается конкретной задачи использования
x264
, это не будет тривиальным. Я не знаю ни одного скрипта, который бы позаботился об этих задачах, которые обычно выполняются вручную. Для получения большей информации о настройках кодирования в Unix / Linux или OS X вы можете использоватьmediainfo
некоторые приемы Bash.Например, для видео в кодировке x264 в файле MP4:
Это выведет список параметров x264:
Затем вы можете вручную передать эти параметры в двоичный файл x264.
Если вы пройдете через FFmpeg, это немного сложнее, поскольку не все параметры x264 могут или должны отображаться таким образом. Обратите внимание, что часто подойдет и простая предустановка, настройка и спецификация профиля (как видно
x264 --fullhelp
из руководства по кодированию x264 ), и достаточно указать уровень CRF.И это даже не касается аудио, где, к счастью, вариантов не так много.
источник
mediainfo
вывод и сопоставил бы эти параметры с ffmpeg-x264-params
. (См. Также руководство по кодированию x264 ). Но если вам нужно общее решение для всех видов кодеков / кодировщиков или контейнерных форматов, вам нужно написать умеренно сложный скрипт, который выполняет преобразование.