ffmpeg one-liner para vídeos de álbuns do youtube com imagens únicas e múltiplos arquivos de áudio

0

Estou tentando gerar uma saída de uma única imagem e vários arquivos de áudio para fazer o upload para o youtube usando o ffmpeg. Depois de várias iterações de tentativa e erro, cheguei ao seguinte comando:

ffmpeg -loop 1 -framerate 2 -i image.jpg -f concat -safe 0 -i <(for f in ./*.mp3; do echo "file '$PWD/$f'"; done) -c:v libx264 -preset ultrafast -crf 0 -tune stillimage -c:a copy -shortest -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" output.mkv

Este comando gera um vídeo, mas a duração está errada (normalmente, ele abrange apenas o primeiro par de arquivos de áudio). A saída parece começar bem:

ffmpeg version N-86364-ge2bbb95 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
  configuration: --prefix=/home/sk/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/sk/ffmpeg_build/include --extra-ldflags=-L/home/sk/ffmpeg_build/lib --bindir=/home/sk/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree
  libavutil      55. 63.100 / 55. 63.100
  libavcodec     57. 96.101 / 57. 96.101
  libavformat    57. 72.101 / 57. 72.101
  libavdevice    57.  7.100 / 57.  7.100
  libavfilter     6. 91.100 /  6. 91.100
  libswscale      4.  7.101 /  4.  7.101
  libswresample   2.  8.100 /  2.  8.100
  libpostproc    54.  6.100 / 54.  6.100
Input #0, image2, from '00-berg_dorf_-_blow_cuts-front.jpg':
  Duration: 00:00:00.50, start: 0.000000, bitrate: 21367 kb/s
    Stream #0:0: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 1417x1417, 2 fps, 2 tbr, 2 tbn, 2 tbc
Input #1, concat, from '/dev/fd/63':
  Duration: N/A, start: -0.025056, bitrate: 259 kb/s
    Stream #1:0: Audio: mp3, 44100 Hz, stereo, s16p, 259 kb/s
    Metadata:
      encoder         : LAME3.99r
    Stream #1:1: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 700x700 [SAR 72:72 DAR 1:1], 90k tbr, 90k tbn, 90k tbc
    Metadata:
      title           : cover
      comment         : Cover (front)

Em seguida, lança um grande número de avisos de DTS antes de parar:

...
[matroska @ 0x2f10700] Non-monotonous DTS in output stream 0:1; 
previous: 548676, current: 548606; changing to 548676. This may result in incorrect timestamps in the output file.
[matroska @ 0x2f10700] Non-monotonous DTS in output stream 0:1; previous: 548676, current: 548632; changing to 548676. This may result in incorrect timestamps in the output file.
[matroska @ 0x2f10700] Non-monotonous DTS in output stream 0:1; previous: 548676, current: 548658; changing to 548676. This may result in incorrect timestamps in the output file.
frame= 1109 fps= 12 q=0.0 Lsize=   44341kB time=00:09:12.00 bitrate= 658.0kbits/s speed=5.95x    
video:6561kB audio:37466kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.712531%
[libx264 @ 0x2e9de00] frame I:5     Avg QP: 0.00  size:1341215
[libx264 @ 0x2e9de00] frame P:1104  Avg QP: 0.00  size:    11
[libx264 @ 0x2e9de00] mb I  I16..4: 100.0%  0.0%  0.0%
[libx264 @ 0x2e9de00] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4:  0.0%  0.0%  0.0%  0.0%  0.0%    skip:100.0%
[libx264 @ 0x2e9de00] coded y,uvDC,uvAC intra: 100.0% 100.0% 100.0% inter: 0.0% 0.0% 0.0%
[libx264 @ 0x2e9de00] i16 v,h,dc,p: 29% 71%  0%  0%
[libx264 @ 0x2e9de00] i8c dc,h,v,p:  1% 71% 29%  0%
[libx264 @ 0x2e9de00] kb/s:96.93

Agora, não preciso me limitar ao formato de entrada de áudio ou de saída de vídeo. Gostaria apenas de saber se o que estou tentando fazer é realizável com um one-liner com qualquer formato, ou se etapas intermediárias são inevitáveis.

    
por delete000 04.06.2017 / 22:11

0 respostas