美文网首页swift开发
Swift实现iOS录音与播放音频功能

Swift实现iOS录音与播放音频功能

作者: 狂奔的胖蜗牛 | 来源:发表于2017-05-01 15:41 被阅读4441次

    自己写的一个类,用于swift实现了录音与播放录制的音频的功能。详细的注意点见注释:

    import Foundation
    import AVFoundation
    
    class RecordManager {
        
        
        var recorder: AVAudioRecorder?
        var player: AVAudioPlayer?
        let file_path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first?.appending("/record.wav")
        
        
        //开始录音
        func beginRecord() {
            let session = AVAudioSession.sharedInstance()
            //设置session类型
            do {
                try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
            } catch let err{
                print("设置类型失败:\(err.localizedDescription)")
            }
            //设置session动作
            do {
                try session.setActive(true)
            } catch let err {
                print("初始化动作失败:\(err.localizedDescription)")
            }
            //录音设置,注意,后面需要转换成NSNumber,如果不转换,你会发现,无法录制音频文件,我猜测是因为底层还是用OC写的原因
            let recordSetting: [String: Any] = [AVSampleRateKey: NSNumber(value: 16000),//采样率
                                                AVFormatIDKey: NSNumber(value: kAudioFormatLinearPCM),//音频格式
                                                AVLinearPCMBitDepthKey: NSNumber(value: 16),//采样位数
                                                AVNumberOfChannelsKey: NSNumber(value: 1),//通道数
                                                AVEncoderAudioQualityKey: NSNumber(value: AVAudioQuality.min.rawValue)//录音质量
            ];
            //开始录音
            do {
                let url = URL(fileURLWithPath: file_path!)
                recorder = try AVAudioRecorder(url: url, settings: recordSetting)
                recorder!.prepareToRecord()
                recorder!.record()
                print("开始录音")
            } catch let err {
                print("录音失败:\(err.localizedDescription)")
            }
        }
        
        
        //结束录音
        func stopRecord() {
            if let recorder = self.recorder {
                if recorder.isRecording {
                    print("正在录音,马上结束它,文件保存到了:\(file_path!)")
                }else {
                    print("没有录音,但是依然结束它")
                }
                recorder.stop()
                self.recorder = nil
            }else {
                print("没有初始化")
            }
        }
        
        
        //播放
        func play() {
            do {
                player = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: file_path!))
                print("歌曲长度:\(player!.duration)")
                player!.play()
            } catch let err {
                print("播放失败:\(err.localizedDescription)")
            }
        }
        
    }
    

    使用的时候,只需要在要录音的地方导入该类,初始化后,使用即可

    let recoder_manager = RecordManager()//初始化
    recoder_manager.beginRecord()//开始录音
    recoder_manager.stopRecord()//结束录音
    recoder_manager.play()//播放录制的音频
    

    更多的功能,就需要看各自的项目需求,然后去做相应的修改了。

    相关文章

      网友评论

        本文标题:Swift实现iOS录音与播放音频功能

        本文链接:https://www.haomeiwen.com/subject/ljoftxtx.html