2016-03-24 7 views
1

Ich nehme Video von der Rückkamera mit AVFoundation auf und möchte die Bilder verarbeiten, wenn ich den Startknopf drücke. Das Problem ist, dass ich in dem Moment, in dem ich die Start-Taste drücke, den Frame aus dem Sample-Puffer ergreife und ihn verarbeite, aber es scheint, dass der Frame, den ich bekomme, der letzte Frame ist, also nicht der aktuelle Frame, den ich möchte.Das korrekte erste Bild von AVCaptureVideoDataOutput - AVFoundation

Ich verstehe, dass Probenpuffer zu einem verzögerten Zeitpunkt kommen wird. Ich habe versucht, den Präsentationszeitstempel des Beispielpuffers zu verwenden, aber ich scheint nicht in der Lage zu sein, es synchron zu bekommen. Hat jemand schon einmal ein ähnliches Problem gehabt? Jede Hilfe oder Beratung wird geschätzt.

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

Dort bekomme ich meine Bilder.

Antwort

-1

Ich schaffe es, eine Lösung dafür zu finden, falls jemand anderes das gleiche Problem hat.

Von dem, was ich verstehe, garantiert Apple nicht, dass Sie in dem Moment, in dem Sie die Capture-Taste drücken, diesen Rahmen erhalten, weil sie in dem von Ihnen festgelegten seriellen Warteschlangenpuffer eingereiht sind. Sie werden es definitiv in der Reihenfolge, aber nicht in Echtzeit bekommen. Um die letzten Frames vor dem Drücken der Schaltfläche zu ignorieren, verwende ich NSDate, um die Zeit zu messen, die ich beim Starten der Capture-Sitzung (startTime) und den Zeitpunkt der Verarbeitung des ersten Frames im Capture-Output-Delegaten (endTime) benötigte.

also, Zeit genommen = endTime-Startzeit

Mit dieser Zeit können wir die Frame-Verzögerung, die in meinem Fall berechnen, ich bei 24fps erfassen und die Frame-Verzögerung ist 3 Frames, so dass, wenn der Benutzer drücken Sie die Capture Button, ich werde NICHT die ersten 3 Frames speichern/verarbeiten, so dass das Ergebnis mit dem, was der Benutzer erfasst, synchron sein kann.

Hoffe, dass hilft und fühlen sich frei, bessere Vorschläge zu geben und zu bearbeiten.