2009-08-06 84 views
11

我有mp3文件存儲在iPhone上,我的應用程序應該能夠讀取ID3信息,即長度以秒爲單位,藝術家等 有誰知道如何做到這一點或什麼庫在Objective-C中使用?使用目標讀取MP3信息c

您的想法非常感謝。

+2

當你說你手機中存有MP3文件時,你的意思是你的應用程序在其沙箱中的任何地方有mp3文件(無論是在你的軟件包還是你下載的),還是你的意思是用戶已經通過iTunes加載它們?查詢媒體播放器以獲取設備上的歌曲信息與解析信息文件完全不同。 – 2009-08-06 15:13:38

+0

Hi Louis, mp3文件是從網上下載並存儲在我的應用程序的文檔文件夾中的文件。感謝您指出困惑。 託尼 – TonyNeallon 2009-08-07 08:47:26

+0

這已被回答在這個SO問題:[http://stackoverflow.com/questions/1138118/how-to-extract-id-tags-from-mp3-files-in-cocoa](http: stackoverflow.com/questions/1138118/how-to-extract-id-tags-from-mp3-files-in-cocoa) – 2009-08-06 16:37:05

回答

19

可以讀取ID3信息使用AudioToolbox框架的AudioFileGetProperty函數來讀取音頻文件的kAudioFilePropertyInfoDictionary屬性。

的詳細說明,請iphonedevbook.com

編輯:原文鏈接現在已經下降。 InformIT有一些類似的示例代碼,但它不完整。

+0

提供的鏈接請求的權限:( – 2013-06-04 10:30:49

+1

頁面不再可用。我把它換成了類似的,但不完整的鏈接。 – rpetrich 2013-06-06 02:43:34

+2

[這個StackOverflow的答案是明確的,並給出源代碼。(http://stackoverflow.com/a/17478117/59913) – 2014-08-04 20:47:42

5

查找到媒體播放器框架:

這就要求有問題的MP3在手機上了iPod庫的一部分。

例如,確定手機上每個媒體文件的名稱(包括電影,播客等)):

MPMediaQuery *everything = [[MPMediaQuery alloc] init]; 

NSArray *itemsFromGenericQuery = [everything items]; 
for (MPMediaItem *item in itemsFromGenericQuery) { 
    NSString *itemTitle = [item valueForProperty:MPMediaItemPropertyTitle]; 
    // ... 
} 

看來,以下屬性:

  • MPMediaItemPropertyMediaType
  • MPMediaItemPropertyTitle
  • MPMediaItemPropertyAlbumTitle
  • MPMediaItemPropertyArtist
  • MPMediaItemPropertyAlbumArtist
  • MPMediaItemPropertyGenre
  • MPMediaItemPropertyComposer
  • MPMediaItemPropertyPlaybackDuration
  • MPMediaItemPropertyAlbumTrackNumber
  • MPMediaItemPropertyAlbumTrackCount
  • MPMediaItemPropertyDiscNumber
  • MPMediaItemPropertyDiscCount
  • MPMediaItemPropertyArtwork
  • MPMediaItemPropertyLyrics
  • MPMediaItemPropertyIsCompilation

這樣做而不需要通過媒體播放器框架將有些困難了,需要一個外部框架。

+2

他不能使用電子媒體播放器,因爲這些文件是MP3音樂在他的應用程序文件夾,而不是音樂是系統範圍的音樂收藏的一部分 – 2009-08-12 06:02:58