私はAVCaptureSessionの中にいるので、キャプチャされるフレームの番号を知る必要があります。AVCaptureSessionフレームがグラブされたときの正確なタイムスタンプ
キャプチャが開始されると、フレーム番号カウンタをゼロにリセットします。したがって、最初のフレームのタイムスタンプはゼロになります。後続のフレームは、例えば、このようなキャプチャのタイムスタンプを持っています:
0
0.033
0.066
0.099
etc
が、フレームがドロップすることができ、わずかな違いが起こる可能性があるため、これらは、正確な数値ではありません。フレームがキャプチャされた正確な時刻を知る必要があります。
I持って、私はフレームのCMTIMEを入手し、使用してコンソールにそれを印刷することができ、このメソッドの内部フレームがつかんされるたびに呼び出され、このメソッド...- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection
:
CMTime timestamp = CMSampleBufferGetPresentationTimeStamp(sampleBuffer);
NSLog(@"%lld", timestamp.value);
が、これは私に
156317265588132
156317307247388
156317348909678
156317390573453
156317432230603
1 NUMの違いのような野生の数字を与えます次のフレームはフレームがつかまれたときの小数点以下の桁数を秒単位で表していない41,659,256です。
Iは、25のフレームのために同じになり
NSLog(@"%lld", timestamp.value/timestamp.timescale);
番号を使用して、タイムスケールすることによって、この数字を分割し、完全な第二に達したときにのみ変更される場合。
フレームがグラブされたときの小数点以下の正確なタイムスタンプを秒単位で取得するにはどうすればよいですか?ありがとう。
私はこの、値を取得しようとしましたが、それは私に間違った値ではなく現在のタイムスタンプ –
CMTimeGetSeconds(タイムスタンプ)を得た – Sten