Сохраните входные кодеки

Сохраните входные кодеки

У меня есть файл MKV с видео H.264 и звуком AAC. В FFmpeg аудиокодек по умолчанию для MKV — AC3, поэтому если вы выполните команду, например,

ffmpeg -i infile.mkv -ac 2 outfile.mkv

он перекодирует аудио в AC3. Я могу запустить эту команду и все будет хорошо

ffmpeg -i infile.mkv -ac 2 -c:a libfdk_aac outfile.mkv

Однако есть ли способ сказать "использовать входной кодек"? Обратите внимание, что это copyне сработает, поскольку я вношу изменения в аудиопоток.

решение1

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

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

Обратите внимание, что кодировщик по умолчанию для вашего формата выходного контейнера может меняться в зависимости от поддерживаемых вами внешних библиотек кодирования. Например, если ваша ffmpegсборка поддерживает libvorbis, она будет использовать его вместо ac3 для выходов mkv.

ffprobeможет помочь:

$ ffprobe -v 0 -of flat=s=_ -select_streams a:0 -show_entries stream=codec_name input.mkv
streams_stream_0_codec_name="aac"

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

Связанный контент