リアルタイムでiOSにオーディオを録音し、生のオーディオデータを分析し、記録されたデータの一部を保存します。 https://gist.github.com/hotpaw2/ba815fc23b5d642705f2b1dedfaf0107iOS Swift mallocエラー
私のデータはフロートアレイに保存され、オーディオファイルに保存したいと思います。 [AVAudioFile writeFromBuffer:エラー:] - :私はこのコードでそれをやってみました:
ERROR:> avae> AVAudioFile.mm:306最後の行に
let fileMgr = FileManager.default
let dirPaths = fileMgr.urls(for: .documentDirectory, in: .userDomainMask)
let recordSettings = [AVEncoderAudioQualityKey: AVAudioQuality.min.rawValue,
AVEncoderBitRateKey: 16,
AVNumberOfChannelsKey: 2,
AVSampleRateKey: 44100] as [String: Any]
let soundFileUrl = dirPaths[0].appendingPathComponent("recording-" + getDate() + ".pcm")
do {
let audioFile = try AVAudioFile(forWriting: soundFileUrl, settings: recordSettings)
let format = AVAudioFormat(commonFormat: .pcmFormatInt16, sampleRate: 44100, channels: 2, interleaved: true)
let audioFileBuffer = AVAudioPCMBuffer(pcmFormat: format, frameCapacity: 3000)
for i in 0..<circBuffer.count {
audioFileBuffer.int16ChannelData?.pointee[i] = Int16(circBuffer[i])
}
try audioFile.write(from: audioFileBuffer)
}
、私が言うエラーが出ます:-50 amplitudeDemo(79264,0x70000f7cb000)malloc:*オブジェクトのエラー0x7fc5b9057e00:解放されたオブジェクトのチェックサムが正しくありません。オブジェクトは解放された後に変更されている可能性があります。 *は、デバッグするためにmalloc_error_breakにブレークポイントを設定しました
私は既に他の多くの質問を検索しましたが、何か助けになるものは見つかりませんでした。この行では、あなたのコードで
が、これは多くのことを助け、ありがとうございます。しかし、まだ生成されたオーディオファイルは空であり、エラーが発生します: "エラー:> avae> AVAudioFile.mm:306: - [AVAudioFile writeFromBuffer:error:]:エラー-50" – user7310287
@ user7310287、申し訳ありませんが、私はもう少し私のコードをチェックすべきです、私はちょうどバッファにクラッシュを引き起こさない書き込みをチェックしています。しかし、ファイルへの実際の書き込みでチェックされず、成功するかどうか。実際のiOSの動作を確認したら、「修正が見つかるまで署名を受け入れる」のチェックを外してください。 – OOPer