Eu usei um comando como:
ffmpeg -i video.avi -i audio.mp3 -vcodec codec -acodec codec output_video.avi -newaudio
na versão mais recente para adicionar nova faixa de áudio ao vídeo (não mixar).
Mas atualizei o ffmpeg para a versão mais recente (versão ffmpeg git-2012-06-16-809d71d ) e agora nesta versão o parâmetro -newaudio
não funciona.
Diga-me, por favor, como posso adicionar novo áudio ao meu vídeo (não mixar) usando ffmpeg
.
Respostas:
Adicionar áudio ao vídeo: copiar cópia
-map
opção utilizará a seleção de fluxo padrão . Isso funcionará se sua entrada de vídeo não tiver áudio.-codec copy
para transmitir cópia (sem recodificação; a qualidade é preservada e é rápida).-shortest
opção teráoutput.avi
a mesma duração que a menor entrada.Adicione áudio ao vídeo: recodifique
Se sua saída não gostar dos formatos originais ou se você quiser alterar os formatos, poderá especificar os codificadores:
Para escolher manualmente fluxos específicos
Às vezes, a seleção de fluxo padrão não fornece o resultado desejado. Neste exemplo,
video.mp4
tem vídeo e áudio eaudio.m4a
apenas áudio. Use-map
para escolher o vídeovideo.mp4
e o áudio deaudio.m4a
:-map 0:v
- Na entrada0
(a primeira entrada, que évideo.mp4
), escolha ov
(s) fluxo (s) de vídeo.-map 1:a
- Na entrada1
(a segunda entrada, que éaudio.m4a
), escolha oa
(s) fluxo (s) de áudio.Misturando / combinando duas entradas de áudio em uma
Grave vídeos de
video.webm
e use o filtro amerge para combinar o áudio devideo.webm
eaudio.oga
:Gere áudio silencioso
Você pode usar o filtro anullsrc para criar um fluxo de áudio silencioso. O filtro permite escolher o layout de canal desejado (mono, estéreo, 5.1, etc) e a taxa de amostragem.
Veja também
fonte
-map 0:0 -map 1:0
vez de-map 0 -map 1
fez o truque para mim. Obrigado!-shortest
opção funcionou melhor para mim.música mp3 para wav
truncar para caber no vídeo
misture música e vídeo
fonte
Se o vídeo de entrada tiver várias faixas de áudio e você precisar adicionar mais uma, use o seguinte comando:
-map 0
significa copiar (incluir) todos os fluxos do primeiro arquivo de entrada (input_video_with_audio.avi
) e-map 1
significa incluir todos os fluxos (neste caso, um) do segundo arquivo de entrada (new_audio.ac3
).fonte
Nenhuma dessas soluções funcionou para mim. Meu áudio original estava sendo substituído ou eu estava recebendo um erro como "falha ao mapear memória" com o exemplo mais complexo de 'amerge'. Parece que eu precisava de -filter_complex amix.
fonte
Nada funcionou muito bem para mim (acho que foi porque meu vídeo .mp4 de entrada não tinha áudio), então achei que funcionou para mim:
fonte
Se você estiver usando uma versão antiga do FFMPEG e não puder atualizar, poderá fazer o seguinte:
Observe que eu usei -vcodec
fonte
Código para adicionar áudio ao vídeo usando ffmpeg.
Se a duração do áudio for maior que a duração do vídeo, o áudio será cortado na duração do vídeo. Se você quiser áudio completo em vídeo, remova -shortest do cmd.
String[] cmd = new String[]{"-i", selectedVideoPath,"-i",audiopath,"-map","1:a","-map","0:v","-codec","copy", ,outputFile.getPath()};
fonte
Environment.getExternalStorageDirectory().getAbsolutePath()+"/videoaudiomerger/"+"Vid"+"output"+i1+".mp4");
?