Usando o ffmpeg para converter o arquivo para o mesmo que outro

0

Para alguns antecedentes, estou criando uma página da Web que ajusta a posição de reprodução em um vídeo incorporado quando o usuário rola, portanto, se você rolar para baixo, o vídeo avançará e vice-versa. Isso funciona perfeitamente com um arquivo de vídeo, mas fica insuportavelmente em outro. Deve-se notar que eu não me importo com áudio, seria melhor se os arquivos não tivessem nenhum, na verdade.

Eu não sei muito sobre formatos de vídeo, mas aprendi muito nas últimas horas!

Então, esse é o arquivo de vídeo em funcionamento:

ffmpeg version 3.4.2 Copyright (c) 2000-2018 the FFmpeg developers
  built with Apple LLVM version 9.0.0 (clang-900.0.39.2)
  configuration: --prefix=/usr/local/Cellar/ffmpeg/3.4.2 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --disable-jack --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libavresample   3.  7.  0 /  3.  7.  0
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
  libpostproc    54.  7.100 / 54.  7.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video1.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.11.101
  Duration: 00:00:20.38, start: 0.000000, bitrate: 5367 kb/s
    Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 5199 kb/s, 24 fps, 24 tbr, 12288 tbn, 48 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      timecode        : 00:00:00:00
    Stream #0:1(eng): Data: none (rtp  / 0x20707472), 164 kb/s
    Metadata:
      handler_name    : HintHandler
    Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s
    Metadata:
      handler_name    : TimeCodeHandler
      timecode        : 00:00:00:00

E aqui está o que está atrasado:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video2.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isomiso2avc1mp41mp42
    encoder         : Lavf57.25.100
  Duration: 00:00:19.20, start: 0.000000, bitrate: 7435 kb/s
    Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 7206 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Data: none (rtp  / 0x20707472), 225 kb/s (default)
    Metadata:
      creation_time   : 2018-07-22T22:58:04.000000Z
      handler_name    : GPAC ISO Hint Handler

Como você pode ver no segundo, eu tentei adicionar um fluxo de dicas (via encoding.com) para melhorar a capacidade de resposta da reprodução, já que li que ajuda, mas sem sucesso.

Eu estou querendo saber se algum tipo de pessoa pode me ajudar a descobrir a diferença entre os dois arquivos, para que eu possa fazê-lo funcionar bem com os dois. Obrigado!

EDITAR

Aqui estão as saídas de ffmpeg -i <file>.mp4 -f null - solicitadas nos comentários:

E aqui estão os registros de ffmpeg -discard nokey -copyts -i <file>.mp4 -vf showinfo -f null - :

por developius 23.07.2018 / 01:38

1 resposta

1

video2.mp4 tem quadros-chave esparsos, enquanto o video1 tem um a cada 3 quadros, então converta assim,

ffmpeg -i video2.mp4 -g 3 -profile:v baseline -movflags +faststart+rtphint out.mp4
    
por 30.07.2018 / 07:18