Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 3现场话筒音量捕捉_Swift_Swift3_Avaudiorecorder - Fatal编程技术网

Swift 3现场话筒音量捕捉

Swift 3现场话筒音量捕捉,swift,swift3,avaudiorecorder,Swift,Swift3,Avaudiorecorder,我正试图捕捉从手机麦克风传来的音量。我正在设置一个应用程序,以便用户可以创建语音备忘录。我有代码设置来记录备忘录并将其保存在手机上。我现在正试图设置一个声波,以便在用户键入时为视图设置动画 我已经开始使用图书馆,它运行得很好。现在我只需要弄清楚如何捕捉麦克风音量 我创建了一个方法 internal func refreshAudioView(_:Timer) { if self.recorder == nil { self.endTimer() retu

我正试图捕捉从手机麦克风传来的音量。我正在设置一个应用程序,以便用户可以创建语音备忘录。我有代码设置来记录备忘录并将其保存在手机上。我现在正试图设置一个声波,以便在用户键入时为视图设置动画

我已经开始使用图书馆,它运行得很好。现在我只需要弄清楚如何捕捉麦克风音量

我创建了一个方法

internal func refreshAudioView(_:Timer) {
    if self.recorder == nil {
        self.endTimer()

        return
    }

    print("Average Power: \(CGFloat(self.recorder.averagePower(forChannel: 0)))")
}
在该方法中,它被添加到计时器中

@IBAction func startRecordingPressed(_ sender: UIButton) {
    if self.recorder != nil {
        //if here it means that the record button was double clicked
        return
    }
    self.filename = "wnw-voice-memo\(getDateFormatter("dd-MM-y_hmmss").string(from: Date())).m4a"
    self.url = getDocumentsDirectory().appendingPathComponent(self.filename)
    print(self.url)

    let settings = [
        AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
        AVSampleRateKey: 12000,
        AVNumberOfChannelsKey: 1,
        AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
    ]

    do {
        self.recorder = try AVAudioRecorder(url: self.url, settings: settings)
        self.recorder.delegate = self
        self.recorder.record()

        timer = Timer.scheduledTimer(timeInterval: 0.009, target: self, selector: #selector(refreshAudioView(_:)), userInfo: nil, repeats: true)
    } catch {
        //failed to record!
    }
}
但是,当我运行应用程序时,平均功率仅显示为
平均功率:-160.0

我已经尝试过研究这个问题,但我只找到了与从保存文件而不是从实时流生成音频波相关的其他解决方案


有人知道我如何获得当前的麦克风音量吗?

设置
录音机。meteringEnabled=true
并在
刷新音频视图中调用
录音机。在访问
peakPowerForChannel
averagePowerForChannel
之前,使用updateMeters()
。除了您已经监视的通道0之外,还要尝试读取通道1的功率