为什么 AVAudioPlayer 总是显示 -160 dB 平均功率水平

问题描述 投票:0回答:1

我在 macOS 应用程序中初始化了 AVAudioPlayer,如下所示

do {
    let audioFile = Bundle.main.path(forResource: "sample", ofType: "mp3")!
    let audioURL = URL(filePath: audioFile)
    player = try AVAudioPlayer(contentsOf: audioURL)
} catch {
    fatalError()
}

当我单击“开始”按钮时,它开始正确播放声音,但打印的 dbLevel 始终为 -160。

Button("Start") {
    player!.play()
    var dbLevel = Float(0)
    timer = Timer.scheduledTimer(withTimeInterval: 0.2, repeats: true, block: { _ in
        player!.updateMeters()
        dbLevel = 0
        for n in 0..<player!.numberOfChannels {
            dbLevel += player!.averagePower(forChannel: n)
        }
        dbLevel = dbLevel / Float(player!.numberOfChannels)
        print(dbLevel)
    })
}

请注意,Xcode 会将以下消息写入控制台“AddInstanceForFactory:没有为 id 注册工厂 ...” 我做错了什么?谢谢。

swift avaudioplayer
1个回答
0
投票

我很快找到了解决方案 - 需要这一行

 player!.isMeteringEnabled = true
© www.soinside.com 2019 - 2024. All rights reserved.