質問

この質問;

オーディオをキャプチャしようとしています。AvCaptureSessionとAvcaptureAudioDataOutputを使用して。これは1つの不便でうまく機能するようです:シミュレータでは機能しません。AvaudioRecorderと古き古い話されたデモアプリは両方とも、MacBook Proの内部マイクを使用してシミュレータでうまく機能します。

問題は、[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]がシミュレータ内のnullを与えるため、後続のコードはメッセージで失敗します(AvcapturesSessionへの入力としてnullを追加しようとすると):

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** Can't add <AVCaptureDeviceInput: 0x9138b40 [(null)]> because the device does not support AVCaptureSessionPresetHigh.  Use -[AVCaptureDevice supportsAVCaptureSessionPreset:].'
.

これをシミュレータで機能させる簡単な方法はありますか?

役に立ちましたか?

解決

AVCaptureDeviceクラスはシミュレータ上で実装されていません(少なくともその書き込み時点で、将来変化する可能性があります)。

e.gを試してください。

NSLog(@"%@", [AVCaptureDevice devices]);
.

これはシミュレータ上の空のリストを生成します(ただし、Real IDEViceでコンパイルされて実行されている場合はすべてのキャプチャデバイスをリストします)。

この種の機能は、とにかく実際の装置でテストする必要があります(レイテンシやサポートされているサンプルフォーマットなどのハードウェアの詳細依存性のため)、テスト目的で、シミュレータでデバイスサポートを受けることが重要ではありません。しかし、それは実際にデモ目的のためにそれを持っているのはうれしいです。

シミュレータ上でデモを実行するために、キャプチャ入力をモックすることができます。あなたが本当にそれに時間を過ごしたいのなら、シミュレータのAVAudioRecorderにフォールバックすることができます(私はavaudioRecorderを使用しませんでしたので、それがそうでないかどうか、またはシミュレータに取り組んでいないかどうかはわかりません)それはそうです)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top