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:
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
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.
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.
Respostas:
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:
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.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:
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:
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.fonte
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:
fonte
-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
Digite .... você receberá um novo arquivo chamado outPutFime.mp4 (um arquivo mesclado de áudio e vídeo)
fonte
-shortest
etiqueta é muito bacana. Muito mais simples do que na resposta do @ user136036.Isso funcionou para mim:
fonte
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.
fonte