15.Swift 录制音频

15.Swift 录制音频


我们知道,AVAudioPlayer可以播放音频。但是与之对应的AVAudioRecorder是可以录制音频的。


AVAudioRecorder构造方法
AVAudioRecorder.init(URL url: NSURL, settings: [String : AnyObject]) throws

创建文件,准备自动记录
AVAudioRecorder.prepareToRecord() -> Bool

开始记录
AVAudioRecorder.record() -> Bool

停止记录,并关闭文件
AVAudioRecorder.stop()

    var avRec:AVAudioRecorder!
    var avUrl:NSURL!
    var avPlayer:AVAudioPlayer!

    // 初始化AVAudioRecorder
    func initAVAudioRecorder(){
        self.avUrl = (NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.AllDomainsMask)[0] as NSURL).URLByAppendingPathComponent("record")
        NSLog("\(self.avUrl)");

        // 录音文件配置
        let recordSettings = [
            AVEncoderAudioQualityKey: AVAudioQuality.Max.rawValue,
            AVEncoderBitRateKey: 320000,
            AVNumberOfChannelsKey: 2,
            AVSampleRateKey: 44100.0
        ]
        do{
            // 实例化AVAudioRecorder
            try self.avRec = AVAudioRecorder(URL: avUrl, settings: recordSettings as! [String : AnyObject])
            // 创建文件,准备记录。会自动记录
            self.avRec.prepareToRecord()
        }catch let error as NSError{
            NSLog("\(error.localizedDescription)")
        }catch {
            NSLog("Other error")
        }
    }

    // 开始录音
    @IBAction func startRecord(sender: AnyObject) {
        NSLog("start")
        // 开始记录
        self.avRec.record()
    }
    // 结束录音
    @IBAction func stopRecord(sender: AnyObject) {
        NSLog("stop")
        // 停止记录,并关闭文件
        self.avRec.stop()
    }

    // 播放录音
    @IBAction func playRecord(sender: AnyObject) {
        NSLog("playRecord")
        do{
            try self.avPlayer = AVAudioPlayer(contentsOfURL: self.avUrl)
        }catch let error as NSError{
            NSLog("\(error.localizedDescription)")
        }catch {
            NSLog("Other error")
        }
        self.avPlayer.prepareToPlay()
        avPlayer.play()
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值