首先贴一下demo地址
https://git.oschina.net/wayzhu/testaudio
主要实现内容:iOS使用语音的录制与播放,
由于是结合网上大神的代码,所以在此只说一下个人的相关处理:
1.语音编码转给安卓(wav转amr转data)
2.安卓的语音解码(amr转Wav(data型))
主要技术就是安卓传回amr的data,需要我们解析并转换wav型的data,一下是相关代码
/***********1.通过文件路径播放wav语***************/
// let convertePath = self.getPathFileName(fileName: self.fileName! + "AmrToWav", type: ".wav")
// try? self.player = AVAudioPlayer.init(contentsOf: URL.init(string:convertePath)!)
/***********1.通过文件路径播放wav语***************/
/***********2.通过文件路径播放wav语***************/
//将data存入文件中,
self.voiceData?.write(toFile: NSTemporaryDirectory().appending("AmtToWav"), atomically: true)
//将amr的data转成wav
VoiceConverter.convertAmr(toWav: NSTemporaryDirectory().appending("AmtToWav"), wavSavePath: NSTemporaryDirectory().appending("AudioTempConvertFile"))
//获取新的wav的Data
let converData = NSData.init(contentsOfFile: NSTemporaryDirectory().appending("AudioTempConvertFile"))
//通过data播放语音
try? self.player = AVAudioPlayer.init(data: converData! as Data)
/***********2.通过文件路径播放wav语***************/
相关base64编解码代码也奉上了
//文件转base64编码
func urlEncodingBase64(url:URL) -> String{
let data = try! Data.init(contentsOf: url)
return (data.base64EncodedString(options: .lineLength64Characters))
}
// //base64转data解码
func stringDecodingData(string:String) -> Data {
let data = Data.init(base64Encoded: string, options: .ignoreUnknownCharacters)
return data!
}