【发布时间】:2017-07-04 14:48:20
【问题描述】:
我正在尝试捕捉来自手机麦克风的电平。我正在设置一个应用程序,以便用户可以创建语音备忘录。我有代码设置来记录备忘录并将它们保存在手机上我现在正在尝试设置声波以在用户键入时为视图设置动画。
我已经开始使用库SwiftSiriWaveformView,它运行良好。现在我只需要弄清楚如何捕捉麦克风电平。
我已经创建了一个方法
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!
}
}
但是,当我运行应用程序时,平均功率只显示为Average Power: -160.0
我已经尝试对此进行研究,但我只找到了与从保存文件而不是从实时流中生成音频波相关的其他解决方案。
有谁知道我如何获得当前的麦克风电平?
【问题讨论】:
标签: swift swift3 avaudiorecorder