iOS如何獲取本地的音樂歌曲mp3的信息數(shù)據(jù)

今天在做一款音樂播放器的時候需要支持文件共享本地導(dǎo)入音樂,但是導(dǎo)入進(jìn)去的mp3是只有歌曲名字加格式的济赎,有些甚至歌曲名字都不對只是一個.mp3文件,例如:

本地mp3文件.png

但是這時候我們的界面上是需要顯示歌曲的信息的草添,歌手酪劫,歌曲名字,專輯珊蟀,縮略圖等等信息菊值,其實(shí)這些信息在.mp3里面是可以找到的,但是也不能全找到育灸。估計是這些生成的時候沒有加到里面腻窒,話不多說直接進(jìn)入正題。這里以我的用法為例磅崭,可根據(jù)自己情況靈活變動儿子。

  • 獲取到mp3文件(我這里是獲取的所有文件放到數(shù)組。如不需要可以單個獲仍矣鳌)
    NSArray *mp3Array = [NSBundle pathsForResourcesOfType:@"mp3" inDirectory:[[NSBundle mainBundle] resourcePath]];

  • 遍歷數(shù)組得到每個文件的路徑并得到AVURLAsset的對象
    for (NSString *filePath in mp3Array) {
    NSURL *url = [NSURL fileURLWithPath:filePath];
    NSString *MusicName = [filePath lastPathComponent];
    AVURLAsset *mp3Asset = [AVURLAsset URLAssetWithURL:url options:nil];
    NSLog(@"%@",mp3Asset);

  • 獲取文件中數(shù)據(jù)格式類型
    for (NSString *format in [mp3Asset availableMetadataFormats]) {

  • 獲取特定格式類型
    for (AVMetadataItem *metadataItem in [mp3Asset metadataForFormat:format]) {
    NSLog(@"commonKey = %@",metadataItem.commonKey);

              if ([metadataItem.commonKey isEqualToString:@"artwork"]) {
                  NSString *mime = [(NSDictionary *)metadataItem.value objectForKey:@"MIME"];
                  NSData *data = [(NSDictionary *)metadataItem.value objectForKey:@"data"];
                  UIImageView.image = [UIImage imageWithData:data];
                  NSLog(@"mime: %@",mime);
                  
              }
              else if([metadataItem.commonKey isEqualToString:@"title"])
              {
                  NSString *title = (NSString *)metadataItem.value;
                  NSLog(@"title: %@",title);
                  
              }
              else if([metadataItem.commonKey isEqualToString:@"artist"])
              {
                  NSString *artist = (NSString *)metadataItem.value;
                  NSLog(@"artist: %@",artist);
                  
              }
              else if([metadataItem.commonKey isEqualToString:@"albumName"])
              {
                  NSString *albumName = (NSString *)metadataItem.value;
                  NSLog(@"albumName: %@",albumName);
                  
              }
    

以上就是具體如何獲取本地的歌曲信息了柔逼。如有不明白可參考這篇內(nèi)容:

關(guān)于AVFoundation

  • 下面為大家貼上本人在項目中的實(shí)例應(yīng)用代碼:

      + (NSMutableArray *)MusicInfoArray
    {
     NSMutableArray *resultArray = [[NSMutableArray alloc] init];
    NSArray *mp3Array = [NSBundle pathsForResourcesOfType:@"mp3" inDirectory:[[NSBundle mainBundle] resourcePath]];
    
    for (NSString *filePath in mp3Array) {
      NSURL *url = [NSURL fileURLWithPath:filePath];
      NSString *MusicName = [filePath lastPathComponent];
      AVURLAsset *mp3Asset = [AVURLAsset URLAssetWithURL:url options:nil];
      NSLog(@"%@",mp3Asset);
      for (NSString *format in [mp3Asset availableMetadataFormats]) {
          NSMutableDictionary *infoDict = [[NSMutableDictionary alloc] init];
          [infoDict setObject:MusicName forKey:@"MusicName"];
          NSLog(@"format type = %@",format);
          for (AVMetadataItem *metadataItem in [mp3Asset metadataForFormat:format]) {
              NSLog(@"commonKey = %@",metadataItem.commonKey);
              
              if ([metadataItem.commonKey isEqualToString:@"artwork"]) {
                  NSString *mime = [(NSDictionary *)metadataItem.value objectForKey:@"MIME"];
                  NSLog(@"mime: %@",mime);
                  
                  [infoDict setObject:mime forKey:@"artwork"];
              }
              else if([metadataItem.commonKey isEqualToString:@"title"])
              {
                  NSString *title = (NSString *)metadataItem.value;
                  NSLog(@"title: %@",title);
                  
                  [infoDict setObject:title forKey:@"title"];
              }
              else if([metadataItem.commonKey isEqualToString:@"artist"])
              {
                  NSString *artist = (NSString *)metadataItem.value;
                  NSLog(@"artist: %@",artist);
                  
                  [infoDict setObject:artist forKey:@"artist"];
              }
              else if([metadataItem.commonKey isEqualToString:@"albumName"])
              {
                  NSString *albumName = (NSString *)metadataItem.value;
                  NSLog(@"albumName: %@",albumName);
                  
                  [infoDict setObject:albumName forKey:@"albumName"];
              }
          }
          
          [resultArray addObject:infoDict];
      }
    }
    
    return resultArray;
    }
    

每一次的學(xué)習(xí)和記錄都是成長道路上的一小步。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末割岛,一起剝皮案震驚了整個濱河市愉适,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌癣漆,老刑警劉巖维咸,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異惠爽,居然都是意外死亡腰湾,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門疆股,熙熙樓的掌柜王于貴愁眉苦臉地迎上來费坊,“玉大人,你說我怎么就攤上這事旬痹「骄” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵两残,是天一觀的道長永毅。 經(jīng)常有香客問我,道長人弓,這世上最難降的妖魔是什么沼死? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮崔赌,結(jié)果婚禮上意蛀,老公的妹妹穿的比我還像新娘耸别。我一直安慰自己,他們只是感情好县钥,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布秀姐。 她就那樣靜靜地躺著,像睡著了一般若贮。 火紅的嫁衣襯著肌膚如雪省有。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天谴麦,我揣著相機(jī)與錄音蠢沿,去河邊找鬼。 笑死匾效,一個胖子當(dāng)著我的面吹牛舷蟀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播弧轧,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼雪侥,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了精绎?” 一聲冷哼從身側(cè)響起速缨,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎代乃,沒想到半個月后旬牲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡搁吓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年原茅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片堕仔。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡擂橘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出摩骨,到底是詐尸還是另有隱情通贞,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布恼五,位于F島的核電站昌罩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏灾馒。R本人自食惡果不足惜茎用,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧轨功,春花似錦旭斥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽董饰。三九已至蒿褂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卒暂,已是汗流浹背啄栓。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留也祠,地道東北人昙楚。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像诈嘿,于是被迫代替她去往敵國和親堪旧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容