本文实例为大家分享了ios获取本地音频文件的具体代码,供大家参考,具体内容如下
获取本地音频文件地址:
1
2
3
4
5
6
7
8
|
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]; } |
解析音频文件属性:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
-( 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)]; } } |
附图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/leemin_ios/article/details/80432519