Concatenação de arquivos com diferentes atributos de codecs?

0

Ele mostra na documentação do ffmpeg o seguinte exemplo de código:

ffmpeg -i input1.mp4 -i input2.webm \ 
-filter_complex "[0:v:0] [0:a:0] [1:v:0] [1:a:0] concat=n=2:v=1:a=1 [v] [a]" \
-map "[v]" -map "[a]" <encoding options> output.mkv

Ele diz um pouco abaixo do exemplo: "Como você pode inferir a partir deste exemplo, vários tipos de entrada são suportados, e qualquer coisa legível pelo ffmpeg deve funcionar. As entradas devem ter o mesmo tamanho de quadro e um punhado de outros atributos têm que combinar. "

Alguém sabe quais atributos precisam ser os mesmos? Abaixo estão meus dois arquivos que eu estou tentando mesclar e eu não sei se é mesmo possível, dadas as muitas diferenças nos atributos, apesar de ambos os arquivos serem de formato .avi:

(Sidenote: file2.avi foi colocado em loop a partir de uma imagem e eu estaria aberto para concatenar uma imagem em loop diretamente para file1.avi também).

ffmpeg -i file2.avi
ffmpeg version 2.6.1 Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
  libavutil      54. 20.100 / 54. 20.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 25.101 / 56. 25.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, avi, from 'file2.avi':
  Metadata:
    encoder         : Lavf56.25.101
  Duration: 00:05:00.09, start: 0.000000, bitrate: 389 kb/s
    Stream #0:0: Video: mpeg2video (Main) (mpg2 / 0x3267706D), yuv420p(tv), 1000x700 [SAR 1:1 DAR 10:7], 244 kb/s, 47.95 fps, 23.98 tbr, 47.95 tbn, 47.95 tbc
    Stream #0:1: Audio: mp2 (P[0][0][0] / 0x0050), 44100 Hz, stereo, s16p, 128 kb/s
At least one output file must be specified

file1.avi foi convertido de um arquivo de vídeo bruto .mts.

ffmpeg -i file1.avi
ffmpeg version 2.6.1 Copyright (c) 2000-2015 the FFmpeg developers
  built with Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/2.6.1 --enable-shared --enable-pthreads --enable-gpl --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --enable-libxvid --enable-vda
  libavutil      54. 20.100 / 54. 20.100
  libavcodec     56. 26.100 / 56. 26.100
  libavformat    56. 25.101 / 56. 25.101
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 11.102 /  5. 11.102
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  1.100 /  1.  1.100
  libpostproc    53.  3.100 / 53.  3.100
Input #0, avi, from 'file1.avi':
  Metadata:
    encoder         : Lavf56.25.101
  Duration: 00:16:28.06, start: 0.000000, bitrate: 6889 kb/s
    Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p, 1440x1080 [SAR 4:3 DAR 16:9], 6616 kb/s, 59.94 fps, 59.94 tbr, 59.94 tbn, 59.94 tbc
    Stream #0:1: Audio: ac3 ([0] [0][0] / 0x2000), 48000 Hz, stereo, fltp, 256 kb/s
At least one output file must be specified

Muito obrigado pela sua ajuda!

    
por Laurence Rosenzweig 12.11.2015 / 00:04

1 resposta

0

As dimensões em pixels precisam ser as mesmas para o filtro de concatenação funcionar.

No seu caso, você tem algumas opções: cortar, dimensionar ou preencher um dos arquivos para que as dimensões em pixels sejam as mesmas.

Observação - Eu não tive que concatenar com áudio antes, então mostrarei como fazer isso abaixo sem áudio. Você deve ser capaz de brincar com o comando abaixo em conjunto com as informações de áudio aquihttps: //trac.ffmpeg.org/wiki/Concatenate .... Pelo menos até que alguém mais experiente responda.

ffmpeg -i file1.avi -i file2.avi -filter_complex "[1:v]pad=1140:1080:(ow-iw)/2:(oh-ih)/2[p1];[0:v][p1]concat=n=2:v=1:a=0[out]" -map [out] ....... [transcode settings]
    
por 12.11.2015 / 18:02