You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 09:57:05