2012-04-22 49 views
4

我有一個AVCaptureVideoPreviewLayer(工作正常,顯示視頻全屏),我試圖在另一個小視圖中顯示一個小預覽,我已添加爲子視圖。要做到這一點,我試圖使用renderInContext,但我得到的只是我的「預覽視圖」中的黑屏。AVCaptureVideoPreviewLayer不適用於renderInContext

[[self.captureView.layer.sublayers objectAtIndex:0] renderInContext:context]; 

任何其他各層看起來在我的「預覽視圖」做工精細,並展現出來,爲什麼不AVCaptureVideoPreviewLayer

回答

7

AVCaptureVideoPreviewLayer被實現爲一個OpenGL層,它不會實現renderInContext和CoreAnimation組合模型的其他方面,無論如何。

renderInContext的CALayer的文檔中Quoth Apple

重要這種方法的的Mac OS X v10.5的實現不支持整個Core Animation的組合模型。不呈現QCCompositionLayer,CAOpenGLLayer和QTMovieLayer圖層。此外,不使用3D變換的圖層,也不繪製指定backgroundFilters,filters,compositingFilter或蒙版值的圖層。未來版本的Mac OS X可能會添加對渲染這些圖層和屬性的支持。

從iOS 5.1.1開始,情況依然如此。

我處理的方式是使用AVCaptureVideoDataOutput並將捕獲的採樣緩衝區發送到Apple發佈的名爲imageFromSampleBuffer:的便利代碼示例technical QA1702