Как заменить аудиопоток в видеофайле несколькими аудиопотоками?

Я хочу заменить второй аудиопоток (0: 2) в видеофайле с двумя аудиопотоками и дать ему ярлык, если это возможно. Как я могу это сделать? Все команды ffmpeg, которые я нашел, не позволят мне сохранить второй аудиопоток.

  • FFMPEG - конвертировать видео в timelapse
  • Как разместить границу вокруг видео для предотвращения отсечения контента
  • Как извлечь субтитры из видео с помощью ffmpeg?
  • FFmpeg объединяет аудио и смежные части между собой
  • FFMPEG: конвертировать MP4 в тот же MP4 (в другом контейнере) и добавлять субтитры
  • Как создать синусоидальную волну с ffmpeg?
  • Используйте кодек ffmpeg для объединения файлов * .ts в один mp4
  • Как удалить несколько сегментов из видео, сохраняя звук, используя FFmpeg?
  • Ffmpeg: Ошибка входа в трубу
  • Ffmpeg последовательность изображений
  • FFmpeg аудио и видео не синхронизированы
  • Как обеспечить множественный ввод в ffmpeg?
  • One Solution collect form web for “Как заменить аудиопоток в видеофайле несколькими аудиопотоками?”

    Используйте опцию -map для выбора ваших потоков. Выбор потока по умолчанию будет выбирать только один из каждого типа потока, поэтому необходимо использовать -map .

    Заменить второй аудиопоток

    Введите описание изображения здесь

     ffmpeg -i video.mkv -i audio.mp3 -map 0:v -map 0:a:0 -map 1:a \ -metadata:s:a:0 language=eng -metadata:s:a:1 language=sme -codec copy \ -shortest output.mkv 
    • 0:v0 означает первый вход, который является video.mkv . v означает «выбрать тип видеопотока».

    • 0:a:00 означает первый вход, который является video.mkv . A означает «выбрать тип аудиопотока». Последний 0 относится к первому аудиопотоку с этого входа. Если используется только 0:a , тогда будут отображаться все видеопотоки.

    • 1:a1 относится ко второму входу, который является audio.mp3 . A означает «выбрать тип аудиопотока».

    • -codec copy будет -codec copy поток (повторный мультиплекс) вместо кодирования. Если вам нужен специальный аудиокодек, вы должны указать -c:v copy (чтобы сохранить видео), а затем, например, -c:a libmp3lame чтобы перекодировать аудиопоток в MP3.

    • -shortest закончит вывод, когда заканчивается самый короткий вход.

    Объедините два аудиопотока в один

    Введите описание изображения здесь

     ffmpeg -i vid.mkv -i aud.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[a]" \ -map 0:v -map "[a]" -c:v copy -c:a aac -strict experimental -b:a 192k -ac 2 \ -shortest out.mp4 
    • Фильтрация требует повторного кодирования, и здесь amerge фильтр amerge , поэтому в этом примере звук не может быть скопирован потоком.
    Давайте будем гением компьютера.