2014-02-17 71 views
-1

我試圖使用AVFoundation框架查找BPM,但因此得到0而無法獲得BPM。如何在iOS應用程序中檢測音頻文件的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]; 

我錯過了什麼嗎?

+2

你的問題可以得到比較難回答,你嘗試過這麼遠嗎? – Volker

+0

你是說音頻文件裏有數據嗎?你可以展示你使用的代碼 - 以及你如何得出結論值爲零?有很多不同的方式可能會出錯。請顯示完整的代碼示例! – Floris

回答

1

BPM是從伴隨音頻文件的元數據中提取的。這通常不存在。它不是從音頻計算的。

另請注意,存在的任何BPM元數據都存在缺陷,假設音軌具有恆定的速度。並不總是一個安全的假設。

質量的音頻,元數據可以從The Echonest

+0

您提供的鏈接無效。我面臨同樣的問題,即每次都將bpm設爲0。請建議一些有用的資源。 – Ghazalah

相關問題