如何将缓冲区数据写入文件的中间,而不是附加到文件的末尾



我可以通过以下代码将缓冲区数据附加到音频文件的END来将音频记录到音频文件中:

// AVAudioFile uses the Core Audio Format (CAF) to write to disk.
// So we're using the caf file extension.
file = try AVAudioFile(forWriting: FileManagerHelper.recordingLocalURL(), settings: format.settings)
tapNode.installTap(onBus: 0, bufferSize: bufferSize, format: format, block: {
(buffer, _) in
do {
buffer.frameLength = 1024 // Tap is now called every 40ms. By default, tap is called every 0.375s
try self.file?.write(from: buffer)
self.delegate?.recorderDidRecieveAudioBuffer(self, buffer: buffer)
semaphore.signal()
} catch {
log("Error writing mic data to file.", msgType: .error)
}
})

但是,是否有将缓冲区数据写入文件的特定位置,即缓冲区数据中的时间或索引?

感谢

根据苹果文档:

var framePosition:AVAudioFramePosition:文件中将进行下一次读取或写入操作的位置。

因此,您只需要将framePosition设置为要开始录制新音频数据的帧中的任何位置。

最新更新