colar áudio de um arquivo de vídeo para outro com um deslocamento de tempo conhecido

1

Eu tenho dois arquivos de vídeo que também têm faixas de áudio. Eu gostaria de copiar a faixa de áudio de um arquivo para o outro com um deslocamento de tempo 5000msec.

O único problema é que os arquivos de vídeo não têm a mesma duração, então eu gostaria que os arquivos de vídeo resultantes tivessem quadros em branco no começo / fim, caso o áudio comece antes ou termine depois do vídeo.

Estou procurando uma solução de linha de comando que possa ser usada no Linux, como ffmpeg, mencoder, etc.

EDITAR: execute ffmpeg -i 1.mp4 -i 2.mp4

ffmpeg version 0.8.9-4:0.8.9-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers
  built on Nov  9 2013 19:08:00 with gcc 4.6.3
*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2013-06-15 03:58:00
  Duration: 00:06:49.29, start: 0.000000, bitrate: 3009 kb/s
    Stream #0.0(und): Video: h264 (High), yuv420p, 1280x720, 2814 kb/s, 25 fps, 25 tbr, 50 tbn, 50 tbc
    Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 192 kb/s
    Metadata:
      creation_time   : 2013-06-15 03:58:05
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from '2.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2013-06-15 17:25:15
  Duration: 00:06:59.09, start: 0.000000, bitrate: 3159 kb/s
    Stream #1.0(und): Video: h264 (High), yuv420p, 1280x720, 2965 kb/s, 25 fps, 25 tbr, 50 tbn, 50 tbc
    Stream #1.1(und): Audio: aac, 44100 Hz, stereo, s16, 192 kb/s
    Metadata:
      creation_time   : 2013-06-15 17:25:21
At least one output file must be specified
    
por Tal Darom 09.12.2013 / 17:59

1 resposta

3

Ok. Vamos supor que você tenha 1.mp4 - vídeo com duração de 30 s, 2.mp4 - vídeo com duração de 30 s e deseja inserir áudio de 2.mp4 a 1.mp4 vídeo com deslocamento de 5 s. E também você precisa de quadros de vídeo pretos quando o fluxo de vídeo de 1.mp4 terminar. Então o comando deve ser assim:

ffmpeg -i 1.mp4 -i 2.mp4 -f lavfi -i "color=black:size=1920x1080:duration=5" \
-filter_complex \
"[0:v][2:v]concat[video_out]; \
 [0:a]atrim=duration=5[a1]; \
 [a1][1:a]concat=v=0:a=1[audio_out]" \
-map [video_out] -map [audio_out] out.mp4

Este comando faz o seguinte - tomamos 1.mp4 e 2.mp4 como entrada e também geramos 5 seg. de vídeo com quadros pretos usando lavfi. Você pode ter outro tamanho de seus vídeos de entrada, portanto, use o mesmo que 1.mp4 e 2.mp4 para lavfi (altere 1920x1080 para o tamanho de suas entradas).

Em seguida, combinamos 1.mp4 com quadros pretos do lavfi com concat , depois recortamos primeiro 5 seg de áudio de 1.mp4 com atrim e combinados com fluxo de áudio de 2.mp4 ( concat novamente). Em seguida, basta especificar que queremos os fluxos de saída em out.mp4 .

Espero que ajude.

    
por 18.12.2013 / 09:36