ffmpeg-преобразование одного аудиопотока, копирование остальных

Итак, у меня есть этот ввод:

Stream #0:0(eng): Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 1k tbn, 25 tbc (default)
Stream #0:1(eng): Audio: dts (DTS-HD MA), 48000 Hz, 5.1(side), s32p (24 bit) (default)
Stream #0:2(rus): Audio: dts (DTS-HD MA), 48000 Hz, 5.1(side), s32p (24 bit)
Stream #0:3(ger): Audio: dts (DTS-HD MA), 48000 Hz, 5.1(side), s32p (24 bit)
Stream #0:4(ita): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
Stream #0:5(eng): Subtitle: subrip
Stream #0:6(ita): Subtitle: subrip (default)
Stream #0:7(eng): Subtitle: dvd_subtitle, 1920x1080
Stream #0:8(ita): Subtitle: subrip

и я хочу этот вывод:

Stream #0:0(eng): Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 1k tbn, 25 tbc (default)
Stream #0:1(eng): Audio: aac (default)
Stream #0:2(eng): Audio: dts (DTS-HD MA), 48000 Hz, 5.1(side), s32p (24 bit) 
Stream #0:3(rus): Audio: dts (DTS-HD MA), 48000 Hz, 5.1(side), s32p (24 bit)
Stream #0:4(ger): Audio: dts (DTS-HD MA), 48000 Hz, 5.1(side), s32p (24 bit)
Stream #0:5(ita): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
Stream #0:6(eng): Subtitle: subrip (default)
Stream #0:7(ita): Subtitle: subrip 
Stream #0:8(eng): Subtitle: dvd_subtitle, 1920x1080
Stream #0:9(ita): Subtitle: subrip

так в основном конвертировать аудио поток 1 в AAC (то же качество, только AAC вместо DTS, в идеале переименование название и сохранить по умолчанию) и вставить в качестве потока 1 в выходе. Кроме того, сохраните все существующие потоки, просто скопировав их на один индекс вперед.

пока я сделал такую команду:

sudo ffmpeg -i 'input.mkv' -map 0:0 -c:v copy -map 0:1 -c:1:a aac -ac 6 -ab 320k -map 0:1 -map 0:2 -map 0:3 -map 0:4 -map 0:5 -map 0:6 -map 0:7 -map 0:8 -c:s copy 'output.mkv'

но результат не такой, как я ожидал:

 Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (dts (dca) -> aac (native))
  Stream #0:1 -> #0:2 (dts (dca) -> vorbis (libvorbis))
  Stream #0:2 -> #0:3 (dts (dca) -> vorbis (libvorbis))
  Stream #0:3 -> #0:4 (dts (dca) -> vorbis (libvorbis))
  Stream #0:4 -> #0:5 (ac3 (native) -> vorbis (libvorbis))
  Stream #0:5 -> #0:6 (copy)
  Stream #0:6 -> #0:7 (copy)
  Stream #0:7 -> #0:8 (copy)
  Stream #0:8 -> #0:9 (copy)

так чего мне не хватает, чтобы аудиопоток, который я хочу скопировать, не был преобразован?
Соус будет также переназначить sub по умолчанию eng:)

8
задан user2019741
20.02.2023 21:48 Количество просмотров материала 2474
Распечатать страницу

1 ответ

использовать

ffmpeg -i 'input.mkv' -c copy \
                      -map 0:v:0 \
                      -map 0:a:0 -c:a:0 aac -ac:a:0 6 -b:a:0 320k \
                      -map 0:a \
                      -map 0:s \
                      -disposition:s 0 -disposition:s:0 default  'output.mkv'

первый порядок удаляет все существующие флаги субтитров, а второй устанавливает флаг по умолчанию для 1-го потока субтитров.

1
отвечен Gyan 2023-02-22 05:36

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх