本文实例为大家分享了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