iOS獲取本地音頻文件(屬性/信息)
本文實(shí)例為大家分享了iOS獲取本地音頻文件的具體代碼,供大家參考,具體內(nèi)容如下
獲取本地音頻文件地址:
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 ];//隨便取一個(gè),說(shuō)明
//文件管理,取得文件屬性
NSFileManager *fm = [NSFileManager defaultManager];
NSDictionary *dictAtt = [fm attributesOfItemAtPath:filePath error:nil];
//取得音頻數(shù)據(jù)
NSURL *fileURL=[NSURL fileURLWithPath:filePath];
AVURLAsset *mp3Asset=[AVURLAsset URLAssetWithURL:fileURL options:nil];
NSString *singer;//歌手
NSString *song;//歌曲名
UIImage *image;//圖片
NSString *albumName;//專(zhuān)輯名
NSString *fileSize;//文件大小
NSString *voiceStyle;//音質(zhì)類(lèi)型
NSString *fileStyle;//文件類(lèi)型
NSString *creatDate;//創(chuàng)建日期
NSString *savePath; //存儲(chǔ)路徑
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;//歌手
}
// 專(zhuān)輯名稱(chēng)
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 = @"標(biāo)準(zhǔn)";
}else if(tempFlo > 10){
voiceStyle = @"高清";
}
NSArray *tempArr = [[NSArray alloc] initWithObjects:@"歌手:",@"歌曲名稱(chēng):",@"專(zhuān)輯名稱(chēng):",@"文件大小:",@"音質(zhì)類(lèi)型:",@"文件格式:",@"創(chuàng)建日期:",@"保存路徑:", 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)];
}
}
附圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 詳解iOS App中調(diào)用AVAudioPlayer播放音頻文件的用法
- 小程序ios音頻播放沒(méi)聲音問(wèn)題的解決
- 詳解iOS應(yīng)用中播放本地視頻以及選取本地音頻的組件用法
- IOS中微信小程序播放緩存的音頻文件的方法
- iOS開(kāi)發(fā)中音頻工具類(lèi)的封裝以及音樂(lè)播放器的細(xì)節(jié)控制
- iOS開(kāi)發(fā)實(shí)現(xiàn)音頻播放功能
- iOS中的音頻服務(wù)和音頻AVAudioPlayer音頻播放器使用指南
- 解決ios微信下vue項(xiàng)目組件切換并自動(dòng)播放音頻問(wèn)題
- iOS開(kāi)發(fā)中音頻視頻播放的簡(jiǎn)單實(shí)現(xiàn)方法
- iOS使用音頻處理框架The Amazing Audio Engine實(shí)現(xiàn)音頻錄制播放
相關(guān)文章
IOS開(kāi)發(fā)之@property的詳細(xì)介紹
這篇文章主要介紹了IOS開(kāi)發(fā)之@property的詳細(xì)介紹的相關(guān)資料,希望通過(guò)本文能幫助到大家,大家理解并會(huì)使用,需要的朋友可以參考下2017-09-09
iOS移動(dòng)端軟鍵盤(pán)彈起空白和滾動(dòng)穿透問(wèn)題解決方案
這篇文章主要為大家介紹了iOS移動(dòng)端軟鍵盤(pán)彈起空白和滾動(dòng)穿透問(wèn)題解決方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
IOS 開(kāi)發(fā)之PickerView自定義視圖的實(shí)例詳解
這篇文章主要介紹了IOS 開(kāi)發(fā)之PickerView自定義視圖的實(shí)例詳解的相關(guān)資料,這里提供實(shí)例幫助大家學(xué)習(xí)理解這部分知識(shí),需要的朋友可以參考下2017-08-08
IOS 開(kāi)發(fā)之swift中手勢(shì)的實(shí)例詳解
這篇文章主要介紹了IOS 開(kāi)發(fā)之swift中手勢(shì)的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文大家能掌握IOS手勢(shì)的使用方法,需要的朋友可以參考下2017-09-09
iOS實(shí)現(xiàn)自動(dòng)循環(huán)播放的banner實(shí)例詳解
輪播視圖通常也叫Banner,90%以上App都會(huì)用到的一個(gè)控件,網(wǎng)上有很多開(kāi)源代碼,下面這篇文章主要給大家介紹了關(guān)于利用iOS如何實(shí)現(xiàn)自動(dòng)循環(huán)播放的banner的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2017-12-12
swift3.0網(wǎng)絡(luò)圖片緩存原理簡(jiǎn)析
這篇文章主要為大家簡(jiǎn)析了swift3.0網(wǎng)絡(luò)圖片緩存原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
iOS使用UIBezierPath實(shí)現(xiàn)ProgressView
這篇文章主要為大家詳細(xì)介紹了iOS使用UIBezierPath實(shí)現(xiàn)ProgressView,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
Flutter之PageView頁(yè)面緩存與KeepAlive
這篇文章主要為大家介紹了Flutter之PageView頁(yè)面緩存與KeepAlive示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10

