Como mesclar arquivos de áudio e vídeo no ffmpeg


Respostas:


260

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

Veja este exemplo, extraído desta entrada do blog, mas atualizado para obter 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 arquivo de vídeo ainda não contém fluxo de áudio e que você deseja ter o mesmo formato de saída (aqui, MP4) que o formato de entrada.

O comando acima transcodifica o áudio, pois os MP4s não podem transmitir fluxos de áudio PCM. Você pode usar qualquer outro codec de áudio desejado, se desejar. Consulte o Guia de codificação do AAC para obter mais informações.

Se o seu fluxo de áudio ou vídeo for mais longo, você poderá adicionar a -shortestopção para que o ffmpeg pare de codificar assim que um arquivo terminar.

Copiando o áudio sem recodificar

Se o seu contêiner de saída puder manipular (quase) qualquer codec - como MKV -, você poderá simplesmente copiar os fluxos de áudio e vídeo:

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

Substituindo o fluxo de áudio

Se a sua entrada de vídeo já contém áudio e você deseja substituí-la, você precisa informar ao ffmpeg qual fluxo de áudio deve ser:

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 mapopção faz com que o ffmpeg use apenas o primeiro fluxo de vídeo da primeira entrada e o primeiro fluxo de áudio da segunda entrada para o arquivo de saída.


Eu tentei, mas ffmpeg está congelando enquanto fundindo
Sandy

4
Eu não acho que os contêineres mp4 podem ter fluxos de áudio wav. Tenteffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
Lucas

1
Estou usando isso e ele está substituindo o áudio original do áudio de entrada. E se eu quiser mesclar o áudio de entrada com o áudio da entrada de vídeo?
Iqbal Malik

Linhas de comando muito doces ...
Chandra Nakka

Ótimo, eu usei o ffmpeg -i video.mp4 -i audio.wav \ -c: v copy -c: uma saída experimental restrita aac.mp4 para mesclar MP3 com arquivo Wav ... => mp4 5 minutos, processado em 30 segundos ..Obrigado
sonida

12

Como não tenho permissão para escrever comentários para a primeira resposta com minha reputação, um adendo aqui, porque tive esse problema ao codificar webms.
Se o seu fluxo de áudio for, por exemplo, mais longo que o fluxo de vídeo , será necessário cortá-lo ou, caso contrário, você terá o último quadro de vídeo como imagem estática e áudio em execução.

Para cortar qualquer fluxo, você pode usar -ss [hh: mm: ss] -t [ss] antes de cada um dos -i "file.ext".
-ss [...] definirá o ponto inicial para cortar
-t [...] definirá a duração 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

4
Você também pode usar apenas -shortestpara cortar o final.
nyuszika7h

5

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

-então vá para dentro da pasta onde você tem arquivos de áudio e vídeo

aplique esse cmd

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

Digite .... você receberá um novo arquivo chamado outPutFime.mp4 (um arquivo mesclado de áudio e vídeo)


2
Realmente não é necessário descrever como usar a linha de comando aqui. Está praticamente implícito que os usuários serão capazes de descobrir isso. Especialmente porque o solicitante especificou FFmpeg. Mesmo assim, a -shortestetiqueta é muito bacana. Muito mais simples do que na resposta do @ user136036.
Kat

3
Isso irá recodificar tudo, o que provavelmente não é o que se deseja.
Mivk


'ffmpeg' não é reconhecido como um comando interno ou externo,
UniCoder

Você deve adicionar o ffmpeg ao PATH wikihow.com/Install-FFmpeg-on-Windows
Arete


1

Tente usar o mencoder (sim, é baseado no ffmpeg, mas você nunca sabe). Eu uso o -audiofileargumento. No entanto, geralmente uso o ffmpeg, portanto, siga este conselho com uma pitada de sal.

E, se você usa o Windows, o Mediacoder (que infelizmente não é mais de código aberto) funciona ... é basicamente uma interface para muitos codificadores de gnu e alguns não-livres.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.