IOS开发――获取本地音频文件(属性/信息)

匿名 (未验证) 提交于 2019-12-03 00:19:01

获取本地音频文件地址:

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];     NSArray *tempArrInfo = [[NSArray alloc] initWithObjects:singer,song,albumName,fileSize,voiceStyle,fileStyle,creatDate,savePath, 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)];              }                } 

附图:


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!