問題タブ [avcapturesession]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - オーディオは AVCaptureSession を終了させます
iPhoneからビデオを録画するアプリを作成しました。正常に動作しますが、大きな問題が 1 つあります。AVCaptureSession が実行を開始し、ユーザーがライブラリ (iPod) からオーディオを再生しようとすると。このアクションにより、AVCaptureSession が終了します。ユーザーがオーディオを再生しようとしたり、この問題を解決したりするのを防ぐことができるアイデアはありますか?
これは私のコードです:
iphone - ボタンをすばやくタップすると iPhone 懐中電灯アプリがクラッシュする
懐中電灯アプリが完全に機能するようになりました。何らかの理由で、懐中電灯ボタンを非常に速くタップするたびに、アプリがフリーズして何もしません。AVCaptureSession stopRunning を呼び出すとフリーズするようです。トグル懐中電灯メソッドのコードを次に示します。また、このメソッドが最終的にストロボ機能に対して呼び出されるようにしたいと考えています。
iphone - iPhoneのカメラプレビュー「動画」にエフェクトをかける
私の目標は、次のようなカスタム カメラ ビュー コントローラーを作成することです。
- 背面カメラと、可能な場合は前面カメラの両方を使用して、4 つのインターフェースのすべての向きで写真を撮ることができます。
- プレビュー「ビデオ」とフル解像度の写真を適切に回転およびスケーリングします。
- プレビュー「ビデオ」とフル解像度の写真の両方に (単純な) 効果を適用できます。
実装 (iOS 4.2 / Xcode 3.2.5):
要件 (3) により、AVFoundation にドロップダウンする必要がありました。
Technical Q&A QA1702から始めて、次の変更を加えました。
- sessionPreset を AVCaptureSessionPresetPhoto に変更しました。
- セッションを開始する前に、追加の出力として AVCaptureStillImageOutput を追加しました。
私が抱えている問題は、プレビュー画像 (プレビュー「ビデオ」のフレーム) の処理のパフォーマンスにあります。
imageFromSampleBuffer:
まず、サンプル バッファの UIImage の結果を から取得しcaptureOutput:didOutputSampleBuffer:fromConnection:
ます。次に、CGGraphicsContext を使用して、画面に合わせて拡大縮小および回転します。
この時点で、フレーム レートは、セッションのビデオ出力で指定されている 15 FPS を既に下回っており、エフェクトを追加すると、10 未満または約 10 まで低下します。メモリ不足のため、すぐにアプリがクラッシュします。
iPhone 4 ではフレーム レートを 9 FPS に、iPod Touch (第 4 世代) では 8 FPS にフレーム レートを下げることに成功しました。
ディスパッチ キューを「フラッシュ」するためのコードもいくつか追加しましたが、実際にどれだけ役立つかはわかりません。基本的に、8 ~ 10 フレームごとに、フレームをcaptureOutput:didOutputSampleBuffer:fromConnection:
処理するのではなく、すぐに戻るように信号を送るフラグが設定されます。このフラグは、出力ディスパッチ キューでの同期操作が完了するとリセットされます。
現時点では、フレーム レートが低いことは気にしませんが、明らかに、メモリ クラッシュが少ない状態で出荷することはできません。この場合のメモリ不足の状態を防ぐためのアクションを実行する方法(および/またはディスパッチキューを「フラッシュ」するより良い方法)を知っている人はいますか?
iphone - OpenGLを使用してiPhoneカメラプレビュー「ビデオ」にエフェクトを適用する
私の目標は、次のようなカスタムカメラビューコントローラーを作成することです。
- 背面カメラと、可能な場合は前面カメラの両方を使用して、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の例(ブログ投稿)をAVCaptureSessionPresetPhotoを使用するように切り替えたときに、同じ文字化けしたビデオ結果が得られました。
ios4 - applicationDidEnterBackgroundでAVCaptureSessionをクリーンアップする方法は?
AVCaptureSessionを使用してビデオを処理するアプリがあります。私は、メモリリークがなく、すべてのオブジェクトを適切に処理して書き込むのが好きです。
そのため、この投稿-AVCaptureSessionを適切に解放する方法-は非常に役立ちました- [session stopRunning]は非同期であるため、セッションを停止して保持オブジェクトを解放し続けることはできません。
これで解決しました。これはコードです:
今では、電話やホームボタンの押下などでアプリの中断をサポートするようになりました。アプリケーションがバックグラウンドに入った場合は、キャプチャを停止して、ViewControllerをポップします。
applicationDidEnterBackgroundコンテキストでは実行できないようです。Deallocが呼び出されることはなく、オブジェクトは存続します。アプリを再度開くと、フレームが自動的に着信し始めます。
beginBackgroundTaskWithExpirationHandlerを使用してみましたが、役に立ちませんでした。あまり変わりませんでした。
助言がありますか?ありがとう!
iphone - AVCaptureVideoPreviewLayer に「フィルター」を適用する方法
私のアプリは現在 AVFoundation を使用して、iPhone の背面カメラから生のカメラ データを取得し、リアルタイムで AVCaptureVideoPreviewLayer に表示しています。
私の目標は、単純な画像フィルターを条件付きでプレビュー レイヤーに適用することです。画像は保存されないため、出力をキャプチャする必要はありません。たとえば、プレビュー レイヤーに入ってくるビデオを白黒に変換する設定を切り替えたいとします。
ここで、個々のビデオ フレームをバッファにキャプチャし、必要な変換を適用してから、各フレームを UIImage として表示することで、同様のことを達成しているように見える質問を見つけました。いくつかの理由から、これは私のプロジェクトにとってやり過ぎのように思えます。これが引き起こす可能性のあるパフォーマンスの問題を回避したいと考えています。
これが私の目標を達成する唯一の方法ですか?
前述したように、AVCaptureSession のビデオをキャプチャするつもりはなく、単にプレビューするだけです。
iphone - NSRunLoop と GCD キュー
私は iOS で使用するための C++ ライブラリを作成しています (はい、残念ながら C++ でなければなりません)。AVCaptureSession を使用して、captureOutput コールバックを介して配信されるビデオ フレームをキャプチャします。C++ ライブラリは私の成果物です。テスト/デモ用のココアタッチアプリケーションがあります。したがって、次のようになります。
(テストアプリ) <-----> (c++ lib(AVFoundation コールバック))
テスト アプリには UI コントロールがあり、ほぼすべてのグラフィックを担当します。C++ ライブラリは、フレームを OpenGL 経由で UIView にレンダリングします。
私と一緒にいますか?良い
さて、まず、ユーザーは私のライブラリを呼び出す UIButton を押します。この呼び出しが完了するまでに 10 秒以上かかります。したがって、ボタン クリックの直後に呼び出しを配置すると、ライブラリ関数が戻るまで UI がブロックされます。
これはダメです。次に試したのは、スレッドを生成して lib を呼び出すことでした。
これにより UI がブロックされることはなくなりましたが、ビデオ フレームのコールバック関数が起動することはなくなりました (AVCaptureSession の captureOutput)。メインの NSRunLoop がブロックされているようです。
次に、同じことを試しましたが、Grand Central Dispatch を使用しました。
これは同じ動作をします。つまり、ビデオ フレームのコールバックは発生しません。ラメ
2 番目と 3 番目のケースでメインの NSRunLoop がブロックされるのはなぜですか? キューを関連付ける方法はありますか?
これは理にかなっていますか?
iphone - オーディオとビデオを組み合わせたAVCaptureSession-オーディオ部分はEXC_BAD_ACCESSを提供します
暗視効果のビデオを録画できるNightCamという素晴らしい小さなアプリを作成しました。現在、更新中です。
ビデオキャプチャは完全に正常に機能しますが、オーディオは機能しません。ファイルへの録音が行われていないときにアプリケーションをオンにするとすぐに発生する問題があります(後で録音するときにのみオーディオをアクティブにするように変更します)。
関連するコードは次のとおりです。
「特別代表」は次のとおりです。
記録ブール値が設定されていないため、何も追加されません。アプリがクラッシュした時点ではまったく設定されていないため、AVAssestWriterの設定についても心配する必要はありません。私はオーディオ入力のセットアップでなければなりません。
クラッシュしたときのコールスタックは次のとおりです。
助けてくれてありがとう。
iphone - AVCaptureSessionを使用してマイクオーディオをキャプチャして操作しますか?
AVCaptureSessionを使用してカメラデータを取得する方法についてのチュートリアルはたくさんありますが、マイクデータを適切に処理する方法についての情報は(アップルの開発ネットワーク自体でも)見つかりません。
AVCaptureAudioDataOutputSampleBufferDelegateを実装し、デリゲートへの呼び出しを受け取っていますが、取得したCMSampleBufferRefの内容がどのようにフォーマットされているのかわかりません。バッファーの内容は1つの個別のサンプルですか?その特性は何ですか?これらのプロパティはどこに設定できますか?
ビデオプロパティは[AVCaptureVideoDataOutputsetVideoSettings:]を使用して設定できますが、AVCaptureAudioDataOutputの対応する呼び出しはありません(setAudioSettingsなどはありません)。
ios - AVCaptureSession放棄されたメモリ-割り当て-機器
デフォルトのAVCaptureSessionを使用してカメラビューをキャプチャします。
すべて正常に動作しています。リークはありませんが、AVCaptureDeviceを起動して閉じた後、Allocationsを使用して放棄されたメモリを見つけると、約230個のオブジェクトが表示されます。
これが私のコードです:
Controller.h:
Controller.m:
そして、私はこのコードですべてをきれいにします:
そして楽器は私にこのようなものを見せてくれます:http: //i.stack.imgur.com/NBWgZ.png
http://i.stack.imgur.com/1GB6C.png
私が間違っていることについて何か考えはありますか?