首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift AVAudioEngine AVAudioPCMBuffer to PowerLevel

Swift AVAudioEngine AVAudioPCMBuffer to PowerLevel
EN

Stack Overflow用户
提问于 2017-11-01 20:54:05
回答 1查看 865关注 0票数 0

我一直在做一个项目,创建一个显示麦克风功率水平的应用程序。我知道AVAudioRecorder类提供了平均/峰值功率,但我希望只能记录某些频段的功率水平。我使用AudioUnitEQ类设置了乐队,并将其附加到AVAudioEngine并开始录制。目前,我一直在使用installTap方法来获取AVAudioPCMBuffer,这就是我被困住的地方。有没有办法将其转换为功率级别?另外,我的方法会完全错误吗?

EN

回答 1

Stack Overflow用户

发布于 2017-11-06 23:03:20

你可以像下面的代码一样得到avg/peek。

代码语言:javascript
复制
engine.installTap(......) { buffer in 
    guard let data = buffer.floatChannelData?[0] else {
        return
    }
    var dbData = [Float](repeating: 0.0, count: data.count)
    var one: Float = 0.0
    vDSP_vdbcon(&data, 1, &one, &dbData, 1, data.count, 1)

    var avgLevel: Float = 0.0
    var peakLevel: Float = 0.0
    vDSP_rmsqv(dbData, 1, &avgLevel, vDSP_Length(buffer.frameLength))
    vDSP_maxmgv(dbData, 1, &peakLevel, vDSP_Length(buffer.frameLength))
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47055372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档