問題タブ [audiobufferlist]

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.

0 投票する
1 に答える
434 参照

ios - ExtAudioFileRead が ioData->mBuffers[0].mDataByteSize を負にする原因は何ですか?

この問題は、オーディオの再生を頻繁に停止および開始し、ExtAudioFileRefオブジェクトを介して AAC オーディオ ファイル内を何度もシークするときに発生します。まれに、この奇妙な動作は次のように表示されExtAudioFileReadます。

場合によっては、これらの番号をmDataByteSizeの のみAudioBufferに割り当てAudioBufferListます。

16 進数では、これらの数値のパターンは0xFC....00です。

コード:

出力:

この問題は、iOS 7 の iPhone 4S で発生します。シミュレーターで問題を再現できませんでした。

0 投票する
0 に答える
573 参照

ios - オーディオバッファxcode iosを増幅する

以下に示すように、AudioBufferがあります。スピーカーから再生できます。プレイする前にこれらのバッファを増幅する方法を知りたいです。どのように変更しますか?

0 投票する
4 に答える
2061 参照

ios - iOS で aubio フレームワークを使用するには?

iOS でオーディオ ファイルのビート、ピッチ、オンセット、および高速フーリエ変換 (FFT) を検出しようとしていますが、aubioがこれらの機能を提供し、iOS フレームワークも利用できることがわかりました。

これまでのところ、私はThe Amazing Audio EngineCore Audioを使用して、次のAudioBufferListようなでオーディオ データを受信して​​います。

これから aubioを使用して、ビート、ピッチ、オンセット、および高速フーリエ変換 (FFT) を検出できますAudioBufferListか? 私が間違った方向に進んでいる場合は、何か提案をお願いします。

0 投票する
2 に答える
746 参照

ios - リモート IO オーディオ ユニットを 1 つの iPhone から別の iPhone にストリーミングする

リモート IO オーディオ ユニットの使用法を示す 3 ~ 4 の例を見つけました。ここここなど。iPhone のマイクからのアナログ音声データを変換し、デジタル化してから再生します。この時点まではすべて正常に動作しており、Audio Unit についてよく理解できました。

ここで、AudioBufferList に保存されている録音済みのオーディオを同じデバイスで再生するのではなく、別のデバイスにストリーミングしたいと考えています。

以下は、AudioBufferList を nsdata に変換して別のデバイスに送信する方法です。

以下は、受信デバイスでnsdataをAudioBufferListに変換し、それをtempBufferにコピーして再生する方法です。

しかし、他のデバイスでは何も聞こえません。

何が間違っている可能性があるかについてご案内します。

0 投票する
2 に答える
980 参照

ios - float の配列を音声ファイルに書き込む

オーディオ ファイルに書き込みたい _recordingSamples という Float32 値の配列があります。_recordingLength の値は約 390000 です。次のコードを使用しています。

すべてのステータスが 0 として返され、ファイルが作成されます (4 バイト) が、Quicktime はファイルを開かず、エラー -12842 を返し、コンパイラは次のメッセージを配信します。

何が問題なのか知っている人はいますか?前もって感謝します。

0 投票する
1 に答える
119 参照

ios - ExtAudioFileRead からの出力の振幅を減らす

ファイルに再保存する前に、ExtAudioFileRead の出力の振幅を減らしたいと考えています。これが私の元のコードです:

私は、convertedData.mBuffers[0].mData をループして、各サンプルに分数を乗算することを考えていましたが、それは "void" 型です。読んでくれてありがとう!

編集:

これが私が今下っているパスです:

出力ファイルは間違いなく入力のスケーリングされたバージョンではありませんが、これは上記の誤った変数の選択が原因である可能性があると思います.

0 投票する
1 に答える
786 参照

ios - Swift の AudioBufferList

次のコードを Swift に変換しようとしています。

何を試しても、 audioBuffer リストを反復処理できないようです。誰か答えがありますか?

0 投票する
0 に答える
968 参照

ios - NSData を AudioBufferList から AVAudioPlayer にロードする

デリゲート メソッドから、オーディオの録音中に AudioBufferList を受け取ります。AVAudioPlayer にロードできるように AudioBufferList からデータを収集して保存しようとしていますが、AVAudioPlayer がエラーをスローし、録音を再生できません。AudioBufferList を使用するだけで、ファイルがなくても AVAudioPlayer でオーディオを再生できる必要があります。

もともと、録音をファイルに保存してから AVAudioPlayer にロードしていましたが、この方法では、別のオーディオ ファイルを作成せずに録音に追加できず、追加が行われた後に 2 つのファイルをマージすることができませんでした。これにはかなりの時間がかかっていたので、追加の合間に録音を聞くことができるようにしたいと思っています. そのため、保存するまでオーディオファイルを追加し続けることができるように、オーディオファイルを保存していません。これに関する問題は、AudioBufferList から保存している NSData が AVAudioPlayer に正しく読み込まれていないことです。

NSData を収集するためのコードは次のとおりです。

NSData を AVAudioPlayer に読み込もうとすると、次のエラーが発生します。

エラー: エラー ドメイン = NSOSStatusErrorDomain コード = 1954115647 「操作を完了できませんでした。(OSStatus エラー 1954115647。)」

どんな助けでも大歓迎です。

ありがとうございました、

0 投票する
1 に答える
1057 参照

ios - AudioBufferList を CMBlockBufferRef に変換中にエラーが発生しました

