問題タブ [avaudioengine]
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.
ios - iOS : スリープ後に AVAudioEngine が起動しない
iPhone 6S plus デバイスでのみ再現する AVEngine に問題があります。iPhone5s、iPhone6、iPadなど、手持ちの他のデバイスでも問題ありません... AVEngineを使用して、入力ノードのタップノードでオーディオキャプチャを行います。
スリープ モード (スリープ ボタン) は、AVEngine が一時停止または停止状態にあるときに「AVAudioEngineConfigurationChangeNotification」呼び出しを生成することに気付きました (AVEngine が実行されている場合、スリープ状態に移行し、AVEngine は実行状態のままになります)。
スリープ状態から抜け出して AVEngine を開始すると (開始時に例外はありません)、これは常に停止し、「AVAudioEngineConfigurationChangeNotification」を再度受け取ります...
開始する次の呼び出しは停止されず (通知なし)、すべてが再び正常に機能しています。
誰かがすでに AVEngine でこの奇妙な動作を観察していますか? それを回避する方法はありますか?
よろしく、
ロイク
ios - AVAudioEngine を使用して圧縮ファイルに録音する
AVAudioEngine を使用して、マイクからの音をさまざまな効果音ファイルと一緒に AVAudioFile に録音しようとしています。
次のように AVAudioFile を作成します。
オーディオ エンジンの mainMixerNode にタップをインストールし、バッファをファイルに書き込みます。
self.engine.mainMixerNode.outputFormatForBus(0).settings
Apple は、「バッファ形式はファイルの処理形式と一致する必要があるため、上記の AVAudioFile オブジェクトの作成時に outputFormatForBus: が使用された」と述べているため、オーディオ ファイルの作成時に使用しています。installTapOnBus のドキュメントでは、「指定されたバスのタップと接続の形式 (非 nil の場合) は同一である必要があります」
ただし、これにより、圧縮されていない非常に大きなオーディオ ファイルが生成されます。ファイルを .m4a として保存したいのですが、使用したい設定を指定する場所がわかりません:
オーディオ ファイルの作成時に代わりにこれらの設定を渡すと、録音時にアプリがクラッシュします。
これを解決する方法に関する提案やアイデアはありますか?
ios - AVAudioEngine が作成できるノードの数に制限はありますか?
以下のコードでは、sound1 と sound2 の 2 つのサウンドを作成しています。各サウンドには、同じサウンドを同時に再生できる多数のサンプルが含まれています。問題は、それぞれに AVAudioUnitTimePitch を持つ AVAudioPlayerNodes を 6 ~ 8 個以上作成すると、オーディオが完全に台無しになることです。サンプルの数を増やしすぎると、単一のサウンドを再生することさえできません。私のコードが間違っているのか、それとも AVAudioEngine のノード制限が何なのかわかりません。
ios - AVAudioNode の出力形式の変更
AVAudioMixerNode
デフォルトのフォーマットではなく、より低いサンプルレートでモノラル オーディオを出力するように、の出力フォーマットを変更しようとしています。クラスをサブクラス化しAVAudioMixerNode
、関数をオーバーライドしoutputFormatForBus
てそれを行う必要がありますか、それとも他の方法がありますか?
ios - マイクとサウンド ファイルを録音し、フィードバック ループを回避するための AVAudioEngine
AVAudioEngine を使用して、マイクからのサウンドとサウンド ファイル (ユーザーがボタンをタップしたときに再生される) を録音しようとしています。mic inputNode を mainMixer に接続し、サウンド ファイルを再生するためのいくつかの AVAudioPlayerNodes も接続しました。サウンドをキャプチャしてファイルに書き込むために、mainMixer にタップをインストールしました。音声もスピーカーにルーティングされます。
これは私のオーディオ グラフの基本的なレイアウトです。
デフォルトでは、サウンドは iPhone の下部にあるスピーカーではなく、レシーバー/イヤー スピーカーから再生されます。
残念ながら、これはスピーカーから出力されるサウンドが小さすぎて聞き取りにくいことを意味します。ユーザーが再生および録音されたサウンド ファイルを聞くことができるようにしたいと考えています。なので効果音は一番下のスピーカーから流してほしいです。
下部スピーカーを再生に使用するようにオーディオ セッションを変更すると、フィードバック ループが発生します。これは、マイク入力と下部スピーカーで再生されたサウンドの両方が再びマイクによって拾われるためです。(不思議なことに、これはフィードバック ループが作成されない iPad でも機能します。もちろん、iPad にはイヤー スピーカーがないため、そのデバイスではサウンドは常にメイン スピーカーから聞こえます。)
2 つの質問があります。
サウンドファイルのみを下のスピーカーにルーティングすることはできますか? マイクの音をどのスピーカーからも出力したくありません。ただし、マイクからの音とサウンド ファイルの両方を録音する必要があります。
iPhone ではフィードバック ループが発生するのに、iPad では発生しないのはなぜですか? フィードバック ループを発生させずに、すべてのサウンドをボトム スピーカーから出力することはできますか?
ios - AVAudioEngine オフライン レンダリング: ヘッドフォンが接続されている場合のみサイレント出力
私は、オーディオ パイプラインを作成してAVAudioEngine
からファイルにレンダリングするアプリに取り組んできました。
私は自分のニーズに合わせて、このコード例のアプローチを使用してきました。問題は、ヘッドフォンがデバイスに接続されている場合、出力オーディオ ファイルが無音になることです。これは、ヘッドフォンを接続してそのプロジェクトを実行することで確認できます。
私が持っている唯一の考えは、おそらくiPhoneは通常モノoutputNode
ですが、ヘッドフォンはステレオ形式を提供するということです。私はこれをデバッグするのが非常に難しいと思うので、どんなポインタでも大歓迎です。
サンプルコードはhereから取得しました。これにより、問題に関する詳細なコンテキストが得られる可能性があります。
ありがとう
ios - AVAudioEngine & AVAudioPlayerNode didFinish メソッドのような AVAudioPlayer
AVAudioEngine
が再生されたサウンドを終了したかどうかを特定する可能性はありますか? 過去に私はAVAudioPlayer
's 関数を使用しました:
ここでいくつかのエフェクトが必要ですがAVAudioEnginge
、再生されたサウンドの終わりを識別する関数が提供されていません。
私はたくさん検索しましたが、残念ながら、のドキュメントでこの関数しか見つかりませんでしたAVAudioEngine
:
私の現在の解決策は、「実行中」のブール値をチェックすることです.falseの場合、プレーヤーはもうプレイしていません。誰かがより良い解決策を知っていますかAVAudioEngine
? どうもありがとうございました!