iOS でオーディオをリアルタイムで録音し、生のオーディオ データを分析し、録音データの一部を保存したいと考えています。このコードでデータを記録しています: https://gist.github.com/hotpaw2/ba815fc23b5d642705f2b1dedfaf0107
現在、データは Float 配列に保存されており、それをオーディオ ファイルに保存したいと考えています。私はこのコードでそれをやってみました:
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)
}
最後の行で、次のようなエラーが表示されます。
エラー: >avae> AVAudioFile.mm:306: -[AVAudioFile writeFromBuffer:error:]: エラー -50amplitudeDemo(79264,0x70000f7cb000) malloc: * オブジェクト 0x7fc5b9057e00 のエラー: 解放されたオブジェクトのチェックサムが正しくありません - オブジェクトは解放後に変更された可能性があります. * malloc_error_break にブレークポイントを設定してデバッグする
すでに他の多くの質問を検索しましたが、役立つものは見つかりませんでした。