源碼地址:https://github.com/lfb-cd/recordDemo
文章地址:http://www.lxweimin.com/p/f0b88355d7cb
文章日期:2015/10/16
我的微博:lfb_CD
github上找了一圈,居然沒有一個Swift語言實現可以直接用的錄音Demo,于是自己寫一個吧!
分別定義AVAudioRecorder
和AVAudioPlayer
的兩個實例,一個用于錄音,一個用于播放
var audioRecorder:AVAudioRecorder!
var audioPlayer:AVAudioPlayer!
//定義音頻的編碼參數,這部分比較重要,決定錄制音頻文件的格式、音質、容量大小等,建議采用AAC的編碼方式
AVSampleRateKey//聲音采樣率
AVFormatIDKey //編碼格式
AVNumberOfChannelsKey //采集音軌
AVEncoderAudioQualityKey //音頻質量
let recordSettings = [AVSampleRateKey : NSNumber(float: Float(44100.0)),//聲音采樣率
AVFormatIDKey : NSNumber(int: Int32(kAudioFormatMPEG4AAC)),//編碼格式
AVNumberOfChannelsKey : NSNumber(int: 1),//采集音軌
AVEncoderAudioQualityKey : NSNumber(int: Int32(AVAudioQuality.Medium.rawValue))]//音頻質量
//初始化實例,準備錄音
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
try audioRecorder = AVAudioRecorder(URL: self.directoryURL()!,
settings: recordSettings)//初始化實例
audioRecorder.prepareToRecord()//準備錄音
} catch {
}
//定義并構建一個url
來保存音頻,音頻文件名為ddMMyyyyHHmmss.caf
func directoryURL() -> NSURL? {
//根據時間設置存儲文件名
let currentDateTime = NSDate()
let formatter = NSDateFormatter()
formatter.dateFormat = "ddMMyyyyHHmmss"
let recordingName = formatter.stringFromDate(currentDateTime)+".caf"
print(recordingName)
let fileManager = NSFileManager.defaultManager()
let urls = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)
let documentDirectory = urls[0] as NSURL
let soundURL = documentDirectory.URLByAppendingPathComponent(recordingName)//將音頻文件名稱追加在可用路徑上形成音頻文件的保存路徑
return soundURL
}
//開始錄音
@IBAction func startRecord(sender: AnyObject) {
if !audioRecorder.recording {//判斷是否正在錄音狀態
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setActive(true)
audioRecorder.record()
print("record!")
} catch {
}
}
}
//停止錄音
audioRecorder.stop()
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setActive(false)
print("stop!!")
} catch {
}
}
//開始播放
@IBAction func startPlaying(sender: AnyObject) {
if (!audioRecorder.recording){
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: audioRecorder.url)
audioPlayer.play()
print("play!!")
} catch {
}
}
}
//暫停播放
@IBAction func pausePlaying(sender: AnyObject) {
if (!audioRecorder.recording){
do {
try audioPlayer = AVAudioPlayer(contentsOfURL: audioRecorder.url)
audioPlayer.pause()
print("pause!!")
} catch {
}
}
}
完整代碼 下載地址請用力戳!:github 打賞也不必了,給俺一個star就夠了!
改天會寫幾篇iOS藍牙開發的文章,不日將和大家見面,敬請期待!
1445008077.jpeg
完!