avcapturessessionが一時停止しますか?
-
26-09-2019 - |
質問
AppleがIOS 4.0をリリースした後、AV財団を継続的にキャプチャするためにAV Foundationを使用しています。http://developer.apple.com/iphone/library/qa/qa2010/qa1702.html
しかし、私が「[セッションStarTrunning];」と呼ぶときカメラのプレビューを開始するには約1〜2秒かかります。したがって、これはエンドユーザーにとってしばらく待つ必要があるため、イライラします。
プログラムの起動時にセッションを開始し、ユーザーがカメラ画面に移動してそこで実行を開始するまで一時停止することができるため、セッションを停止する代わりに一時停止する方法はありますか?助けてくれてありがとう。
解決
セッションを「一時停止」する方法はありませんが、キャプチャセッションをいつでも実行して、実行したままにすることができます。静止画像をキャプチャしている場合は、準備ができたら、CaptureStillimageAsynChroncronConnectionに電話してください。ビデオをキャプチャしている場合は、CaptureOutput:didOutputSampleBuffer:fromConnection:Delegateのメソッドを使用して、何かをしたいまでフレームを捨てることができます。準備が整うまで、出力デバイスなしでキャプチャセッションを開始することもできます(試していません)。
他のヒント
セッションを一時停止する代わりに、入力接続を無効にすることができます。
例えば
<your_video_preview_layer>.connection.enabled = NO;
入力デバイスからデータを消費しないようにします。
これがあなたが探しているものであることを願っています。
これは、Startrunningを呼び出すときにUIが最初の1〜2秒をロックするのを防ぐために私がしたことです。
1) Add UIActivityIndicator
2) Add observer to AVCaptureSession
3) call -startRunning in a background thread
4) Resume the UI in the notification callback