OpenGLを使用してiPhoneカメラプレビュー「ビデオ」にエフェクトを適用する
-
28-10-2019 - |
質問
私の目標は、次のようなカスタムカメラビューコントローラーを作成することです。
- 背面カメラと、可能な場合は前面カメラの両方を使用して、4つのインターフェース方向すべてで写真を撮ることができます。
- プレビューの「ビデオ」とフル解像度の写真を適切に回転および拡大縮小します。
- プレビュー「ビデオ」とフル解像度の写真の両方に(単純な)効果を適用できます。
私の以前の取り組みは、
この質問に記載されています。私の最近の試みは、AppleのサンプルGLVideoFrame(WWDC 2010から)を変更することでした。ただし、セッションプリセットがAVCaptureSessionPresetPhotoの場合、iPhone4でプレビュー「ビデオ」を正しく表示することができませんでした。 誰かがこれを試したことがありますか、または例がこのプリセットで機能しない理由を知っていますか?
Appleの例では、640x480のビデオサイズと1280x720のデフォルトのテクスチャサイズのプリセットを使用しています。プリセットがAVCaptureSessionPresetPhotoの場合、iPhone4の背面カメラは852x640しか配信しません。
プリセットがAVCaptureSessionPresetPhotoの場合のiOSデバイスのカメラのビデオ/写真のサイズ:
- iPhone 4背面:ビデオは852x640、写真は2592x1936
- iPhone 4フロント:ビデオと写真は640x480です
- iPod Touch 4Gバック:ビデオと写真は960x720です
- iPod Touch 4Gフロント:ビデオと写真は640x480です
- iPhone 3GS:ビデオは512x384、写真は2048x1536
更新
Brad LarsonのColorTrackingの例を切り替えたときに、同じ文字化けしたビデオの結果が得られました(< a href="http://www.sunsetlakesoftware.com/2010/10/22/gpu-accelerated-video-processing-mac-and-ios" rel="nofollow noreferrer">ブログ投稿)を使用するAVCaptureSessionPresetPhoto。
解決
問題は、AVCaptureSessionPresetPhoto
がコンテキスト認識になり、ビデオキャプチャと静止画像キャプチャのどちらを表示しているかに基づいて異なる解像度で実行されることです。
ライブプレビューは、行に余分なバイトが埋め込まれるため、このモードでは異なります。これはある種のハードウェア最適化だと思います。
いずれにせよ、ここで私がどのように問題を解決したかを見ることができます:
他のヒント
AVCaptureSessionPresetPhotoは写真を撮るためのものであり、ライブフィードをキャプチャするためのものではありません。ここでそれについて読むことができます: http: //developer.apple.com/library/ios/#documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/03_MediaCapture.html
(私の考えでは、これは実際には2つの異なるカムまたはセンサーであり、動作が大きく異なります。写真とたとえば640x480を切り替えるためだけに、数秒の遅延があります)。
両方のプリセットを同時に使用することもできず、それらを切り替えることも頭痛の種です- AVFoundationフレームワークでビデオ出力とフル写真解像度の両方の画像を取得する方法
HTH、聞きたかったものではありませんが...
Oded。