Sincronizando dois vídeos com diferentes taxas de quadros usando o FFmpeg

1

Deve ser fácil. Na verdade, provavelmente é fácil. Eu provavelmente sou apenas idiota. Eu tenho dois vídeos, filmados ao mesmo tempo, mas com duas câmeras diferentes. Um vídeo é 1920x1080 @ 60, o outro é [email protected]. Eu quero fazer um vídeo onde ambos funcionem simultaneamente (picture-in-picture, tela dividida, o que quer que seja; não é esse o problema). Quando faço isso, um dos vídeos termina alguns segundos antes do outro. Eu tenho certeza que isso é por causa das diferentes taxas de quadros, mas nenhuma combinação de -framerate ou -r, seja como um parâmetro de entrada ou saída (ou ambos), está me dando vídeos sincronizados. Eles começam em sincronia, mas no final há alguns segundos de diferença.

Eu tentei várias coisas, conforme indicado acima. Aqui estão alguns testes (não se importe com os valores reais; a maioria deles estava apenas tentando ver qual foi o efeito):

ffmpeg -i% 1 -r% sobrecarga% -c: v libx264 -profile: v alto nível 4.1 -preset muito rápido -y% output%

ffmpeg -i% 1 -filter: v "setpts = 0.25 * PTS" -c: v libx264 -profile: v alto-nível 4.1 -preset muito rápido -y% output%

ffmpeg -r% inrate% -i% 1 -r% sobrecarga% -c: v libx264 -profile: v alto-nível 4.1 -preset veryfast -shortest -y% output%

Aqui estão as informações de cada arquivo:

ffmpeg version N-91330-ga990184007 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 7.3.0 (GCC)
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth
  libavutil      56. 18.102 / 56. 18.102
  libavcodec     58. 20.103 / 58. 20.103
  libavformat    58. 17.100 / 58. 17.100
  libavdevice    58.  4.101 / 58.  4.101
  libavfilter     7. 25.100 /  7. 25.100
  libswscale      5.  2.100 /  5.  2.100
  libswresample   3.  2.100 /  3.  2.100
  libpostproc    55.  2.100 / 55.  2.100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000020412f7a040] st: 0 edit list: 1 Missing key frame while searching for timestamp: 1000
[mov,mp4,m4a,3gp,3g2,mj2 @ 0000020412f7a040] st: 0 edit list 1 Cannot find an index entry before timestamp: 1000.
Guessed Channel Layout for Input Stream #0.1 : stereo
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '60fps.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 0
    compatible_brands: qt  
    creation_time   : 2015-01-01T00:04:15.000000Z
  Duration: 00:05:40.00, start: 0.000000, bitrate: 31673 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 29717 kb/s, 60 fps, 60 tbr, 60k tbn, 120k tbc (default)
    Metadata:
      creation_time   : 2015-01-01T00:04:15.000000Z
      handler_name    : iCatch Alias Data Handler
      encoder         : iCatch AVCC
    Stream #0:1(eng): Audio: pcm_s16le (sowt / 0x74776F73), 44100 Hz, stereo, s16, 1411 kb/s (default)
    Metadata:
      creation_time   : 2015-01-01T00:04:15.000000Z
      handler_name    : iCat Alias Data Handler
[avi @ 0000020413a3e280] non-interleaved AVI
Guessed Channel Layout for Input Stream #1.1 : mono
Input #1, avi, from '29fps.avi':
  Duration: 00:05:04.36, start: 0.000000, bitrate: 7266 kb/s
    Stream #1:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj422p(pc, bt470bg/unknown/unknown), 640x480, 7071 kb/s, 29.85 fps, 29.85 tbr, 29.85 tbn, 29.85 tbc
    Stream #1:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 8000 Hz, mono, s16, 128 kb/s
At least one output file must be specified

Eu sei que isso é simples. Mas eu não posso chegar a isso, e meus dias de busca não vêm com isso. Meu Kung Fu é inferior. Eu me inclino para você.

    
por Brian 09.07.2018 / 02:31

0 respostas