我正在使用以下代码录制音频文件。
let audioFilename = getDocumentsDirectory().appendingPathComponent("tt.mp4")
let settings = [
AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
AVSampleRateKey: 12000,
AVNumberOfChannelsKey: 1,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]
do {
audioRecorder = try AVAudioRecorder(url: audioFilename, settings: settings)
audioRecorder.delegate = self
audioRecorder.record()
} catch {
print(" startRecording fail ")
}
现在,当用户停止录音时,我想将音频文件保存在 base64 字符串中。我正在尝试使用以下代码:
let audioData = try? Data(contentsOf: (audioRecorder?.url)!)
let encodedString = audioData?.base64EncodedString()
print(" data \(encodedString)")
//"AAAAGGZ0eXBtcDQyAAAAAG1wNDJpc29t"
现在我正在尝试播放字符串:
let player = try? AVAudioPlayer(data:(encodedString?.data(using: String.Encoding.init(rawValue: 0)))!)
player?.prepareToPlay()
player?.play()
这不是在玩。我在哪里失踪?
在您尝试将 base64 编码字符串转换回原始数据的最后一段代码中存在错误。
我还没有尝试使用实际音频数据运行代码,但这至少应该修复您的数据转换错误:
if let encodedString = encodedString, let data = Data(base64Encoded: encodedString) {
let player = try? AVAudioPlayer(data: data)
player?.prepareToPlay()
player?.play()
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句