频道AVAudioRecorder Swift 3

时间:2017-01-18 23:14:45

标签: swift audio audio-recording avaudiorecorder

在网上搜索之后,我似乎无法找到这么简单问题的答案。我正在使用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在使用模拟器时显示...即使我尝试播放刚刚录制的声音,也没有问题。

有人知道为什么吗?

非常感谢!

2 个答案:

答案 0 :(得分:0)

与索引一样,第一个频道为0。只需使用:

audioRecorder.averagePower(forChannel: 0)

答案 1 :(得分:-1)

您只有一个频道

所以使用这个:

audioRecorder.updateMeters()
let normalizedValue = pow(10, audioRecorder.averagePower(forChannel: 0) / 20)