如何在 iOS 应用中检测音频文件的 BPM

Posted

技术标签:

【中文标题】如何在 iOS 应用中检测音频文件的 BPM【英文标题】:How to detect BPM of audio file in iOS app 【发布时间】:2014-02-17 10:32:19 【问题描述】:

我尝试使用 AVFoundation 框架查找 BPM,但结果得到 0 并且无法获取 BPM。

这是我的代码,

MPMediaItem * mediaItem = [[collection items] objectAtIndex: 0];
NSString * albumIDKey = [MPMediaItem persistentIDPropertyForGroupingType: MPMediaGroupingAlbum];
NSLog(@"mpmediaitem:%@", albumIDKey);
int BPM = [[mediaItem valueForProperty: MPMediaItemPropertyBeatsPerMinute] intValue];
NSString * bpm = [mediaItem valueForProperty: MPMediaItemPropertyBeatsPerMinute];
NSLog(@"bpm:%@", bpm);
NSURL * url = [mediaItem valueForProperty: MPMediaItemPropertyAssetURL];

我这里有什么遗漏吗?

【问题讨论】:

你的问题比较难回答,到目前为止你有什么尝试? 你是音频文件里面有数据吗?您能否展示您使用的代码 - 以及您如何得出该值为零的结论?有很多不同的方式可能会出错。请显示完整的代码示例! 【参考方案1】:

BPM 是从音频文件随附的元数据中提取的。这通常不存在。它不是从音频中计算出来的。

另外请注意,任何确实存在的 BPM 元数据都存在缺陷,因为假设曲目具有恒定速度。并不总是一个安全的假设。

优质音频元数据可从The Echonest获取

【讨论】:

您提供的链接无效。我每次都面临同样的 bpm 为 0 的问题。请推荐一些有用的资源。

以上是关于如何在 iOS 应用中检测音频文件的 BPM的主要内容,如果未能解决你的问题,请参考以下文章

Bpm音频检测库[关闭]

如何检测音频是不是无法静音?

iOS SoundTouch 框架 BPM 检测示例

如何在php中检测歌曲的BPM [关闭]

flstudio怎么设置2000bpm

如何检测我的音频流 url 是不是无法被 iOS 设备播放 - swift3