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

所属分类: 软件编程 / IOS 阅读数: 521
收藏 0 赞 0 分享

本文实例为大家分享了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画出精美的图表方法示例

这篇文章主要给大家介绍了关于iOS如何画出精美的图表的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

ios 服务器端推送证书生成的方法

这篇文章主要介绍了ios 服务器端推送证书生成的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

浅谈iOS推送证书生成pem文件(详细生成过程)

这篇文章主要介绍了浅谈iOS推送证书生成pem文件(详细生成过程),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

iOS高仿微信文章悬浮球功能

这篇文章主要介绍了iOS高仿微信文章悬浮球功能,本文给大家介绍的非常详细,具有一定的参考解决价值,需要的朋友可以参考下
收藏 0 赞 0 分享

通过一行代码搞定UITextField的输入格式限制

这篇文章主要给大家介绍了如何通过一行代码搞定UITextField的输入格式限制的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

iOS判断是否越狱设备方法示例

这篇文章主要给大家介绍了关于iOS判断是否越狱设备的相关资料,文中通过示例代码介绍的非常详细,对各位iOS开发者们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

iOS开发教程之Status Bar状态栏设置的方法汇总

iOS 的 Status Bar 状态栏是一个比较坑的地方,所以下面这篇文章主要给大家介绍了关于iOS开发教程之Status Bar状态栏设置的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS开发之导航栏各种右滑返回失效的解决方法汇总

这篇文章主要给大家总结介绍了关于iOS开发教程之导航栏各种右滑返回失效的解决方法,文中通过示例代码介绍的非常详细,对各位iOS具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

iOS实现简单的头部缩放功能

这篇文章主要介绍了iOS 简单的头部缩放效果,头部伴随模糊效果放大缩小,并在一定位置时悬停充当导航栏,本文给大家提供实现思路,需要的朋友可以参考下
收藏 0 赞 0 分享

iOS中震动反馈(UIFeedbackGenerator)与系统震动详解

最近要做一个项目,需要持续响铃并振动,所以就有了这篇文章,下面这篇文章主要给大家介绍了关于iOS中震动反馈(UIFeedbackGenerator)与系统震动的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多