在网上搜索之后,我似乎无法找到这么简单问题的答案。我正在使用avaudiorecorder录制音频,我目前在我的音频会话设置中有一个频道,因为我的录音是" mono"。我的设置如下:
try session.setCategory(AVAudioSessionCategoryAmbient)
try session.overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
try session.setActive(true)
let settings = [
AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
AVSampleRateKey: 12000,
AVNumberOfChannelsKey: 1,
AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
]
audioRecorder = try AVAudioRecorder(url: audioFileName, settings: settings)
audioRecorder.delegate = self
audioRecorder.isMeteringEnabled = true
我想做的就是以下
audioRecorder.averagePower(forChannel: 1)
出于某种原因,我总是得到
fatal error: unexpectedly found nil while unwrapping an Optional value
btw在使用模拟器时显示...即使我尝试播放刚刚录制的声音,也没有问题。
有人知道为什么吗?
非常感谢!
答案 0 :(得分:0)
与索引一样,第一个频道为0
。只需使用:
audioRecorder.averagePower(forChannel: 0)
答案 1 :(得分:-1)
您只有一个频道
所以使用这个:
audioRecorder.updateMeters()
let normalizedValue = pow(10, audioRecorder.averagePower(forChannel: 0) / 20)