iOS获取本地音频文件(属性/信息)

来自:互联网
时间:2020-05-26
阅读:

本文实例为大家分享了iOS获取本地音频文件的具体代码,供大家参考,具体内容如下

获取本地音频文件地址:

NSString *songsDirectory=MUSIC_FILE_ALL;//沙盒地址
  NSBundle *songBundle=[NSBundle bundleWithPath:songsDirectory];
  NSString *bundlePath=[songBundle resourcePath];
 
  NSArray *arrMp3=[NSBundle pathsForResourcesOfType:@"mp3" inDirectory:bundlePath];
  for (NSString *filePath in arrMp3) {
    [self.wMp3URL addObject:filePath];
  }

解析音频文件属性:

-(void)mDefineUpControl{ 
  NSString *filePath = [self.wMp3URL objectAtIndex: 0 ];//随便取一个,说明 
  //文件管理,取得文件属性 
 
  NSFileManager *fm = [NSFileManager defaultManager]; 
  NSDictionary *dictAtt = [fm attributesOfItemAtPath:filePath error:nil]; 
   
 
  //取得音频数据   
 
  NSURL *fileURL=[NSURL fileURLWithPath:filePath]; 
  AVURLAsset *mp3Asset=[AVURLAsset URLAssetWithURL:fileURL options:nil]; 
  
   
  NSString *singer;//歌手 
  NSString *song;//歌曲名 
 
  UIImage *image;//图片  
 
  NSString *albumName;//专辑名 
  NSString *fileSize;//文件大小 
  NSString *voiceStyle;//音质类型 
  NSString *fileStyle;//文件类型 
  NSString *creatDate;//创建日期 
  NSString *savePath; //存储路径 
   
  for (NSString *format in [mp3Asset availableMetadataFormats]) { 
    for (AVMetadataItem *metadataItem in [mp3Asset metadataForFormat:format]) { 
      if([metadataItem.commonKey isEqualToString:@"title"]){ 
        song = (NSString *)metadataItem.value;//歌曲名 
       
      }else if ([metadataItem.commonKey isEqualToString:@"artist"]){ 
        singer = (NSString *)metadataItem.value;//歌手 
      } 
      //      专辑名称 
      else if ([metadataItem.commonKey isEqualToString:@"albumName"]) 
      { 
        albumName = (NSString *)metadataItem.value; 
      }else if ([metadataItem.commonKey isEqualToString:@"artwork"]) { 
        NSDictionary *dict=(NSDictionary *)metadataItem.value; 
        NSData *data=[dict objectForKey:@"data"]; 
        image=[UIImage imageWithData:data];//图片 
      } 
     
    } 
  } 
  savePath = filePath; 
  float tempFlo = [[dictAtt objectForKey:@"NSFileSize"] floatValue]/(1024*1024); 
  fileSize = [NSString stringWithFormat:@"%.2fMB",[[dictAtt objectForKey:@"NSFileSize"] floatValue]/(1024*1024)]; 
  NSString *tempStrr = [NSString stringWithFormat:@"%@", [dictAtt objectForKey:@"NSFileCreationDate"]] ; 
  creatDate = [tempStrr substringToIndex:19]; 
  fileStyle = [filePath substringFromIndex:[filePath length]-3]; 
  if(tempFlo <= 2){ 
    voiceStyle = @"普通"; 
  }else if(tempFlo > 2 && tempFlo <= 5){ 
    voiceStyle = @"良好"; 
  }else if(tempFlo > 5 && tempFlo < 10){ 
    voiceStyle = @"标准"; 
  }else if(tempFlo > 10){ 
    voiceStyle = @"高清"; 
  } 
   
   
  NSArray *tempArr = [[NSArray alloc] initWithObjects:@"歌手:",@"歌曲名称:",@"专辑名称:",@"文件大小:",@"音质类型:",@"文件格式:",@"创建日期:",@"保存路径:", nil nil]; 
  NSArray *tempArrInfo = [[NSArray alloc] initWithObjects:singer,song,albumName,fileSize,voiceStyle,fileStyle,creatDate,savePath, nil nil]; 
  for(int i = 0;i < [tempArr count]; i ++){ 
    NSString *strTitle = [tempArr objectAtIndex:i]; 
    UILabel *titleLab = [[UILabel alloc] initWithFrame:CGRectMake(5, 5+i*30, 16*[strTitle length], 25)]; 
    [titleLab setText:strTitle]; 
    [titleLab setTextColor:[WASharedFontStyle mGetSharedFontColor]]; 
    [titleLab setFont:[UIFont systemFontOfSize:16]]; 
    [self.wInfoSV addSubview:titleLab]; 
     
    NSString *strInfo = [tempArrInfo objectAtIndex:i]; 
    UILabel *infoLab = [[UILabel alloc] initWithFrame:CGRectMake(titleLab.frame.origin.x+titleLab.bounds.size.width+5, 5+i*30, self.view.bounds.size.width-(titleLab.frame.origin.x+titleLab.bounds.size.width+5)-5, 25)]; 
    [infoLab setText:strInfo]; 
    [infoLab setTextColor:[WASharedFontStyle mGetSharedFontColor]]; 
    [infoLab setFont:[UIFont systemFontOfSize:16]]; 
    [self.wInfoSV addSubview:infoLab]; 
     
    if(i == [tempArr count]-1){ 
      [infoLab setFrame:CGRectMake(titleLab.frame.origin.x+titleLab.bounds.size.width+5, 5+i*30, self.view.bounds.size.width-(titleLab.frame.origin.x+titleLab.bounds.size.width+5)-5, 30*4)]; 
      [infoLab setLineBreakMode:NSLineBreakByWordWrapping]; 
      [infoLab setFont:[UIFont systemFontOfSize:12]]; 
      [infoLab setNumberOfLines:0]; 
    } 
     
    [self.wInfoSV setContentSize:CGSizeMake(self.view.bounds.size.width, i*45)]; 
     
  } 

   
} 

附图:

iOS获取本地音频文件(属性/信息)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

返回顶部
顶部