ti-enxame.com

Como adicionar um novo áudio (não mixar) em um vídeo usando o ffmpeg?

Eu usei um comando como:

ffmpeg -i video.avi -i audio.mp3 -vcodec codec -acodec codec output_video.avi -newaudio

na última versão para adicionar nova faixa de áudio ao vídeo (não mixar). 

Mas atualizei o ffmpeg para a versão mais recente ( ffmpeg version git-2012-06-16-809d71d ) e agora nesta versão o parâmetro -newaudio não funciona.

Diga-me, por favor, como adicionar novo áudio ao meu vídeo (não mixar) usando ffmpeg.

108
Vetalll

Adicionar áudio ao vídeo: cópia de fluxo

ffmpeg -i video.avi -i audio.mp3 -codec copy -shortest output.avi
  • Omitir a opção -map usará a seleção padrão stream . Isso funcionará se sua entrada de vídeo não tiver áudio.
  • Este exemplo usa -codec copy para stream copy (sem re-codificação; a qualidade é preservada e é rápida).
  • A opção -shortest fará output.avi a mesma duração que a entrada mais curta.

Adicionar áudio ao vídeo: recodificar

Se a sua saída não gostar dos formatos originais, ou se você quiser alterar os formatos, você pode especificar os codificadores:

ffmpeg -i video.avi -i audio.mp3 -c:v libx264 -c:a libvorbis -shortest output.mkv

Para escolher manualmente fluxos específicos

Às vezes, a seleção do fluxo padrão não fornece o resultado desejado. Neste exemplo, video.mp4 tem áudio de vídeo and, e audio.m4a só tem áudio. Use -map para escolher o vídeo de video.mp4 e o áudio de audio.m4a:

ffmpeg -i video.mp4 -i audio.m4a -map 0:v -map 1:a -c copy -shortest output.mp4
  • -map 0:v - Da entrada 0 (a primeira entrada, que é video.mp4), escolha o (s) fluxo (s) vide.
  • -map 1:a - Na entrada 1 (a segunda entrada, audio.m4a), escolha o (s) audio stream (s).

Misturando/combinando duas entradas de áudio em uma

Tire um vídeo de video.webm e use o filtro -amerge para combinar o áudio de video.webm e audio.oga:

ffmpeg -i video.webm -i audio.oga -filter_complex \
"[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a libvorbis -ac 2 -shortest out.webm

Gerar áudio silencioso

Você pode usar o filtro anullsrc para fazer um fluxo de áudio silencioso. O filtro permite que você escolha o layout do canal desejado (mono, estéreo, 5.1, etc) e a taxa de amostragem.

ffmpeg -i video.mp4 -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 \
-c:v copy -shortest output.mp4

Veja também

230
llogan

música mp3 para wav

ffmpeg -i music.mp3 music.wav

truncar para caber vídeo

ffmpeg -i music.wav -ss 0 -t 37 musicshort.wav

misturar música e vídeo

ffmpeg -i musicshort.wav -i movie.avi final_video.avi
19
jwilson

Se o vídeo de entrada tiver várias faixas de áudio e você precisar adicionar mais uma, use o seguinte comando:

ffmpeg -i input_video_with_audio.avi -i new_audio.ac3 -map 0 -map 1 -codec copy output_video.avi

-map 0 significa copiar (incluir) todos os streams do primeiro arquivo de entrada (input_video_with_audio.avi) e -map 1 significa incluir todos os streams (neste caso um) do segundo arquivo de entrada (new_audio.ac3).

12
user2513149

Nenhuma dessas soluções funcionou bem para mim. Meu áudio original estava sendo sobrescrito, ou eu estava recebendo um erro como "falha ao mapear a memória" com o exemplo mais complexo de 'amerge'. Parece que eu precisava do filtro -filter_complex amix.

ffmpeg -i videowithaudioyouwanttokeep.mp4 -i audiotooverlay.mp3 -vcodec copy -filter_complex amix -map 0:v -map 0:a -map 1:a -shortest -b:a 144k out.mkv
2
Tod

Nada funcionou bem para mim (acho que foi porque meu vídeo .mp4 de entrada não tinha áudio) então eu achei que isso funcionou para mim:

ffmpeg -i input_video.mp4 -i balipraiavid.wav -map 0:v:0 -map 1:a:0 output.mp4

0
Alexandre Doré

Se você estiver usando uma versão antiga do FFMPEG e não conseguir atualizar, você pode fazer o seguinte:

ffmpeg -i PATH/VIDEO_FILE_NAME.mp4 -i PATH/AUDIO_FILE_NAME.mp3 -vcodec copy -shortest DESTINATION_PATH/NEW_VIDEO_FILE_NAME.mp4

Observe que eu usei -vcodec

0
Waqleh