問題タブ [avaudioplayernode]

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 に答える
551 参照

ios - AVAudioPlayerNode scheduleBuffer interruptsAtLoop はすぐに中断しています

AVAudioPlayerNode (playerNode) と 2 つの AVAudioPCMBuffer (buffer1、buffer2) のセットアップがあります。

また、AVAudioTime (futureTime) を 10 秒間設定しています。

上記は、10 秒待ってから buffer1 を再生し、ループで再生し続けます。

次のコードを呼び出します。

少なくとも 10 秒待ってから buffer1 の次のループで中断するのではなく、buffer1 の再生を停止し、buffer2 をすぐに開始させています。

指示どおりにループで中断するのではなく、この即時中断を引き起こしている私が間違っていることについてのアイデアはありますか?

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

ios - AVAudioFile を同じ AVAudioPCMBuffer に複数回読み込む方法は?

編集:

for ループの最後に追加することで、 readIntoBufferが false を返すのを防ぐことができました。audioFileB.framePosition = 0;ただし、現在、 bufferB には最後のreadIntoBuffer呼び出し (私の不完全なループ) からのオーディオのみが含まれているようです。各 readIntoBuffer 呼び出しの後に、以前にバッファにロードされたデータをバッファが破棄する理由を知っている人はいますか?

元の質問:

私は 2 つの AVAudioFiles、audioFileAaudioFileBを持っています。ここで、A は B よりも長い持続時間 (おそらく数倍) を持っています。audioFileA を保持するのに十分な大きさの 2 つの AVAudioPCMBuffers を作成し、そのうちの 1 つに audioFileA のデータを入力し、もう 1 つに audioFileB のデータをバッファがいっぱいになるまで何度も入力したいと考えています。つまり、2 番目のバッファーには、audioFileB のオーディオの「ループ」が含まれている必要があります。これが私の試みです:

問題は、[audioFileB readIntoBuffer:bufferB frameCount:(AVAudioFrameCount)audioFileB.length error:&bufferBError]複数回呼び出されたときに false を返すことです。これを達成する方法についてのアイデアはありますか?