一個(gè)錄音Demo-Swift語(yǔ)言實(shí)現(xiàn)

源碼地址:https://github.com/lfb-cd/recordDemo
文章地址:http://www.itdecent.cn/p/f0b88355d7cb
文章日期:2015/10/16
我的微博:lfb_CD

github上找了一圈,居然沒有一個(gè)Swift語(yǔ)言實(shí)現(xiàn)可以直接用的錄音Demo,于是自己寫一個(gè)吧!

分別定義AVAudioRecorderAVAudioPlayer的兩個(gè)實(shí)例,一個(gè)用于錄音,一個(gè)用于播放

var audioRecorder:AVAudioRecorder!
var audioPlayer:AVAudioPlayer!

//定義音頻的編碼參數(shù),這部分比較重要,決定錄制音頻文件的格式、音質(zhì)、容量大小等,建議采用AAC的編碼方式

AVSampleRateKey//聲音采樣率
AVFormatIDKey //編碼格式
AVNumberOfChannelsKey //采集音軌
AVEncoderAudioQualityKey //音頻質(zhì)量
let recordSettings = [AVSampleRateKey : NSNumber(float: Float(44100.0)),//聲音采樣率
AVFormatIDKey : NSNumber(int: Int32(kAudioFormatMPEG4AAC)),//編碼格式
AVNumberOfChannelsKey : NSNumber(int: 1),//采集音軌
AVEncoderAudioQualityKey : NSNumber(int: Int32(AVAudioQuality.Medium.rawValue))]//音頻質(zhì)量

//初始化實(shí)例,準(zhǔn)備錄音

        let audioSession = AVAudioSession.sharedInstance()
        do {
            try audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
            try audioRecorder = AVAudioRecorder(URL: self.directoryURL()!,
                settings: recordSettings)//初始化實(shí)例
            audioRecorder.prepareToRecord()//準(zhǔn)備錄音
        } catch {
        }

//定義并構(gòu)建一個(gè)url來(lái)保存音頻,音頻文件名為ddMMyyyyHHmmss.caf

    func directoryURL() -> NSURL? {

        //根據(jù)時(shí)間設(shè)置存儲(chǔ)文件名
        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 {//判斷是否正在錄音狀態(tài)
            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 {
            }
        }  
    }

完整代碼 下載地址請(qǐng)用力戳?。?a target="_blank" rel="nofollow">github 打賞也不必了,給俺一個(gè)star就夠了!

改天會(huì)寫幾篇iOS藍(lán)牙開發(fā)的文章,不日將和大家見面,敬請(qǐng)期待!

1445008077.jpeg

完!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容