問題タブ [audioqueue]
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.
objective-c - iOSのAudioQueueRefからフロートオーディオデータの配列を取得するにはどうすればよいですか?
私は、オーディオを(C ++)分析アルゴリズムに渡すことができる形式でiPhoneに取り込む作業を行っています。もちろん、多くのオプションがあります。TrailsinthesandのAudioQueueチュートリアルは、物事を開始します。
オーディオコールバックは、しかし、を与えますAudioQueueRef
、そして私は物事のこちら側でAppleのドキュメントが薄いと感じています。ファイルに書き込むための組み込みメソッドですが、データを確認するために実際にパケット内をピアリングする場所はありません。
データが必要です。私はファイルに何も書きたくありません。それはすべてのチュートリアル、そしてAppleの便利なI/Oオブジェクトでさえも狙っているようです。AppleはAVAudioRecorder
(腹立たしいことに)あなたにレベルを与えてデータを書きますが、実際にはあなたにそれにアクセスすることはできません。私が何かを逃していない限り...
これを行う方法?以下のコードにinBuffer->mAudioData
は、興味をそそるほど近いものがありますが、この「データ」の形式やアクセス方法に関する情報は見つかりません。
AudioQueueコールバック:
そして、オーディオをファイルに書き込むためのコード:
iphone - 中断後に AudioSessionSetActive が失敗する
私は何週間も実際に何が起こっているのかを理解しようとしていましたが、中断後に再生を続行できない理由がわからないので、おそらく答えを知っているでしょう. AudioSessionSetActive(TRUE) は、アプリがバックグラウンドで再生され、別のアプリにいる場合、再アクティブ化中に kAudioSessionIncompatibleCategory である '!cat' を常に返します。アプリの使用中に中断が発生した場合でも、問題なく動作し、再生を続けます。
元のコードには、実際にはすべての AudioSession および AudioQueue 呼び出しが、エラーを意味する場合に OSStatus を出力するマクロでラップされていますが、読みやすくするために削除しました。また、[セルフポーズ]は一時停止を切り替えるだけなので、基本的には休止時に AudioQueueStart(audioQueue, NULL) を呼び出しますが、AudioSessionが失敗した場合はもちろん機能しません。
オーディオ セッションの初期化コード:
割り込みハンドラ コード:
iphone - iphone:オーディオをバッファリングして再生する方法は?
ストリーミングしているオーディオ ファイルをバッファリングして再生するには、アプリのコードを実装する必要があります。
オプションの 1 つを取得しましAudioQueue
たが、実装するものを理解するためのコードがあまり見つかりませんでした。
私は単純にストリーマーを作成し、ストリーマーを破棄してみました。
ios - 録音中に録音されたオーディオの正確な時間を取得する方法は?
私はオーディオ レコーダーに取り組んでおり、SpeakHere サンプル コードの AQRecorder を使用しています。UI にスライダーを追加して、録画時間を表示したいと考えています。これは、記録の開始時に初期化される単純なタイマーを使用して行いました。ただし、録音が 1 秒遅れることがあります。たとえば、Slider には 10 秒と表示されていますが、保存時のオーディオの実際の長さは 9 秒です。
タイマーを使用する代わりに、スライダーを更新するために記録中に正確な時間を取得できる方法はありますか?
次の方法も試しました
しかし、最初のものはファイルに書き込まれたパケットの長さを示します。これは常に実際の記録時間よりも短くなります。2番目のものも正確な持続時間を示していません(1〜2秒増加)。
誰かが同じことを実装している場合は助けてください。ありがとう。
ios - オーディオルートボタン - AirPlay
現在、AudioQueues を介してオーディオを再生しています。ユーザーが Airplay デバイスに接続できるようにしたいと考えています。
MPVolumeView を作成し、「showsRouteButton」を使用してルート ボタンを表示すると、正常に接続できます。
MPVolumeView を使用せずに Audio Route を Airplay に変更する方法はありますか? それともルートボタンだけのシンプルな Apple ビューですか?
cocoa - オーディオ キューと EXC_BAD_ACCESS
これは、Audio Queue を使用してノイズを生成するための私のコードです。
問題は、私のコードが EXC_BAD_ACCESS を生成することです。問題は割り当てにあるようです
コールバック ルーチンで。クラス MAAudioManager のスレッドによるアクセスに関連するものではないかと思います。
何か案が?
ios - カスタムオーディオエフェクトが必要な場合、Audio Units を扱う必要がありますか? それとも Audio Queue Services に頼ることができますか?
私の理解では、Audio Queue Services は、Audio Units を使用する Audio Units よりも高レベルの API です。OpenAL は Audio Units も使用します。したがって、Audio Units は iOS の最下位レベルのオーディオ API です。
サウンドを録音し、オーディオ ストリームにカスタム フィルターを適用して再生する必要があります。Audio Queue Services は録音に適しているようで、再生にも使用できます。しかし、AURemoteIO オーディオ ユニットのように、独自のアルゴリズムをオーディオ ストリームに適用できるかどうかはまだわかりません。
ios - AudioQueue は間違った数のパケットを取得しますか?
私のアプリは、ffmpeg を使用して mms ストリーミングをバッファに解析し、オーディオ キューを使用してバッファリングされたデータを再生します。バッファリングされたデータが正常であることを確認できましたが、再生できません。再生の仕組みは AudioFileStreamExample デモのクライアントに基づいており、http ストリーム (AudioFileStreamExample デモのサーバー)を再生できます。コールバック関数で次のことに気付きました。
AudioFileStreamExample デモの http ストリームを直接再生すると、inNumberPackets
ほとんどの場合、パラメータは 1 よりも大きくなります。mms ストリームを再生すると、inNumberPackets
常に 1 になります。audioQueue は最初のパケットのみを再生し、最後のパケットはすべて失われます。
AudioFileStreamExample デモの http ストリームを使用したログ:
解析された mms ストリームを使用したログ:
この問題を解決する方法がわかりません。MyPacketsProc
関数が間違ったパラメータを取得しているようですが、どうすれば修正できますか?
どうもありがとう。
xcode - AudioQueue バッファ内のデータにアクセスするには?
バッファの内容を表示できるように、バッファから配列にデータを渡す方法を考え出すのに苦労しています。単純な録音オーディオと読み取りバッファであるコードの例はどこかにありますか? シンプルなほど良い。
保存したファイルからデータを読み込まずに、リアルタイムで何かをしようとしています。成功しなかったいくつかのコードを貼り付けることができました。
ios - オーディオキューサービスとiPhoneシステムサウンドのタイミング
オーディオキューサービスを使用して、iPhone /iPodTouchで着信オーディオを分析しています。アナライザーの望ましい動作は、次のように要約されます。アプリがアクティブになったら、分析を開始します。アプリがバックグラウンドに送信されたら、分析を停止します。
私は単純なアプローチを使用しており、AppDelegateを使用して、アプリの状態が変化するたびにアナライザーを開始および停止します。
ここにいくつかのコードがあります:
すべての変数が初期化され、機能しています–与えられ、テストされたとおりにそれを取ります。キューとバッファを毎回破棄して割り当てる必要はありませんが、今のところ違いはなく、この方法でより完全になります。
これが何が起こるかです:
ステップ1)アプリを起動すると、オーディオキューが開始されます。ボブは、おじさんです。
ステップ2)電源ボタンを押すと、アプリが一時停止します。ただし、オーディオキューがシステムの音をブロックしているように見えるため、ロック音は聞こえません。ただし、ほとんどの場合、アプリの最初の起動後に表示されることがありますが、それは信頼できません。最初のグリッチ。
手順3)ホームボタンを押して、電話のロックを解除します。繰り返しになりますが、オーディオキューがすでに引き継がれているため、電話のロックを解除するシステムサウンドは聞こえません。ただし、ロック解除音が少し聞こえる場合があります。時々。どちらも信頼できません。2番目のグリッチ。
ステップ4)ホームボタンを押して、アプリをバックグラウンドに送信します。アプリが消えてから約1秒後、システムはステップ3でロック解除サウンドを再生できなかったことを認識し、今すぐ再生します。フルボリュームで。それは本当に悪いです。
これは私に2つの質問につながります:
質問1):電源ボタンを押すと、applicationWillResignActive:よりも早くオーディオキューを停止する方法が他にありません。ここで足りないものはありますか?私はロッキングサウンドが欠落していても大丈夫ですが、それを確実に鳴らす(または鳴らさない)ための他の方法について学ぶことができてうれしいです。
質問2):ステップ4のロック解除音の遅延は、私に頭痛の種を与えています。これを防ぐ簡単な方法は、オーディオキューの開始を遅らせて、ロック解除サウンドを妨げられずに再生できるようにすることです。しかし、それはハックのように思えます。誰かが私をより良い方向に向けることができれば、私ははるかに幸せなコーダーになるでしょう。
ありがとう/Andreas