2011-05-01 07:45:34 +0000 2011-05-01 07:45:34 +0000
178
178

Como fundir ficheiros áudio e vídeo em ffmpeg

Quero fundir um ficheiro áudio (formato .wav ou .au) com um ficheiro vídeo (formato .mp4).

Por favor, sugira-me como conseguir isto. Quero fundir este ficheiro com um novo ficheiro de vídeo .mp4. Um comando ffmpeg seria muito bem-vindo.

Respostas (5)

286
286
286
2011-05-01 09:53:57 +0000

Fusão de vídeo e áudio, com recodificação de áudio

Veja este exemplo, retirado de esta entrada no blog mas actualizado para uma sintaxe mais recente. Deve ser algo para o efeito de:

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental output.mp4

Aqui, assumimos que o ficheiro de vídeo ainda não contém nenhum fluxo de áudio, e que pretende ter o mesmo formato de saída (aqui, MP4) que o formato de entrada.

O comando acima transcodifica o áudio, uma vez que os MP4s não podem transportar fluxos de áudio PCM. Pode utilizar qualquer outro codec de áudio desejado, se desejar. Veja o Guia de Codificação AAC para mais informações.

Se o seu fluxo de áudio ou vídeo for mais longo, pode adicionar a opção -shortest para que o ffmpeg deixe de codificar assim que um ficheiro termine.

Copiar o áudio sem recodificar

Se o seu contentor de saída pode tratar (quase) qualquer codec - como o MKV - então pode simplesmente copiar ambos os fluxos de áudio e vídeo:

ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv

Substituindo o fluxo de áudio

Se o seu vídeo de entrada já contém áudio, e pretende substitui-lo, precisa de dizer a ffmpeg qual o fluxo de áudio a tomar:

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental \
-map 0:v:0 -map 1:a:0 output.mp4

A opção map faz com que ffmpeg utilize apenas o primeiro fluxo de vídeo da primeira entrada e o primeiro fluxo de áudio da segunda entrada para o ficheiro de saída.

16
16
16
2015-01-10 01:11:26 +0000

Como não me é permitido escrever comentários à primeira resposta com a minha reputação, uma adenda aqui, porque tive este problema ao codificar webms. ** Se o seu fluxo de áudio é, por exemplo, mais longo do que o fluxo de vídeo** , tem de o cortar ou então terá o último frame de vídeo como uma imagem fixa e áudio a correr.

Para cortar qualquer um dos fluxos, pode usar -ss [hh:mm:ss] -t [ss] antes de cada um dos -i “file.ext”. -ss […] definirá o ponto de partida para cortar -t […] definirá o comprimento do segmento em segundos

Exemplo:

ffmpeg.exe -ss 00:00:10 -t 5 -i "video.mp4" -ss 0:00:01 -t 5 -i "music.m4a" -map 0:v:0 -map 1:a:0 -y out.mp4
8
8
8
2015-04-16 07:18:25 +0000

-open command promt (windows+r ->cmd->enter)

-then go to inside the folder where you have audio and video file

apply this cmd

ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4

Enter….you will get a new file named outPutFime.mp4 (a merged file of audio and video)

5
5
5
2015-03-05 15:29:32 +0000

Isto funcionou para mim:

ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4
1
1
1
2013-03-12 22:47:37 +0000

Tente usar mencoder (Sim, é baseado em ffmpeg, mas nunca se sabe). Eu uso o argumento -audiofile. Eu geralmente uso ffmpeg, no entanto, então siga este conselho com uma pitada de sal.

E, se você usar Windows, Mediacoder (não mais open source infelizmente) funciona… é basicamente um frontend para muitos codificadores gnu e alguns não livres.