当前位置:  开发笔记 > 编程语言 > 正文

如何在Swift中以wav格式录制音频?

如何解决《如何在Swift中以wav格式录制音频?》经验,为你挑选了0个好方法。

我到处寻找这个,我找不到合适的方法.我已成功以.wav格式录制,但问题是,当我尝试从录制的.wav文件中读取原始数据时,某些块位于错误的位置/根本不存在.

我录制音频的代码:

    func startRecording(){

    let audioSession = AVAudioSession.sharedInstance()

    try! audioSession.setCategory(AVAudioSessionCategoryPlayAndRecord)
    try! audioSession.setActive(true)
    audioSession.requestRecordPermission({(allowed: Bool) -> Void in print("Accepted")} )


    let settings: [String : AnyObject] = [
        AVFormatIDKey:Int(kAudioFormatLinearPCM),
        AVSampleRateKey:44100.0,
        AVNumberOfChannelsKey:1,
        AVLinearPCMBitDepthKey:8,
        AVLinearPCMIsFloatKey:false,
        AVLinearPCMIsBigEndianKey:false,
        AVEncoderAudioQualityKey:AVAudioQuality.Max.rawValue
    ]

    let date = NSDate()

    let df = NSDateFormatter()
    df.dateFormat = "yyyy-MM-dd-HH:mm:ss"

    let dfString = df.stringFromDate(date)

    let fullPath = documentsPath.stringByAppendingString("/\(dfString).wav")

    recorder = try! AVAudioRecorder(URL: NSURL(string: fullPath)!, settings: settings)
    recorder.delegate = self
    recorder.prepareToRecord()
    recorder.record()

}

当我打印出录音机音频文件的数据时,我会得到一个奇怪的数字,其中'd'''t''a'应该被写入,后跟零.然后,在数据的中间,它出现了.

没有64617461('d''''t'''') - 它应该代替464c4c52

64617461('d''''t''a')在很多零之后的随机点 没有64617461('d''''t'''') 在此输入图像描述

是否有更好的方法来录制wav文件?我不确定为什么会发生这种情况,所以任何帮助都会受到赞赏.我是否应该以其他格式录制然后将其转换为原始格式?

谢谢,抱歉这么多图片.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有