Usando o FFMPEG com áudio e vídeo lado a lado

0

Digamos que eu tenha três arquivos de vídeo e dois arquivos de áudio: v1.mp4 , v2.mp4 , v3.mp4 , a2.mp3 , a1.mp3 .

Normalmente, alguém deseja "sobrepor" o áudio ao vídeo.

E se alguém realmente quiser o seguinte:

  • v1 reproduz, sem áudio
  • a1 reproduz áudio, sem vídeo
  • v2 reproduz, sem áudio
  • a2 reproduz áudio, sem vídeo
  • v3 reproduz vídeo, sem áudio

Tudo combinado em um mp4. Minhas tentativas falharam miseravelmente, com a combinação de áudio no vídeo, vídeo corrompido ou longos tempos de codificação.

No final, quero que esses fluxos de vídeo sejam concatenados com partes "intersticiais" que estão em branco e não têm vídeo. Eu tentei

  • Filtro complexo com color=black peças concatenadas. Funciona, mas reencode e é muito lento

    ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex "
    color=black:s=1280x720:d=5[s1];
    color=black:s=1280x720:d=10[s2];
    color=black:s=1280x720:d=15[s3];
    [0:v][s1][1:v][s2][2:v][s3]concat=n=6:v=1:a=0[aout]" -map [aout] -y output.mp4
    
  • Crie um monte de color=black mp4 a partir do zero e use um arquivo de mesclagem. Vídeo fica verde e reclama prazos.

    ffmpeg -t 60 -s 640x480 -f rawvideo -pix_fmt rgb24 -r 25 -i /dev/zero empty.mpeg
    ffmpeg -f concat -i mylist.txt -c copy test.mp4
    

(a lista é basicamente 1.mp4 , empty.mp4 , 2.mp4 , empty.mp4 , 3.mp4 )

  • Crie um monte de mp3 com apenas silêncio e junte-os.

    ffmpeg -f concat -i mylist.txt -c copy test.mp4
    

(mas a mylist contém silence.mp3 arquivos em vez de empty.mp4 entre cada um)

    
por MJB 05.10.2016 / 02:29

1 resposta

1

Abaixo o comando faz isso. Ele cria três fluxos de vídeo de áudio silencioso e dois de vídeo preto a partir do zero e, em seguida, mescla-os com outros fluxos por dois filtros concat . (com a suposição de que todas as suas entradas são de 15 segundos de duração).

ffmpeg -t 15 -f lavfi -i anullsrc -i a1.mp3 -t 15 -f lavfi -i anullsrc -i a2.mp3 -t 15 -f lavfi -i anullsrc -i v1.mp4 -f lavfi -i color=black:s=1280x720:r=25:d=15 -i v2.mp4 -f lavfi -i color=black:s=1280x720:r=25:d=15 -i v3.mp4 -filter_complex [0:a][1:a][2:a][3:a][4:a]concat=n=5:v=0:a=1[aud];[5:v][6:v][7:v][8:v][9:v]concat=n=5:v=1:a=0[vid] -c:v libx264 -c:a libmp3lame -map [vid] -map [aud] output.mp4

    
por 09.10.2016 / 18:14