频道 AVAudioRecorder Swift 3

Posted

技术标签:

【中文标题】频道 AVAudioRecorder Swift 3【英文标题】:Channels AVAudioRecorder Swift 3 【发布时间】:2017-01-18 23:14:45 【问题描述】:

在互联网上苦苦搜索之后,我似乎仍然无法找到这样一个简单问题的答案。我正在使用 avaudiorecorder 录制音频,由于我的录音是“单声道”,因此我目前的音频会话设置中有一个通道。我的设置如下所示:

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

顺便说一句,使用模拟器时会出现这种情况......即使我尝试播放刚刚录制的声音,它也没有问题。

有人知道为什么吗?

非常感谢!

【问题讨论】:

【参考方案1】:

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

audioRecorder.averagePower(forChannel: 0)

【讨论】:

【参考方案2】:

你只有一个频道

所以用这个:

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

【讨论】:

这里重要的部分是通道0

以上是关于频道 AVAudioRecorder Swift 3的主要内容,如果未能解决你的问题,请参考以下文章

AVAudioRecorder swift 2

Swift + AVAudioRecorder 非常安静地录制

Swift 运行时错误 (exc_bad_access) AVAudioRecorder, recordSettings

Swift AVAudioPlayer 不会播放用 AVAudioRecorder 录制的音频

如何使用 Swift 5 /SwiftUI 将 AVAudioRecorder 文件上传到 Firebase 存储?

AVAudioRecorder 的有效“设置”键/值是啥?