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

 更新时间:2018年07月22日 09:27:31   作者:Leemin_ios  
这篇文章主要为大家详细介绍了iOS获取本地音频文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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开发之@property的详细介绍

    IOS开发之@property的详细介绍

    这篇文章主要介绍了IOS开发之@property的详细介绍的相关资料,希望通过本文能帮助到大家,大家理解并会使用,需要的朋友可以参考下
    2017-09-09
  • 详解iOS中集成ijkplayer视频直播框架

    详解iOS中集成ijkplayer视频直播框架

    ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持Android和iOS,本文将详细的讲一下在iOS中如何集成ijkplayer, 即便以前从没有接触过,按着下面做也可以集成成功!下面跟着小编一起来看下吧
    2016-12-12
  • iOS移动端软键盘弹起空白和滚动穿透问题解决方案

    iOS移动端软键盘弹起空白和滚动穿透问题解决方案

    这篇文章主要为大家介绍了iOS移动端软键盘弹起空白和滚动穿透问题解决方案,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • IOS 开发之PickerView自定义视图的实例详解

    IOS 开发之PickerView自定义视图的实例详解

    这篇文章主要介绍了IOS 开发之PickerView自定义视图的实例详解的相关资料,这里提供实例帮助大家学习理解这部分知识,需要的朋友可以参考下
    2017-08-08
  • IOS 开发之swift中手势的实例详解

    IOS 开发之swift中手势的实例详解

    这篇文章主要介绍了IOS 开发之swift中手势的实例详解的相关资料,希望通过本文大家能掌握IOS手势的使用方法,需要的朋友可以参考下
    2017-09-09
  • iOS实现自动循环播放的banner实例详解

    iOS实现自动循环播放的banner实例详解

    轮播视图通常也叫Banner,90%以上App都会用到的一个控件,网上有很多开源代码,下面这篇文章主要给大家介绍了关于利用iOS如何实现自动循环播放的banner的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。
    2017-12-12
  • swift3.0网络图片缓存原理简析

    swift3.0网络图片缓存原理简析

    这篇文章主要为大家简析了swift3.0网络图片缓存原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • iOS使用UIBezierPath实现ProgressView

    iOS使用UIBezierPath实现ProgressView

    这篇文章主要为大家详细介绍了iOS使用UIBezierPath实现ProgressView,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Flutter之PageView页面缓存与KeepAlive

    Flutter之PageView页面缓存与KeepAlive

    这篇文章主要为大家介绍了Flutter之PageView页面缓存与KeepAlive示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • iOS中valueForKeyPath的常用方法法示例

    iOS中valueForKeyPath的常用方法法示例

    这篇文章主要给大家介绍了关于iOS中valueForKeyPath的常用方法法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07

最新评论