Ich bin innerhalb einer AVCaptureSession und ich muss die Nummer des Rahmens kennen, der erfasst wird.AVCaptureSession genaue Zeitstempel, wenn ein Rahmen gegriffen wird
Wenn die Erfassung beginnt, setze ich einen Bildnummerzähler auf Null zurück. Daher ist der Zeitstempel des ersten Rahmens Null. Nachfolgende Frames haben capture Zeitstempel wie dies zum Beispiel:
0
0.033
0.066
0.099
etc
aber diese sind nicht genaue Zahlen, weil Frames verzichtet werden kann und geringe Unterschiede auftreten können. Ich muss den genauen Zeitpunkt wissen, zu dem ein Bild aufgenommen wurde. mit
Ich habe diese Methode, die jedes Mal, wenn ein Rahmen ...
ergriffen wird genannt- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
innerhalb dieser Methode, die ich die cmtime eines Rahmens erhalten und an die Konsole aus:
CMTime timestamp = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
NSLog(@"%lld", timestamp.value);
aber das gibt mir wilde Zahlen wie
156317265588132
156317307247388
156317348909678
156317390573453
156317432230603
den Unterschied zwischen einer num ber und die nächste ist etwa 41.659.256, die nicht eine Zeit in Sekunden mit Dezimalstellen darstellt, wenn der Rahmen gegriffen wird.
wenn ich teilen diese Zahlen durch den Zeitplan,
NSLog(@"%lld", timestamp.value/timestamp.timescale);
die Zahlen verwendet, wird das gleiche für 25 Frames sein und wird sich nur ändern, wenn eine volle Sekunde erreicht wird.
Wie erhalte ich den genauen Zeitstempel in Sekunden mit Dezimalstellen, wenn ein Rahmen gegriffen wird? Vielen Dank.
Ich habe versucht, diese, den Wert zu erhalten, aber es gab mir einen falschen Wert nicht aktuellen Zeitstempel –
CMTimeGetSeconds (Timestamp) – Sten