2016-06-29 6 views
5

I derzeit eine Videokamera mit einem AVCaptureVideoDataOutput deren Probenpuffer delegieren eingerichtet ist, als solche implementiert:Aufnahme von Video von der Kamera mit animierten UIView overlay

- (void)captureOutput:(AVCaptureOutput *)captureOutput 
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer 
     fromConnection:(AVCaptureConnection *)connection 
{ 
    NSArray *detectedFaces = [self detectFacesFromSampleBuffer:sampleBuffer]; 
    [self animateViewsForFaces:detectedFaces]; 
} 

Der Probenpuffer verarbeitet wird und wenn ein Flächen erfasst werden, Ihre Grenzen werden als Ansichten über eine AVCaptureVideoPreviewLayer angezeigt, die die Live-Videoausgabe anzeigt (Rechtecke über den Gesichtern). Die Ansichten sind so animiert, dass sie sich zwischen den Gesichtserkennungen bewegen. Ist es möglich, das, was in der Vorschau-Ebene angezeigt wird, irgendwie aufzuzeichnen und es mit den animierten UIView s, die es überlagern, zu verbinden, wobei das Endergebnis eine Videodatei ist?

+0

Glück dabei? – Roshit

Antwort

1

Im Allgemeinen können Sie Low-Level-Ansatz verwenden, um einen Video-Stream zu erstellen, und dann in eine Datei schreiben. Ich bin kein Experte mit Videoformaten, Codecs und so weiter, aber Ansatz ist:

- Richten Sie eine für gefeuerten Rückruf jedes Bild der Bildschirm neu gezeichnet. Vielleicht ist es eine gute Entscheidung, das Bildintervall auf 2 zu setzen, um die Videobildrate des Ziels auf ~ 30 fps zu reduzieren.

- Jedes Mal, wenn der Bildschirm neu gezeichnet wird, nehmen Sie einen snapshot Vorschaulayer und Overlay.

- Verarbeiten Sie gesammelte Bilder: Zip jede zwei Bilder von einem Rahmen dann erstellen Sie einen Video-Stream aus der Reihenfolge der zusammengeführten Frames. Ich nehme an, iOS hat eingebaute Tools für mehr oder weniger einfache Möglichkeiten, dies zu tun.

Natürlich sind Auflösung und Qualität auf die Parameter der Ebenen beschränkt. Wenn Sie einen Rohvideostream von der Kamera benötigen, sollten Sie diesen Stream erfassen und dann Ihre Overlay-Daten direkt in die von Ihnen erfassten Videoframes zeichnen.

Verwandte Themen