2017-12-13 23 views
1

私は1つの特定の画面から録画したいだけのアプリがあります。他のすべての画面では、赤い録音バーが表示されていない状態で、アプリがバックグラウンドにある間にオーディオを再生できるように、ほとんど録音しないようにしたいと考えています。 私はこれを行うことができた唯一の方法は、AudioKit(AudioKit.stop())を停止することですが、AudioKitの開始と停止がクラッシュを追跡するためにいくつかの非常にランダムなハードを引き起こしていることは間違いありません。私はまた、マイクの停止を呼び出してみましたが、入力を偽に設定しましたが、これはうまくいきませんでした。停止せずにAKMicrophoneを停止AudioKit

私は同様の質問AudioKit: Can I disable an AKMicrophone without calling AudioKit.stop()?

がある知っているが、答えはこれに対応していません。

エンジンを停止させずにマイクからの入力を停止するにはどうしますか?

答えて

1

マイクを外すことによって、目標に少しの違いがあります。入力の処理を停止し、AVAudioSessionカテゴリを変更して赤いバーが消えるようにしたい場合は、AKSettings.audioInputEnabled = falseを設定することができますが、AVAudioSessionのカテゴリを更新する必要があります。現在のところ、AudioKitを停止/起動することなく、エンジンを再起動せずにカテゴリを変更することは可能ですが、これを行う良い方法はありません。ファーストブラッシュで動作するように見えるハッキングの1つは、updateSessionCategoryAndOptions()でカテゴリを更新する副作用didSetを引き起こすようにAudioKit.output = AudioKit.outputを割り当てることです。

いつでもAudioKitをバイパスして、共有AVAudioSessionのカテゴリを直接設定することもできます。 updateSessionCategoryAndOptions()を公開するためのAudioKitのPRを作成したいと考えていますが、その間にいつでもこの機能を自分の支店に公開してbuild_frameworks.shを実行することができます。とにかく、素晴らしい解決策ではありませんが、これは有効なユースケースですAudioKitは将来的にはより良いサポートをするべきです!

2

Audio Kitを使用する一般的なルールとして、適切なゲインステージングパターンを使用する必要があります。あなたがDAW(protools、logic、cubase etc)で何か経験があるかどうかはわかりませんが、AudioKitをDAW ...コードで見るべきです。

AudioKit.start() 

はあなたのマスター出力であり、アプリケーション中にそれを止める理由はまったくありません。代わりに、audiokitのマスター出力をミュートして「音を止める」

ご質問には、AKMicrophoneには開始と停止の両方のプロパティがありますので、停止を呼び出すことができます。

let mic = AKMicrophone 

mic.start(AKMicrophone) 

mic.stop(AKMicrophone) 
+0

コードを見ると、すべてのmic.stopとmic.start doがミュートされているか、ミュートされていません。それはタップを削除しないので、マイクを解放し、赤い録音バーを解放する。私はあなたがAudioKitを止めたくないことに同意しますが、それを達成する唯一の方法です。 – Nathan

関連する問題