Erste timestamp-jeder frame in einem video
Ich aufgenommen habe mehrere videos von der front cam von meinem tablet mit Android 5.2 Anwendung, die ich geschrieben habe. Ich habe gespeichert, den start-Zeitstempel in Millisekunden (Unix-Zeit) für jedes video.
Leider jedes video eine andere framerate (von 20 bis 30). Mit OpenCV ich bin in der Lage, um die framerate für jedes video:
import cv2
video = cv2.VideoCapture(videoFile)
fps = video.get(cv2.CAP_PROP_FPS)
Diese funktioniert gut und theoretisch könnte ich nur hinzufügen, 1000/fps (wegen Millisekunden) für jeden frame in dem video. Aber dies setzt Voraus, dass die framerate stabil bleibt während der gesamten Aufnahme. Ich weiß nicht, ob dies der Fall ist.
Gibt es eine Möglichkeit in Python, um die Zeitmarke (in Millisekunden) für jeden frame in das video unabhängig von der framerate?
InformationsquelleAutor machinery | 2017-12-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du willst
cv2.CAP_PROP_POS_MSEC
. Siehe all die verschiedenen capture-Eigenschaften hier.Edit: Tatsächlich, als Dan Mašek mich darauf hingewiesen, wenn Sie greifen, Eigentum, es sieht aus wie OpenCV ist genau das tun Berechnung (zumindest vorausgesetzt, Sie sind mit FFMPEG):
So dass es scheint, Sie sind immer angewiesen auf eine Konstante Framerate Annahme. Jedoch, selbst unter der Annahme einer Konstanten frame-rate, ist es wichtig, dass Sie durch multiplizieren der frame-Zahl und nicht nur halten Sie das hinzufügen
1000/fps
. Fehler aufbauen, wenn man immer wieder hinzufügen-Schwimmer, die in einem langen video, kann einen großen Unterschied machen. Zum Beispiel:Dies ist natürlich in Millisekunden, also vielleicht, es scheint nicht groß zu sein. Aber hier bin ich fast 1ms off in die Rechnung ein, und dies ist gerade für ein 11-Sekunden-video. Und sowieso, mit dieser Eigenschaft ist nur einfacher.
Nein. Der code oben, mit der frame-rate-Berechnung ist
Sind Sie darauf hindeutet, dass auch opencv nicht über eine Lösung für die Bereitstellung der frame-timestamp zuverlässig erhalten eine Feste frame-rate?
Ich bin nicht
Danke für die schnelle Bestätigung!
InformationsquelleAutor alkasm