Quero mesclar um arquivo de áudio (formato .wav ou .au) com um arquivo de vídeo (formato .mp4).
Por favor, sugira-me como conseguir isso. Quero mesclar esses arquivos em um novo arquivo de vídeo .mp4. Um comando ffmpeg seria muito bem-vindo.
Quero mesclar um arquivo de áudio (formato .wav ou .au) com um arquivo de vídeo (formato .mp4).
Por favor, sugira-me como conseguir isso. Quero mesclar esses arquivos em um novo arquivo de vídeo .mp4. Um comando ffmpeg seria muito bem-vindo.
Respostas:
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 -shortest
opção para que o ffmpeg pare de codificar assim que um arquivo terminar.
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
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 map
opçã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.
ffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
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
-shortest
para cortar o final.
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)
-shortest
etiqueta é muito bacana. Muito mais simples do que na resposta do @ user136036.
Isso funcionou para mim:
ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4
Tente usar o mencoder (sim, é baseado no ffmpeg, mas você nunca sabe). Eu uso o -audiofile
argumento. 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.