AVAssetReader を使用してビデオ ファイルを読み込んで、オーディオを CoreAudio に渡して処理 (エフェクトなどを追加) してから、AVAssetWriter を使用してディスクに保存しようとしています。出力ノードの AudioComponentDescription に componentSubType を RemoteIO として設定すると、スピーカーから正しく再生されることを指摘したいと思います。これにより、AUGraph が適切にセットアップされていることを確信できます。動作が聞こえるからです。ただし、subType を GenericOutput に設定しているので、自分でレンダリングを行い、調整されたオーディオを取り戻すことができます。

オーディオを読み込んでいて、CMSampleBufferRef を copyBuffer に渡します。これにより、オーディオが循環バッファに入れられ、後で読み込まれます。

次に、processOutput を呼び出します。これにより、outputUnit で手動の reder が実行されます。AudioUnitRender が呼び出されると、以下の playbackCallback が呼び出されます。これは、最初のノードで入力コールバックとして接続されているものです。PlaybackCallback は循環バッファからデータを取得し、渡された audioBufferList にフィードします。前に述べたように、出力が RemoteIO として設定されている場合、オーディオはスピーカーで正しく再生されます。AudioUnitRender が終了すると、noErr が返され、bufferList オブジェクトには有効なデータが含まれます。 CMSampleBufferSetDataBufferFromAudioBufferList を呼び出すと、 kCMSampleBufferError_RequiredParameterMissing (-12731) が取得されます

渡す CMSampleBufferRef は有効に見えます (以下は、デバッガーからのオブジェクトのダンプです)。

バッファリストは次のようになります

誰かが助けてくれることを願って、ここで本当に途方に暮れています。ありがとう、

問題がある場合は、これをios 8.3シミュレーターでデバッグしています。オーディオは、iPhone 6で撮影してラップトップに保存したmp4からのものです。

次の問題を読みましたが、まだ役に立たず、機能していません。

AudioBufferList を CMSampleBuffer に変換するには?

AudioBufferList を CMSampleBuffer に変換すると予期しない結果が生じる

CMSampleBufferSetDataBufferFromAudioBufferList がエラー 12731 を返す

コア オーディオのオフライン レンダリング

アップデート

さらに調べてみると、AudioUnitRender が実行される直前の AudioBufferList が次のようになっていることに気付きました。

mDataByteSize は numberFrames*sizeof(SInt32) で、512 * 4 です。playbackCallback で渡された AudioBufferList を見ると、リストは次のようになります。

その他のバッファがどこに行くのか、または他の1024バイトサイズが本当にわからない...

もし私がレッドナーに電話をかけ終わったら、もし私がこのようなことをしたら

newbuff を CMSampleBufferSetDataBufferFromAudioBufferList に渡すと、エラーはなくなります。

BufferList のサイズを 1 mNumberBuffers に設定するか、その mDataByteSize を numberFrames*sizeof(SInt16) に設定しようとすると、AudioUnitRender を呼び出すときに -50 が返されます。

更新 2

スピーカーでサウンドを再生するときに出力を検査できるように、レンダリング コールバックを接続しました。スピーカーに送られる出力にも 2 つのバッファーを持つ AudioBufferList があり、入力コールバック中の mDataByteSize は 1024 で、レンダー コールバックでは 2048 であることに気付きました。これは、AudioUnitRender を手動で呼び出したときに見たものと同じです。レンダリングされた AudioBufferList のデータを調べると、2 つのバッファーのバイトが同じであることがわかります。つまり、2 番目のバッファーは無視できます。しかし、データが取り込まれているため、レンダリング後のサイズが 1024 ではなく 2048 であるという事実を処理する方法がわかりません。なぜそれが起こっているのかについてのアイデアはありますか? オーディオグラフを通過した後、それはより生の形であり、それがサイズが2倍になっている理由ですか?

0 投票する
1 に答える
622 参照

c - Core Audio - リモート IO の混乱

iOS での remoteIO audiounit コールバックの動作の解釈に問題があります。入力コールバックと「レンダリング」コールバックの 2 つのコールバックを持つ remoteIO ユニットを設定しています。このおいしいピクセルチュートリアルで推奨されているものと非常によく似た remoteIO セットアップに従っています。これはかなり長い設定方法です:

コールバックで奇妙な動作が発生します。まず、playbackCallbackチュートリアルと同じ方法でプロパティを設定しているにもかかわらず、関数はまったく呼び出されません (チュートリアルは Loopy アプリを作成した人によるものです)。

次に、入力コールバックには ioData (audioBufferList) パラメーターがあり、(ドキュメントによると) null である必要がありますが、2 回目のコールバックで null と非 nil 値の間で反転しています。これは誰にとっても意味がありますか?

さらに、audiounitRender入力コールバック (API ロジックやライフサイクルなどの点でまだ理解していないセマンティクス) を呼び出すと、非常に一般的な「不正なパラメーター」である -50 エラーが発生します。これは、インターリーブ/デインターリーブ、チャネル数などの無効な「トポロジ」が原因である可能性が最も高いaudiobufferlistです。ただし、さまざまなトポロジを試しましたが、エラーは発生しませんでした。また、それは奇妙な ioData の動作を説明していません。参照用の関数は次のとおりです。

私の経験は、フォーマットの単純なエラー、または間違ったスコープで間違ったバスを使用している、またはその他の些細な (コア オーディオ コンテキスト エラーで簡単に発生する) ことが原因である可能性があると思います。しかし、私は基本的にセマンティクスとライフサイクル フローに対する直感がないため (スキーム?、何語を使用すればよいかさえわかりません)、これを適切にデバッグすることはできません。この状況に光を当てる可能性がある、より経験豊富なコアオーディオプログラマーからの助けを大いに感謝します.