5

AVCaptureVideoPreviewLayerサブビューとして追加した別の小さなビューに小さなプレビューを表示しようとしている(ビデオをフルスクリーンで表示しても問題なく動作する) があります。これを行うために、使用しようとしましrenderInContextたが、「プレビュー ビュー」に黒い画面が表示されるだけです。

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

他のレイヤーは正常に機能しているようで、「プレビュー ビュー」に表示されますが、なぜ表示されAVCaptureVideoPreviewLayerないのですか?

4

1 に答える 1

8

AVCaptureVideoPreviewLayer は OpenGL レイヤーとして実装されますが、それが意味するものは何でも、CoreAnimation 合成モデルの他のいくつかの側面と共に renderInContext を実装しません。

renderInContext の CALayer ドキュメントでAppleを引用します。

重要 このメソッドの Mac OS X v10.5 実装は、Core Animation コンポジション モデル全体をサポートしていません。QCCompositionLayer、CAOpenGLLayer、および QTMovieLayer レイヤーはレンダリングされません。さらに、3D 変換を使用するレイヤーはレンダリングされず、backgroundFilters、フィルター、compositingFilter、またはマスク値を指定するレイヤーもレンダリングされません。Mac OS X の将来のバージョンでは、これらのレイヤーとプロパティのレンダリングのサポートが追加される可能性があります。

iOS 5.1.1 の時点では、これはまだ当てはまります。

私が対処した方法はAVCaptureVideoDataOutput、キャプチャしたサンプル バッファを使用して、imageFromSampleBuffer:Apple がテクニカル QA1702で公開した便利なコード サンプルに送信することでした。

于 2012-05-15T20:58:37.043 に答える