簡體   English   中英

使用動畫UIView疊加從攝像機錄制視頻

[英]Recording video from camera with animated UIView overlay

我目前有一個帶有AVCaptureVideoDataOutput的攝像機,其樣本緩沖區委托實現如下:

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

處理樣本緩沖區,如果檢測到任何面,它們的邊界將顯示為AVCaptureVideoPreviewLayer上的視圖,該視圖顯示實時視頻輸出(面部上的矩形)。 視圖是動畫的,以便它們在面部檢測之間平滑移動。 是否有可能以某種方式記錄預覽圖層中顯示的內容並將其與覆蓋它的動畫UIView合並,最終結果是視頻文件?

通常,您可以使用低級方法制作視頻流,然后將其寫入文件。 我不是視頻格式,編解碼器等方面的專家,但方法是:

- 設置CADisplayLink,以便在屏幕重繪的每一幀都獲得觸發回調。 也許好的決定是將幀間隔設置為2以將目標視頻幀速率降低到~30 fps。

- 每次屏幕重繪都會拍攝預覽圖層和疊加層的快照

- 處理收集的圖像:壓縮一幀的每兩個圖像,然后從合並幀序列中制作視頻流。 我假設,iOS內置工具或多或少都有這么簡單的方法。

當然,分辨率和質量受到圖層參數的限制。 如果您需要來自攝像頭的原始視頻流,則應捕獲此流,然后直接在捕獲的視頻幀中繪制疊加數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM