Ich stecke fest und weiß wirklich nicht, wie ich es richtig erklären soll. Also habe ich es in die Laiendetails gesteckt.
Ich habe zwei mp4-Videos mit einer Länge von 30 Sekunden im Cloud-Speicher gespeichert.
Beide haben denselben Videoinhalt.
Mein Problem ist
Wenn ich video2
im Safari-Browser öffne, kann ich die genaue Zeit (in Sekunden) in der Fortschrittsleiste des Videoplayers nicht finden.
Was ich meine ist, zum Beispiel mache ich Schritte:
Der Videoplayer springt auf 0 und spielt statt ab 1 Sekunde.
Es gibt mehrere Zeitfenster, in video2
denen dieses Problem auftritt.
Hat dieses Problem jedoch video1
nicht.
video1-Info von ffmpeg
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'origin.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf56.4.101
Duration: 00:00:33.78, start: 0.000000, bitrate: 584 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 545 kb/s, 23.98 fps, 23.98 tbr, 11988 tbn, 47.95 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 32 kb/s (default)
Metadata:
handler_name : SoundHandler
video2-Info von ffmpeg
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'my.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : Lavf57.71.100
Duration: 00:00:35.04, start: 0.000000, bitrate: 734 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 90:67 DAR 160:67], 599 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
Metadata:
handler_name : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 129 kb/s (default)
Metadata:
handler_name : SoundHandler
video1
hat ein sehr kurzes Keyframe-Intervall - es hat alle paar Frames einen Keyframe. video2
nicht. Einige Spieler haben die Fähigkeit, lautlos bis zu Nicht-KF zu decodieren und vom Suchpunkt aus zu spielen. Wenn dies nicht der Fall ist, beginnt es beim nächsten Keyframe vor dem Suchpunkt.
ffprobe origin.mp4 -show_entries frame=key_frame,pkt_pts_time -select_streams v -of compact=p=0 | grep ame=1
Ergebnis:
key_frame=1|pkt_pts_time=0.000000
key_frame=1|pkt_pts_time=0.333667
key_frame=1|pkt_pts_time=0.667334
key_frame=1|pkt_pts_time=1.001001
key_frame=1|pkt_pts_time=1.334668
key_frame=1|pkt_pts_time=1.668335
key_frame=1|pkt_pts_time=2.002002
...
key_frame=1|pkt_pts_time=32.699366
key_frame=1|pkt_pts_time=33.033033
key_frame=1|pkt_pts_time=33.366700
key_frame=1|pkt_pts_time=33.700367
Video2:
ffprobe my.mp4 -show_entries frame=key_frame,pkt_pts_time -select_streams v -of compact=p=0 | grep ame=1
Ergebnis:
key_frame=1|pkt_pts_time=0.000000
key_frame=1|pkt_pts_time=2.293958
key_frame=1|pkt_pts_time=5.171833
key_frame=1|pkt_pts_time=7.257250
key_frame=1|pkt_pts_time=9.718042
key_frame=1|pkt_pts_time=13.221542
key_frame=1|pkt_pts_time=15.473792
key_frame=1|pkt_pts_time=21.271250
key_frame=1|pkt_pts_time=24.357667
key_frame=1|pkt_pts_time=29.195833
key_frame=1|pkt_pts_time=32.407375
-g 8
Zum ffmpeg-Transcode-Befehl hinzufügen, um alle 8 Frames einen Keyframe zu platzieren .
Xi Xiao
Gyan
Xi Xiao
jiamo