5

マイク入力の録音を開始するために、AVAudioSession のオーディオ カテゴリを変更しようとすると問題が発生します。

デバイスのミュート スイッチが設定されていない (つまり、ミュートされていない) ときに、現在の実装 (およびこの問題を解決するための多くの代替実装) でこれを行うと、すべて問題ありません。

ミュート時にこれを行うと、以前のオーディオ カテゴリ (MediaPlayback、SoloAmbient など) からのもので、大きな遅延が発生し、デバイスの動作がしばらくの間非常に遅くなります。

これが私がやっていることです。アプリの起動時に、私はこれを行います:

AudioSessionInitialize(NULL, NULL, NULL, NULL);
UInt32 sessionCategory = kAudioSessionCategory_SoloAmbient;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
AudioSessionSetActive(true);

以降、記録を開始するには:

AudioSessionInitialize(NULL, NULL, NULL, NULL);
UInt32 sessionCategory = kAudioSessionCategory_RecordAudio;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
AudioSessionSetActive(true);

デバッグしてステップスルーすると、AudioSessionSetProperty に到達するまで、すべてが期待どおりに高速です。ここでデバイスがハングします。RecordAudio および PlayAndRecord カテゴリのいずれかを使用すると発生します。

これが発生すると、コンソールに次のメッセージが表示されます。

AudioSessionSetProperty posting message to kill mediaserverd
AudioSessionSetActive posting message to kill mediaserverd
AudioQueueSetProperty posting message to kill mediaserverd
AllocateBuffer posting message to kill mediaserverd

これらをオンラインで検索しましたが、私が経験しているこの種の遅延と一緒に報告されることはありません。また、私が間違っている可能性があることも強調していません.

誰かが似たようなことを経験したことがありますか?これを解決するために私に何ができるか知っていますか?

前もって感謝します

4

0 に答える 0