2012-12-03 8 views
11

Ich nehme einen Film mit AVCaptureSession und AVCaptureMovieFileOutput auf. Ich nehme auch Beschleunigungsdaten auf und versuche, die Beschleunigungsdaten mit dem Video auszurichten.AVCaptureSession und AVCaptureMovieFileOutput frame timestamp

Ich versuche einen Weg zu finden, um die Zeit zu bekommen, in der die Aufzeichnung der Videodatei begann. Ich tue das folgende:

currentDate = [NSDate date]; 
[output startRecordingToOutputFileURL:fileUrl recordingDelegate:self]; 

Doch nach meinen Tests, die Videoaufzeichnung beginnt 0,12 Sekunden, bevor der Anruf an startRecordingToOutputFileURL gemacht wird. Ich gehe davon aus, dass die verschiedenen Videopuffer bereits voll mit Daten sind, die der Datei hinzugefügt werden.

Gibt es trotzdem das eigentliche NSDate des ersten Frames des Videos?

+0

haben Sie mit dem NSTimer versucht? – kumar

+0

Wenn Sie einen Ausgabekanal einrichten, um die Raw-Frame-Beispieldaten zu erfassen, können Sie auf den Zeitstempel jedes Frames zugreifen. Aber ich war nicht in der Lage, AVCaptureSession sowohl mit einer Filmausgabe als auch mit rohen Frame-Sample-Daten zu konfigurieren, so dass ich nicht weiß, wie man den genauen Zeitstempel des ersten aufgenommenen Frames in der Filmdatei erhält. – algal

+0

Ich gebe Ihnen nur ein paar Hinweise, aber ich habe keine echte Antwort. AVFoundation viel KVO verwenden Bist du dir sicher, dass sich in "Echtzeit" keine Eigenschaften geändert haben? Haben Sie versucht, die AVItemMetadaten der Filmdatei zu drucken? – Andrea

Antwort

0

Wenn ich Ihre Frage richtig beantworte, möchten Sie den Zeitstempel wissen, wann das erste Bild aufgezeichnet wird. Sie könnten versuchen

CMTime captureStartTime = nil; 

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection { 

     if !captureStartTime{ 
     captureStartTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer); 
     } 
    // do the other things you want 
} 
+0

Als ich das ausprobierte, konnte ich die Filmdatei nicht aufnehmen. Haben Sie ein funktionierendes Beispiel, das sowohl die Zeitstempel für den Probenpuffer als auch eine Filmdatei erfasst? – algal