为何AVAudioPlayer始终显示-160 dB平均功率值?
问题解决
一、dBLevel始终为-160的原因及修复
你未开启AVAudioPlayer的计量功能,默认情况下isMeteringEnabled为false,此时调用updateMeters()和获取音量值都会返回最低的-160dB。
修复方法:在初始化AVAudioPlayer后,开启计量功能:
do { let audioFile = Bundle.main.path(forResource: "sample", ofType: "mp3")! let audioURL = URL(filePath: audioFile) player = try AVAudioPlayer(contentsOf: audioURL) // 新增该行开启计量功能 player?.isMeteringEnabled = true } catch { fatalError() }
完成上述修改后,再调用updateMeters()即可正确获取各声道的音量值。
二、控制台提示AddInstanceForFactory: No factory registered for id <CFUUID...>的处理
这是macOS上AVAudio相关的常见警告,不影响音频播放和计量功能,属于系统AudioToolbox组件注册的小问题。若想消除该警告,可在App启动时初始化AVAudioSession:
import AVFoundation // 在App入口(如App.swift或ViewController的viewDidLoad中)添加 do { try AVAudioSession.sharedInstance().setCategory(.playback) try AVAudioSession.sharedInstance().setActive(true) } catch { print("AVAudioSession初始化失败: \(error)") }
内容的提问来源于stack exchange,提问作者Dawy
相关产品推荐
相关产品推荐

