2016-06-29 13 views
5

mam obecnie kamerę z ustawionym AVCaptureVideoDataOutput której próbka buforu pełnomocnik jest realizowany w następujący sposób:rejestracji obrazu z kamery animowane UIView nakładki

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

Bufor próbki są przetwarzane i w przypadku wykrycia powierzchni, ich granice są pokazane jako widoki ponad AVCaptureVideoPreviewLayer, które wyświetlają obraz na żywo (prostokąty na ścianach). Widoki są animowane, aby poruszać się płynnie między wykrywaniem twarzy. Czy jest możliwe, aby nagrać, co jest pokazane w warstwie podglądu i połączyć je z animowanymi UIView s, które nakładają się na niego, a końcowym rezultatem jest plik wideo?

+0

szczęście w tym? – Roshit

Odpowiedz

1

Ogólnie rzecz biorąc, można użyć podejścia niskiego poziomu, aby utworzyć strumień wideo, a następnie zapisać go w pliku. Nie jestem ekspertem od formatów wideo, kodeków i tak dalej, ale podejście jest następujące:

- Skonfiguruj CADisplayLink do wywoływania wywołania zwrotnego w każdej klatce, którą ekran odrysowuje. Być może dobrą decyzją jest ustawienie odstępu klatek na 2, aby zmniejszyć docelową liczbę klatek na sekundę do ~ 30 fps.

- Za każdym razem, gdy ekran zostanie odświeżony, należy pobrać warstwę podglądu i nakładkę z poziomu snapshot.

- Zgromadzone obrazy: zip każde dwa obrazy jednej klatki, a następnie zrób strumień wideo z sekwencji scalonych klatek. Zakładam, że iOS ma wbudowane narzędzia do mniej lub bardziej prostego sposobu na zrobienie tego.

Oczywiście, rozdzielczość i jakość ograniczona do parametrów warstw. Jeśli potrzebujesz surowego strumienia wideo z kamery, powinieneś przechwycić ten strumień, a następnie narysować dane nakładki bezpośrednio w przechwyconych klatkach wideo.