video2.mp4
hat spärliche Keyframes, während video1 jedes dritte Bild hat, konvertieren Sie es also so,
ffmpeg -i video2.mp4 -g 3 -profile:v baseline -movflags +faststart+rtphint out.mp4
Für einige Hintergrundinformationen erstelle ich eine Webseite, auf der die Wiedergabeposition in einem eingebetteten Video angepasst wird, wenn der Benutzer einen Bildlauf vornimmt. Wenn Sie also einen Bildlauf durchführen, wird das Video vorgerückt und umgekehrt. Dies funktioniert perfekt mit einer Videodatei, bleibt aber einer anderen unerträglich. Es sollte beachtet werden, dass ich mich nicht für Audio interessiere, es wäre am besten, wenn die Dateien tatsächlich keine hätten.
Ich weiß nicht viel über Videoformate, aber ich habe in den letzten Stunden viel gelernt!
Dies ist also die Arbeitsvideodatei:
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
Und hier ist der, der zurückbleibt:
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
Wie Sie im zweiten Bild sehen können, habe ich versucht, einen Hinweistonstrom (über coding.com) hinzuzufügen, um die Reaktionszeit der Wiedergabe zu verbessern, da ich sie gelesen habe. Dies ist jedoch hilfreich, jedoch ohne Erfolg.
Ich frage mich, ob mir ein paar nette Leute helfen können, den Unterschied zwischen den beiden Dateien herauszufinden, damit ich es mit beiden gut zusammenstellen kann. Vielen Dank!
BEARBEITEN
Hier sind die Ausgaben ffmpeg -i <file>.mp4 -f null -
wie in Kommentaren angefragt:
Und hier sind die Protokolle von ffmpeg -discard nokey -copyts -i <file>.mp4 -vf showinfo -f null -
:
video2.mp4
hat spärliche Keyframes, während video1 jedes dritte Bild hat, konvertieren Sie es also so,
ffmpeg -i video2.mp4 -g 3 -profile:v baseline -movflags +faststart+rtphint out.mp4