問題タブ [audioqueueservices]
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 - Audio Queue Services コールバック: AudioStreamPacketDescription をコピーできませんか?
循環バッファーでオーディオを録音する単純な iOS アプリを作成しています。これは、オーディオを継続的に録音することを意味しますが、メモリには最後の 15 バッファーのみを保持します。
から取得したすべてのデータをコピーすることでこれを行いますAudioInputCallback
。
これはうまく機能AIF
し、記録を停止した後にすべてのバッファをファイルに保存すると、ファイルを正しく記録できます。そのため、他のバッファへのデータのコピーは正しく機能します。
M4A
ただし、可変パケットを使用すると、同じルーチンが機能しないという問題があります。メソッドをコールバックに入れるとAudioFileWritePackets
正しく動作しますが、後で保存されたバッファリングされたデータで使用すると失敗します。
const AudioStreamPacketDescription *inPacketDescs
これは、コールバック関数自体 (そこに記録) でそれを自分のコピーに変更すると、すぐに失敗するというデータが原因であることが判明しました。ただし、データ自体は同一です。
形式は次のとおりです。
次の方法を使用して、コード内にコピーを作成します。
ただし、 のitem.inPacketDescs
代わりにを使用すると、inPacketDescs
すぐに失敗します。そして、これは、これら 3 つのフィールドのデータが同一である間です。(デバッガーで確認しました。)
私は今、選択肢が少しありません。提供された変数は であることがわかりました。これには、同じメモリアドレスである必要がconst
あるなど、意味のある目的があるのではないかと心配しています。AudioFileWritePackets
それは驚くほどばかげているでしょうが、私にはもうよくわかりません。
これを引き起こしている原因についてのアイデアはありますか? 循環バッファに別の方法で保存する方法についてのアイデアはありますか?
ios - AudioFileStreamParseBytes は「pty?」を返します。ストリーミングされ、記録されたデータ
あるデバイスでオーディオを録音し、ソケット接続で接続された別のデバイスで再生するアプリを開発しています。
SpeakHere の例のように、Audioqueues を使用して 1 つのピア デバイスにデータを記録し、そのデータを OTA でストリーミングしています。
Matt Gallagher の AudioStreamer の例のように、反対側で AudioFileStream と AudioQueue を使用して、受信デバイスでそのデータを再生しようとしています。
AudioFileStreamParseBytes への呼び出しは、「pty?」を返しています。エラー。結果として、この呼び出しに関連付けられたコールバック (プロパティおよびオーディオ パケット用) はどちらも呼び出されません。
mp3 や HTTP ストリームなどをオンラインでストリーミングするためのサンプル コードはたくさんあります。しかし、AudioQueue を使用して録音したオーディオをストリーミングしたい場合、不足している可能性があるものはありますか? おそらくAudioQueueプロパティに関連する何か?
私が受け取ったデータが実際に適切なオーディオデータであるかどうかを確認する方法を誰かが提案できますか?
小さなコード:
さらに、packet->mVoiceData には約 44K バイトのデータがあり (それが適切なデータかどうかはわかりませんが)、packet->msizeInBytes がその数を反映していることを確認済みです。
どんな助けでも感謝します。ありがとう!
ios - AudioQueueEnqueueBufferを使用して無音を再生する方法...kAudioFormatMPEG4AAC_HE(VBR)
ネットワークアプリケーションを使用しているので、パケットが失われたり、再生を開始したりすると、再生するためのデータがありません。これは私のソースコードです:
しかし、これらがパケットではない場合、エラーkAudioQueueErr_BufferEmptyが発生するので、aac_he type(vbr)で無音フレームを再生する方法を知りたいだけです。
ios - iOS 5 のオーディオ出力キュー
キューが実行されていてエラーが返されていないにもかかわらず、iOS 5 のオーディオ出力キューが沈黙していることを経験した人はいますか?
同じ問題が発生したサンプル コードをダウンロードしました。
ios - オーディオ エフェクトの作成に使用するオーディオ API は?
オーディオを録音し、カスタム作成のサウンド エフェクト フィルタを適用してから、再生したいと考えています。
Audio Units と Audio Queue Services は私が探している API ですか? または、この目的により適した他の API はありますか?
また、iOS では Audio Units をカスタマイズできないと聞いたので、いくつかの既製のエフェクトしか利用できません。これは本当ですか?
ios - Core Audio SDK を使用して iOS 用の効果音ユニットを開発できますか?
Apple が言う「Mac OS X 開発」用のいわゆる「Core Audio SDK」があります。Mac の Core Audio と iOS の Core Audio には類似点があるため、その SDK を iOS 開発にも使用することは可能でしょうか?
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 オーディオ ユニットのように、独自のアルゴリズムをオーディオ ストリームに適用できるかどうかはまだわかりません。
iphone - iPhone 4sのマイクはiPhone 4のマイクよりも悪い
サンプルレート 44100 Hz のAudio Queue Frameworkを使用して、iPhone のマイクからデータを録音しています。
次に、iPhone 4 と iPhone 4s の 周波数応答をテストします。iPhone 4sのマイクは、iPhone 4 とは異なり、20 kHz を超える周波数ではブラインドになります。
マイクは以前のモデルの方が優れているようです。ハードウェアの制限ですか?ソフトウェアの制限ですか?または、何らかの設定ミス (ノイズ圧縮を有効にするなど) ですか?
objective-c - iOS のバックグラウンド モードで中断されたオーディオ入力キューを再開できない
録音用に AudioQueue を使用して iOS アプリを作成しています。リニア PCM を取得するように構成された入力キューを作成し、このキューを指定すると、すべてが期待どおりに機能します。
割り込みを管理するために、AVAudioSession のデリゲート メソッドを実装して、割り込みの開始と終了をキャッチしました。メソッド endInterruption は次のようになります。
フォアグラウンドでアプリが中断された場合、すべて正常に動作します。中断がバックグラウンドで発生した場合、問題が発生します。オーディオ セッションをアクティブにすると、エラー!catが発生します。
指定されたオーディオ セッション カテゴリは、試行されたオーディオ操作に使用できません。たとえば、オーディオ セッション カテゴリを kAudioSessionCategory_AudioProcessing に設定して、オーディオを再生または録音しようとしました。
セッションをアクティブ化せずにキューを開始すると、エラー コード-12985が発生します。
その時点で、カテゴリはAVAudioSessionCategoryPlayAndRecordに設定され、モードはAVAudioSessionModeDefaultになります。
このエラー メッセージに関するドキュメントも、バックグラウンドで入力オーディオ キューを再起動できるかどうかもわかりませんでした。
ios - オーディオキューサービスとiPhoneシステムサウンドのタイミング
オーディオキューサービスを使用して、iPhone /iPodTouchで着信オーディオを分析しています。アナライザーの望ましい動作は、次のように要約されます。アプリがアクティブになったら、分析を開始します。アプリがバックグラウンドに送信されたら、分析を停止します。
私は単純なアプローチを使用しており、AppDelegateを使用して、アプリの状態が変化するたびにアナライザーを開始および停止します。
ここにいくつかのコードがあります:
すべての変数が初期化され、機能しています–与えられ、テストされたとおりにそれを取ります。キューとバッファを毎回破棄して割り当てる必要はありませんが、今のところ違いはなく、この方法でより完全になります。
これが何が起こるかです:
ステップ1)アプリを起動すると、オーディオキューが開始されます。ボブは、おじさんです。
ステップ2)電源ボタンを押すと、アプリが一時停止します。ただし、オーディオキューがシステムの音をブロックしているように見えるため、ロック音は聞こえません。ただし、ほとんどの場合、アプリの最初の起動後に表示されることがありますが、それは信頼できません。最初のグリッチ。
手順3)ホームボタンを押して、電話のロックを解除します。繰り返しになりますが、オーディオキューがすでに引き継がれているため、電話のロックを解除するシステムサウンドは聞こえません。ただし、ロック解除音が少し聞こえる場合があります。時々。どちらも信頼できません。2番目のグリッチ。
ステップ4)ホームボタンを押して、アプリをバックグラウンドに送信します。アプリが消えてから約1秒後、システムはステップ3でロック解除サウンドを再生できなかったことを認識し、今すぐ再生します。フルボリュームで。それは本当に悪いです。
これは私に2つの質問につながります:
質問1):電源ボタンを押すと、applicationWillResignActive:よりも早くオーディオキューを停止する方法が他にありません。ここで足りないものはありますか?私はロッキングサウンドが欠落していても大丈夫ですが、それを確実に鳴らす(または鳴らさない)ための他の方法について学ぶことができてうれしいです。
質問2):ステップ4のロック解除音の遅延は、私に頭痛の種を与えています。これを防ぐ簡単な方法は、オーディオキューの開始を遅らせて、ロック解除サウンドを妨げられずに再生できるようにすることです。しかし、それはハックのように思えます。誰かが私をより良い方向に向けることができれば、私ははるかに幸せなコーダーになるでしょう。
ありがとう/Andreas