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

标签 ios objective-c audio avfoundation

我试图使用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];

我在这里想念什么吗?

最佳答案

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

还应注意,假设轨 Prop 有恒定的速度,则确实存在的任何BPM元数据都有缺陷。并非总是一个安全的假设。

可以从The Echonest获得高质量的音频元数据

关于ios - 如何在iOS应用中检测音频文件的BPM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21826591/

相关文章:

用 swift 编写的 iOS 应用程序在返回 View 时崩溃

ios - 从初始化错误返回之前,未在所有路径上调用 Super.init

ios - 有人可以告诉我Crashlytics Beta中可以存在的最大ipa版本数是多少。 Beta中可以存在多少天?

ios - Cordova 在加载页面时卡住,Cordova 4.2.1,iOS 10.0

objective-c - 如何为 LLVM 声明打包结构(无填充)?

objective-c - 使用 SKPSMTPMessage 向多个收件人发送电子邮件?

iphone - Objective-C 和 UML 建模

javascript - 使用jQuery问题 append 音频播放器对象

audio - gstreamer 将多 channel wav 文件拆分为单独的 channel 并将每个 channel 编码为 mp3、alac 等并保存到文件

audio - FFmpeg:替换实时视频流中的音频