问题描述: 当使用AVAudioRecorder录制音频时,生成的Wav文件的头部信息不正确。
解决方法:
let settings = [
AVFormatIDKey: Int(kAudioFormatLinearPCM),
AVSampleRateKey: 44100.0,
AVNumberOfChannelsKey: 2,
AVEncoderBitRateKey: 12800,
AVLinearPCMBitDepthKey: 16,
AVLinearPCMIsFloatKey: false,
AVLinearPCMIsBigEndianKey: false,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]
你可以根据自己的需求进行设置,但确保这些设置与你所需的Wav文件格式一致。
let audioFilename = getDocumentsDirectory().appendingPathComponent("recording.wav")
let audioURL = URL(fileURLWithPath: audioFilename)
do {
audioRecorder = try AVAudioRecorder(url: audioURL, settings: settings)
audioRecorder?.delegate = self
audioRecorder?.record()
} catch {
print("Failed to initialize AVAudioRecorder: \(error.localizedDescription)")
}
请确保getDocumentsDirectory()方法返回正确的目录路径。
func audioRecorderDidFinishRecording(_ recorder: AVAudioRecorder, successfully flag: Bool) {
if flag {
print("Recording finished successfully.")
} else {
print("Recording failed.")
}
}
如果录制失败,你可以在这里获取更多的错误信息进行调试。
如果以上解决方法都没有解决问题,你可以尝试使用其他音频录制库,如AudioKit、EZAudio等,看是否能解决这个问题。