Extrahieren Sie alle Frame-Zeitstempel mit ffmpeg

Extrahieren Sie alle Frame-Zeitstempel mit ffmpeg

Frage 1.Welchen ffmpegBefehl muss ich verwenden, um jede Framenummer mit ihrem Zeitstempel (Zeit in ms ab Beginn des Videos) zu extrahieren?

Erwartetes Ergebnis :

frame, ts
1, 34
2, 67
3, 101
4, 123
...

Frage 2.Können diese Zeitstempel sicher als Schlüssel zum Verweisen auf einen Frame verwendet werden?

Mit anderen Worten: Wenn ich andere Tools verwende, um ffmpegdasselbe zu tun, erhalte ich dann genau dieselben Zeitstempel?


Material:http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4

Antwort1

A1. Sie können sich nähern, indem Sie rennen

ffprobe video.mp4 -select_streams v -show_entries frame=coded_picture_number,pkt_pts_time -of csv=p=0:nk=1 -v 0

Ausgabe ist

0.000000,0
0.040000,3
0.080000,2
0.120000,4
0.160000,1
0.200000,7
0.240000,6
0.280000,8
0.320000,5

wo der dargestellte Frame nonline ist n(beginnend bei 1).

Die erste Spalte ist der Zeitstempel in Sekunden; die zweite Spalte ist die Kodierung und Dekodierung und die Dateispeicherreihenfolge der Frames.

A2. Sollte so sein. Andere Software entfernt möglicherweise den Startoffset – ffprobe tut das nicht. Andere Software passt möglicherweise die Timings unter Berücksichtigung der Audioverzögerung oder Bearbeitungslisten usw. an.

verwandte Informationen