您的位置:首页 > 移动开发 > IOS开发

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

2015-12-25 17:14 591 查看
获取本地音频文件地址:

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)];

}

}

附图:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: