ffmpeg - заменить аудио в видео

48

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

Я представляю, что команда выглядит так:

ffmpeg -i v.mp4 -i a.wav -MAGIC video-new.mp4

Это очень похоже на Как заменить аудиопоток в видеофайле несколькими аудиопотоками? но этот вопрос касается нескольких звуковых дорожек, что очень усложняет его, делая неясным, какой части решения достаточно для простого обмена звуком.

qubodup
источник

Ответы:

68

Вы можете скопировать видеопоток без перекодирования, чтобы сэкономить много времени, но перекодирование аудио может помочь предотвратить несовместимость:

ffmpeg -i v.mp4 -i a.wav -c:v copy -map 0:v:0 -map 1:a:0 new.mp4

-map 0:v:0отображает первый (индексный 0) видеопоток с входа на первый (индексный 0) видеопоток на выходе.

-map 1:a:0отображает второй (индексный 1) аудиопоток со входа на первый (индексный 0) аудиопоток на выходе.

Если аудио длиннее, чем видео, вы хотите добавить -shortestперед именем выходного файла.

Не указав аудиокодек, автоматически выберет рабочий. Вы можете указать один, например, добавив -c:a libvorbisпосле -c:v copy.

qubodup
источник
2
или напрямую -c copyперемюксировать аудио и видео без перекодирования любого из потоков ^^
Франческо Йоши Гоббо,
1
Знаете ли вы, как конвертировать новое аудио в том же формате (с теми же параметрами), что и в оригинальном видео? Я имею в виду, что мне нужно, чтобы новые аудио кодировались так же, как это было со старым аудио.
Костанос
Работает как шарм!
Tessaracter
@ Kostanos не автоматически, но я бы хотел. Пожалуйста, задайте еще один вопрос. Вы можете сослаться на это, чтобы уточнить, что у вас новое.
qubodup