問題タブ [avaudiofile]
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 Swift の malloc エラー
iOS でオーディオをリアルタイムで録音し、生のオーディオ データを分析し、録音データの一部を保存したいと考えています。このコードでデータを記録しています: https://gist.github.com/hotpaw2/ba815fc23b5d642705f2b1dedfaf0107
現在、データは Float 配列に保存されており、それをオーディオ ファイルに保存したいと考えています。私はこのコードでそれをやってみました:
最後の行で、次のようなエラーが表示されます。
エラー: >avae> AVAudioFile.mm:306: -[AVAudioFile writeFromBuffer:error:]: エラー -50amplitudeDemo(79264,0x70000f7cb000) malloc: * オブジェクト 0x7fc5b9057e00 のエラー: 解放されたオブジェクトのチェックサムが正しくありません - オブジェクトは解放後に変更された可能性があります. * malloc_error_break にブレークポイントを設定してデバッグする
すでに他の多くの質問を検索しましたが、役立つものは見つかりませんでした。
ios - AVAudioFile を同じ AVAudioPCMBuffer に複数回読み込む方法は?
編集:
for ループの最後に追加することで、 readIntoBufferが false を返すのを防ぐことができました。audioFileB.framePosition = 0;
ただし、現在、 bufferB には最後のreadIntoBuffer呼び出し (私の不完全なループ) からのオーディオのみが含まれているようです。各 readIntoBuffer 呼び出しの後に、以前にバッファにロードされたデータをバッファが破棄する理由を知っている人はいますか?
元の質問:
私は 2 つの AVAudioFiles、audioFileAとaudioFileBを持っています。ここで、A は B よりも長い持続時間 (おそらく数倍) を持っています。audioFileA を保持するのに十分な大きさの 2 つの AVAudioPCMBuffers を作成し、そのうちの 1 つに audioFileA のデータを入力し、もう 1 つに audioFileB のデータをバッファがいっぱいになるまで何度も入力したいと考えています。つまり、2 番目のバッファーには、audioFileB のオーディオの「ループ」が含まれている必要があります。これが私の試みです:
問題は、[audioFileB readIntoBuffer:bufferB frameCount:(AVAudioFrameCount)audioFileB.length error:&bufferBError]
複数回呼び出されたときに false を返すことです。これを達成する方法についてのアイデアはありますか?