Mapeie o áudio da sobreposição com o FFMpeg?

0

Eu e meu amigo cada um tirou um vídeo de nós jogando online um com o outro, e agora eu quero fazer um único vídeo comparando-os lado a lado.

Eu já fiz isso antes, mas nunca precisei lidar com o áudio. O que eu quero fazer é pegar o fluxo de áudio de um clipe e o fluxo de áudio do outro clipe e tê-los em fluxos separados no novo clipe, semelhante à maneira como os vídeos em DVD têm dois fluxos separados para cada idioma.

Isso é o que eu tentei usar o ffmpeg:

ffmpeg -i "Fraps 2014-11-14 07-51-04-70_cut.mp4" -vf "movie='FFsplit-141106-222552_cut.mp4' [in1]; [in]fps=fps=30, setpts=PTS-STARTPTS, scale=1680:1040, pad=iw*2:ih:iw:0[in0]; [in0][in1] overlay=0:0 [out]" input_sidebyside.mp4

No que diz respeito ao vídeo, tudo funciona, os vídeos estão em sincronia. Mas apenas o fluxo de áudio esquerdo é copiado. O -map parece não reconhecer o áudio do filtro de filme. Eu tentei -map 1:a:0 , mas isso me diz que o fluxo não existe.

É possível mapear o áudio do filtro de sobreposição no ffmpeg?

    
por tomysshadow 16.11.2014 / 08:36

1 resposta

1

De fato, overlay só funciona em vídeo. Você precisa amix das duas fontes de áudio. -map 1 não funcionará, pois o segundo filme é carregado por um filtro. Você pode usar dois -i entradas e amix seu áudio:

ffmpeg \
-i "Fraps 2014-11-14 07-51-04-70_cut.mp4" \
-i "FFsplit-141106-222552_cut.mp4" \
-filter_complex "[0:v]fps=fps=30, setpts=PTS-STARTPTS, scale=1680:1040, \
  pad=iw*2:ih:iw:0[in0]; [in0][1:v] overlay=0:0 [outv]; \
[0:a][1:a] amix [outa]" -map "[outv]" -map "[outa]" input_sidebyside.mp4

Algo parecido com o acima. Não se esqueça de especificar codificadores e configurações de qualidade. Por exemplo, você pode querer explicitamente dizer -c:v libx264 -crf 22 para definir a qualidade x264.

    
por 16.11.2014 / 09:46