ffmpeg - substitui o áudio no vídeo

48

Como substituir o áudio em um arquivo de vídeo usando um arquivo de áudio usando ffmpeg?

Eu imagino que o comando se parece com:

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

Isso é muito semelhante a Como substituir um fluxo de áudio em um arquivo de vídeo por vários fluxos de áudio? mas essa pergunta lida com várias faixas de áudio, o que complica muito, deixando claro que parte da solução é suficiente para uma simples troca de áudio.

qubodup
fonte

Respostas:

68

Você deseja copiar o fluxo de vídeo sem recodificar para economizar muito tempo, mas recodificar o áudio pode ajudar a evitar incompatibilidades:

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

-map 0:v:0mapeia o primeiro 0fluxo de vídeo (índice ) da entrada para o primeiro 0fluxo de vídeo (índice ) na saída.

-map 1:a:0mapeia o segundo 1fluxo de áudio (índice ) da entrada para o primeiro 0fluxo de áudio (índice ) na saída.

Se o áudio for mais longo que o vídeo, você desejará adicionar -shortestantes do nome do arquivo de saída.

Se não especificar um codec de áudio, ele selecionará automaticamente um codec em funcionamento. Você pode especificar um adicionando, por exemplo, -c:a libvorbisdepois -c:v copy.

qubodup
fonte
2
ou diretamente -c copypara apenas áudio re-mux e vídeo sem re-codificar qualquer um dos fluxos ^^
Francesco Yoshi Gobbo
1
Você sabe como converter o novo áudio no mesmo formato (com os mesmos parâmetros) que no vídeo original? Quero dizer, preciso que os novos áudios sejam codificados da mesma forma que o áudio antigo.
Kostanos
Funciona como charme !!
Tessaracter
@ Kostanos não automaticamente, mas eu gostaria. Por favor, faça outra pergunta. Você pode fazer referência a este para esclarecer que o seu é novo.
qubodup 4/09