問題タブ [audiosession]
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 - AudioSessionInterruptionListener を変更または無効にする方法
AudioSession が初期化された後に AudioSessionInterruptionListener を変更または無効にする方法が必要です。
理由は次のとおりです。一部のユース ケースでは、オーディオ録音を使用してアプリをバックグラウンドで実行する必要があるため、オーディオ バックグラウンド モードが設定されています。これは機能します。呼び出しやその他の割り込みが発生した場合、他のオブジェクトに記録を完全に停止するように通知する必要があります-これは機能します。次に、呼び出した AudioSession でアプリが完了すると、AudioSessionSetActive(false);
これが機能します (セッションがアクティブな状態でアプリがバックグラウンドに送信されると、上部に赤いバーが表示されます。セッションが非アクティブな場合、赤いバーは表示されません。ただし、技術的には、アプリはまだ「アクティブな」バックグラウンド モードになっていると思います)。
でも!録音が完了し、アプリがバックグラウンドに送信され、オーディオ セッションが既に非アクティブ化されている場合、通話が着信した場合、または Siri がアクティブ化された場合でも、アプリは AudioSessionInterruptionListener コールバックを受け取ります。はい、コードを追加して、アプリが現在割り込みに応答しているかどうかをテストできます。ただし、これはバグだと思います。AudioSession を無効にすると、割り込みの呼び出しが停止するはずです。実際、すべてのオーディオ セッション/プロパティ リスナーの呼び出しが停止するはずです。
AudioSessionInterruptionListener を変更または無効にするにはどうすればよいですか? または、これを尋ねる別の方法かもしれませんが、アプリが必要のないときにバックグラウンド モードを「使用」しないようにするにはどうすればよいですか?
追加情報
さて、iOS 6 では AudioSession 割り込み用の NSNotifications があるようです:AVAudioSessionDidBeginInterruptionNotification
とAVAudioSessionDidEndInterruptionNotification
. ただし、iOS 5.1 以降をサポートしているため、これは役に立ちません。そして、私が新しい通知を見つけた同じドキュメントは、Obj-C インターフェイス AVAudioSession のデリゲート プロパティが (IOS 6 で) 減価償却されていることを示しているため、おそらくそれを使用してデリゲートを設定/変更するべきではありません (そして Obj を取得します)。 -C 割り込みコールバック)。
考えられる回避策は、iOS バージョンをテストし、6.0 未満でデリゲートを設定および設定解除し、6.0 以降で NSNotifications をリッスンすることだと思います (これは 6.0 未満では表示されないため、壊れてはなりません)。ただし、これはおかしなことのようです。
iphone - OpenALの使用中にAudioSessionを「ダック」することは可能ですか?
これが可能かどうか誰にもわかりますか?
オーディオ セッションと OpenAL を次のようにセットアップしています。
そして、私は次のようなダッキング設定をしています:
ただし、音はしません。次の行をコメントアウトした場合にのみダックします。
オーディオダッキングプロパティでOpenALをうまく機能させる方法はありますか?
ios - iOSで異なるオーディオユニットからのサウンドをミックスする方法は?
私は、VoIP を備えていると同時に税関の音をレンダリングするアプリケーションを持っています。
VoIP オーディオ ユニットは次のように設定されます。
サウンドをレンダリングするものは次のとおりです。
両方のサウンド (ボイスとカスタム サウンド) をミックスしているときに問題が発生しました。レンダリングされたサウンドは、音声が開始されたときに (現在ミュートされている場合でも) 低い音量で再生されます。レンダリングされた単独で再生されるサウンドと、VoIP 通話中の同じサウンドを比較すると、結果は 13 dB 低くなります。
ありがとう、レオ。
ios - AVAudioPlayer がバックグラウンドで再生を開始しない
私はオーディオストリーミングを行うためにAVAudioPlayer
andを使用しています。NSFileHandle
基本的な考え方は、ストリーミング オーディオ データをファイル システムを使用してデバイスに保存し、AVAudioPlayer
保存したばかりのファイルを再生するために使用することです。 AVAudioPlayer
ストリーミング中でもそのファイルを再生できます。
UIButton
ストリーミング/ダウンロードを開始する必要があります。ダウンロードしたデータが一定のBytesまで蓄積されると、自動的に再生されAVAudioPlayer
ます(の"play"メソッドAVAudioPlayer
がトリガーされます)。私の質問は、ボタンをタップしてストリーミング/ダウンロードを開始し、すぐに iPhone のホームボタンを押してアプリをバックグラウンドにすることです。ダウンロードはバックグラウンドで実行され続けますが、"play" メソッドAVAudioPlayer
は "NO" を返します。これは、"play" メソッドがオーディオを再生しないことを意味します。
AVAudioSession
関連するコードをオーディオ プレーヤーの init メソッドに追加しました。
また、info.plist で、キー「必要なバックグラウンド モード」に「アプリがオーディオを再生」という項目を追加しました。ただし、「再生」はまだバックグラウンドで適切に呼び出されません。私は他に何を逃したのですか?よろしくお願いします。
ios - iOSオーディオ出力はヘッドフォンジャックのみ
iOS デバイスのヘッドフォン ジャックだけにオーディオを出力し、それ以外の場所にはオーディオを出力しないことはできますか? (例: スピーカーや Bluetooth ではありません)
オーディオ ジャックからトーンとして入力を受信するハードウェア アドオンを実験しています。ヘッドフォン ジャックが接続されているかどうかを検出することもできますが、Bluetooth オーディオ出力デバイスが接続されている場合は依然として問題が残ります。ユーザーの Bluetooth ヘッドセットやスピーカーでトーンが聞こえないようにする必要があります。
core-audio - AudioSessionSetActive(false) は常に失敗します
AudioSessionSetActive(false)
「シャットダウン」コードでの呼び出しが noErr を返さないことがわかりました。(OSStatus) 803204036
リストされた戻りコードのいずれにも対応しない、の
ような文書化されていないコードがいくつかあります。
そして、関連するすべてのリストされた Xcode サンプルコードを調べましたAudioSessionSetActive()
が、「false」引数を使用した呼び出しはまったく見つかりませんでした。すべてのサンプルはAudioSessionSetActive(true)
、さまざまなシナリオで呼び出すだけです。サンプルは次のとおりです。
AudioSessionSetActive()
それは、自分自身を falseで呼び出してはいけないということですか? 非アクティブ化が暗黙的に処理されるということですか?
objective-c - [AVAudioSession sharedInstance] をキャンセルするにはどうすればよいですか。
現在、使用しているオーディオセッションがあります
audioSession = [AVAudioSession sharedInstance];
リンガーをオーバーライドするには、オーディオ セッションが共有インスタンスにならないように、これを元に戻す方法があるかどうかを知りたいです。