ffmpeg para converter vídeos em um

0

O ffmpeg tem um wiki na Concatenate no link

Faz concatenação sem qualquer conversão. Eu estou querendo saber se é possível fazer a concatenação ao fazer a conversão de formato. Eu acredito que os dois seguintes irão fazer,

 ffmpeg -i Talk-A.MP4 -i Talk-B.MP4 -c:a libvorbis -q:a 5 -c:v libx264 -x264-params crf=22 -pix_fmt yuv420p -y -vf scale=960:-1 -af volume=2 Talk.mkv
 ffmpeg -i "concat:Talk-A.MP4|Talk-B.MP4" -c:a libvorbis -q:a 5 -c:v libx264 -x264-params crf=22 -pix_fmt yuv420p -y -vf scale=960:-1 -af volume=2 Talk.mkv

Mas ambos dão apenas o resultado da primeira parte no arquivo de saída.

Então, tentei exatamente o que o wiki sugeriu:

 ffmpeg -i "concat:Talk-A.MP4|Talk-B.MP4" -c copy Talk.mp4

Mas isso também produz um arquivo de saída contendo apenas a primeira parte.

O que poderia estar errado?

ATUALIZAÇÃO:

OK. Eu estava esperando evitar o mais complicado possível, e agora sei que tenho que ir para a solução mais complicada, como explicado na resposta de LordNeckbeard.

Minha pergunta atualizada é: como combinar mais de dois arquivos juntos, digamos três? Porque não tenho certeza sobre a sintaxe. Por favor, confirme se o seguinte está correto:

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

E explique como escalar o vídeo e ajustar o volume do áudio nesse caso.

Obrigado

PS meu ffmpeg

$ ffmpeg --version
ffmpeg version 2.7.2-1~vivid1 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.2 (Ubuntu 4.9.2-10ubuntu13)
  configuration: --prefix=/usr --extra-version='1~vivid1' --build-suffix=-ffmpeg --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libdcadec --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librtmp --enable-libschroedinger --enable-libshine --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libxvid --enable-libzvbi --enable-opengl --enable-nonfree --enable-libfdk-aac --enable-libvo_aacenc --enable-version3 --enable-x11grab --enable-libdc1394 --enable-libiec61883 --enable-libzmq --enable-frei0r --enable-libx264 --enable-libsoxr --enable-openal --enable-libopencv --enable-libx265
  libavutil      54. 27.100 / 54. 27.100
  libavcodec     56. 41.100 / 56. 41.100
  libavformat    56. 36.100 / 56. 36.100
  libavdevice    56.  4.100 / 56.  4.100
  libavfilter     5. 16.101 /  5. 16.101
  libavresample   2.  1.  0 /  2.  1.  0
  libswscale      3.  1.101 /  3.  1.101
  libswresample   1.  2.100 /  1.  2.100
  libpostproc    53.  3.100 / 53.  3.100
Unrecognized option '-version'.
    
por xpt 11.08.2015 / 17:00

1 resposta

1

Concat

errado

Você está usando a concat errado ( protocolo , filter e demuxer ). Você deve usar o filtro ou o demuxer, mas no seu caso eu recomendo o filtro já que você está filtrando e recodificando de qualquer maneira.

Como mencionado no link do wiki que você forneceu:

While the demuxer works at the stream level, the concat protocol works at the file level. Only certain files (mpg and mpeg transport streams, possibly others) can be concatenated with the concat protocol. This is analogous to using cat on UNIX-like systems or copy on Windows.

Exemplo de comando de filtro de concat

ffmpeg -i input0.mp4 -i input1.mp4 -i input2.mp4 -filter_complex \
"[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[v0][a0]; \
 [v0]scale=960:-2,format=yuv420p[v]; \
 [a0]volume=2[a]" \
-map "[v]" -map "[a]" \
-c:v libx264 -crf 22 -c:a libvorbis -q:a 5 output.mkv
por 11.08.2015 / 20:31