0.倒入框架
import AVFoundation
1.懒加载录音对象
lazy var record : AVAudioRecorder? = {
// url : 录音文件的路径
// setting : 录音的设置项
let url = URL(fileURLWithPath: "/Users/liuhongtao/Desktop/录音/abc.caf")
let configDic : [String : Any] = [
// 编码格式
AVFormatIDKey : NSNumber(value : Int32(kAudioFormatLinearPCM)),
// 采样率
AVSampleRateKey : NSNumber(value : 11025.0),
// 通道数
AVNumberOfChannelsKey : NSNumber(value: 2),
// 录音质量
AVEncoderAudioQualityKey : NSNumber(value: Int32(AVAudioQuality.min.rawValue))
]
do {
let tempRecord = try AVAudioRecorder(url: url, settings: configDic)
// 准备录音
tempRecord.prepareToRecord()
return tempRecord
} catch {
print(error)
return nil
}
}()
2.开始录音
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
// 开始录音
print("开始")
// 开始就直接录音(需要手动通过代码结束录音)
record?.record()
// // 从未来的某个时间点开始录音(需要手动通过代码结束录音)
// record?.record(atTime: record!.deviceCurrentTime + 3)
// // 从现在开始录音,录多久
// record?.record(forDuration: <#T##TimeInterval#>)
// // 从未来的某个时间点开始录音,录多久
// record?.record(atTime: <#T##TimeInterval#>, forDuration: <#T##TimeInterval#>)
}
3.结束录音
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
// 结束录音(如果录音时间小于1秒,无效)
if record!.currentTime < 1 {
print("录音时间太短")
record?.stop()
// 如果想要删除录音文件,必须先停止录音
record?.deleteRecording()
}else {
print("停止录音")
record?.stop()
}
}
注意:要在某个位置创建了文件夹,将录音文件保存