今天在做一款音乐播放器的时候需要支持文件共享本地导入音乐,但是导入进去的mp3是只有歌曲名字加格式的,有些甚至歌曲名字都不对只是一个.mp3文件,例如:

本地mp3文件.png

但是这时候我们的界面上是需要显示歌曲的信息的,歌手,歌曲名字,专辑,缩略图等等信息,其实这些信息在.mp3里面是可以找到的,但是也不能全找到。估计是这些生成的时候没有加到里面,话不多说直接进入正题。这里以我的用法为例,可根据自己情况灵活变动。

获取到mp3文件(我这里是获取的所有文件放到数组。如不需要可以单个获取)

NSArray *mp3Array = [NSBundle pathsForResourcesOfType:@"mp3" inDirectory:[[NSBundle mainBundle] resourcePath]];

遍历数组得到每个文件的路径并得到AVURLAsset的对象

for (NSString *filePath in mp3Array) {

NSURL *url = [NSURL fileURLWithPath:filePath];

NSString *MusicName = [filePath lastPathComponent];

AVURLAsset *mp3Asset = [AVURLAsset URLAssetWithURL:url options:nil];

NSLog(@"%@",mp3Asset);

获取文件中数据格式类型

for (NSString *format in [mp3Asset availableMetadataFormats]) {

获取特定格式类型

for (AVMetadataItem *metadataItem in [mp3Asset metadataForFormat:format]) {

NSLog(@"commonKey = %@",metadataItem.commonKey);

if ([metadataItem.commonKey isEqualToString:@"artwork"]) {

NSString *mime = [(NSDictionary *)metadataItem.value objectForKey:@"MIME"];

NSData *data = [(NSDictionary *)metadataItem.value objectForKey:@"data"];

UIImageView.image = [UIImage imageWithData:data];

NSLog(@"mime: %@",mime);

}

else if([metadataItem.commonKey isEqualToString:@"title"])

{

NSString *title = (NSString *)metadataItem.value;

NSLog(@"title: %@",title);

}

else if([metadataItem.commonKey isEqualToString:@"artist"])

{

NSString *artist = (NSString *)metadataItem.value;

NSLog(@"artist: %@",artist);

}

else if([metadataItem.commonKey isEqualToString:@"albumName"])

{

NSString *albumName = (NSString *)metadataItem.value;

NSLog(@"albumName: %@",albumName);

}

以上就是具体如何获取本地的歌曲信息了。如有不明白可参考这篇内容:

下面为大家贴上本人在项目中的实例应用代码:

+ (NSMutableArray *)MusicInfoArray

{

NSMutableArray *resultArray = [[NSMutableArray alloc] init];

NSArray *mp3Array = [NSBundle pathsForResourcesOfType:@"mp3" inDirectory:[[NSBundle mainBundle] resourcePath]];

for (NSString *filePath in mp3Array) {

NSURL *url = [NSURL fileURLWithPath:filePath];

NSString *MusicName = [filePath lastPathComponent];

AVURLAsset *mp3Asset = [AVURLAsset URLAssetWithURL:url options:nil];

NSLog(@"%@",mp3Asset);

for (NSString *format in [mp3Asset availableMetadataFormats]) {

NSMutableDictionary *infoDict = [[NSMutableDictionary alloc] init];

[infoDict setObject:MusicName forKey:@"MusicName"];

NSLog(@"format type = %@",format);

for (AVMetadataItem *metadataItem in [mp3Asset metadataForFormat:format]) {

NSLog(@"commonKey = %@",metadataItem.commonKey);

if ([metadataItem.commonKey isEqualToString:@"artwork"]) {

NSString *mime = [(NSDictionary *)metadataItem.value objectForKey:@"MIME"];

NSLog(@"mime: %@",mime);

[infoDict setObject:mime forKey:@"artwork"];

}

else if([metadataItem.commonKey isEqualToString:@"title"])

{

NSString *title = (NSString *)metadataItem.value;

NSLog(@"title: %@",title);

[infoDict setObject:title forKey:@"title"];

}

else if([metadataItem.commonKey isEqualToString:@"artist"])

{

NSString *artist = (NSString *)metadataItem.value;

NSLog(@"artist: %@",artist);

[infoDict setObject:artist forKey:@"artist"];

}

else if([metadataItem.commonKey isEqualToString:@"albumName"])

{

NSString *albumName = (NSString *)metadataItem.value;

NSLog(@"albumName: %@",albumName);

[infoDict setObject:albumName forKey:@"albumName"];

}

}

[resultArray addObject:infoDict];

}

}

return resultArray;

}

每一次的学习和记录都是成长道路上的一小步。

ios 扫描本地音乐_iOS如何获取本地的音乐歌曲mp3的信息数据相关推荐

  1. Java获取本地ip方法_Java获取本地IP方法详解

    获取本地服务器IP经常会出现127.0.0.1,0:0:0:0:0:0:0:1,fe80:0:0:0:960:74bd:e1a0:e5b9%11 这些情况,以下代码可解决此问题 public stat ...

  2. ios 判断手机角度_iOS 角度获取及旋转

    获取当前角度 CGFloat radius = atan2f(view.transform.b, view.transform.a); CGFloat degree = radius * (360/ ...

  3. Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据

    概述 如何获取本地数据连接 示例从DBCP数据源中获取Oracle的本地连接对象 相关接口操作 LobCreator LobHandler 插入LOB类型的数据 以块数据的方式读取LOB数据 以流数据 ...

  4. Android 获取本地外网IP、内网IP、计算机名等信息

    一.获取本地外网IP public static String GetNetIp() { URL infoUrl = null; InputStream inStream = null; try { ...

  5. Java网络编程 获取本地主机名称和地址

    import java.net.*;class IPDemo {public static void main(String[] args) throws Exception{InetAddress ...

  6. java mp3 信息_android,java获取MP3文件信息(作者,专辑等)

    接着上一篇文章, 上一篇把ndk开发遍历手机文件分享了一下.遍历出来的MP3文件,我需要展示在android的listview里面,想展示的好看一点,结果发现又是一个坑. 根据mp3文件,获取作者啊专 ...

  7. ios 获取本地音乐

    给大家分享一个获取ios本地音乐的办法. 首先要引入这两个类库 然后这就是获取本地音乐的代码 可以看到下面的这个属性MPMediaItemPropertyAssetURL 是获取本地音乐的url 的 ...

  8. 关于IOS获取本地通讯录信息(包含iOS9.0前后)

    在ios开发当中,获取用户本地的通讯录功能愈加频繁的出现,七两自己也在自己公司的项目当中遇到的获取本地的通讯录信息的功能(俗称"种子用户功能",太可怕了).对此七两总结了自己使用本 ...

  9. 获取本地音乐文件的专辑,图片,音乐信息

    今天跟大家分享一下如何获取本地音乐文件中的各种音乐信息,包括音乐的歌名,歌手,曲长,专辑,专辑图片 private String tilte;//歌名 private String artist;// ...

  10. iOS 获取本地相册图片或视频

    1.先判断iOS 相机相册的权限检测 相关链接 https://www.jianshu.com/p/8a944534e0ee 2.iOS 获取本地相册图片 iOS 获取本地相册图片一 iOS 获取本地 ...

最新文章

  1. ExtJs学习笔记(5)_Ajax示例
  2. JS window事件全集解析
  3. 第一个小项目 - 去掉指定文件中的注释
  4. 设计模式——10.单例模式
  5. ERROR: Could not read unit serial number!
  6. Java8新特性之Lambda
  7. loadrunner 脚本优化-事务时间简介
  8. 【训练题55:尺取 + 高阶等差】Another String | HDU7015 | 杭电多校五 04题
  9. windows 下安装 sns 学习研究
  10. Window XP驱动开发(十一) USB2.0 芯片CY7C68013A+FPGA实现的高速传输系统设计(软件及硬件)
  11. bzoj4199luogu2178 noi2015品酒大会 后缀数组
  12. TSL1.0升级到TSL1.2遇到的问题
  13. ietester,各种版本的IE都有
  14. 2019下半年的教师资格考试~学霸大佬们总结的记忆口诀涨分必备
  15. 16 tia 内容说明 安装包_TIA Portal V16 软件安装包 安装教程 授权
  16. 非贪婪匹配:如何使用正则表达式碰到到第一个匹配到的字符串就停止
  17. python 发送get 请求
  18. Python123:测验1: Python基本语法元素 (第1周)
  19. 《数学之美(第一版)》笔记整理 —— 目录
  20. U盘病毒病状及解决方法

热门文章

  1. 复合型网络拓扑结构图_网络拓扑结构大全和图片(星型、总线型、环型、树型、分布式、网状拓扑结构)...
  2. APT(Android Performance Testing Tools)安卓平台高效性能测试工具
  3. 获取当前经纬度 和 通过经纬度 得到大致位置的接口
  4. mysql非常规的中文乱码问题
  5. 基于STC12C5A60S2的SDHC卡的初始化和读写过程
  6. 【CSS】1095- CSS filter 有哪些神奇用途
  7. 这家饱受诟病的三线大厂,福利居然秒杀BATJ!
  8. 程序员有哪些职业发展方向呢?Linux运维
  9. flash player 11.2 64位 linux,Adobe Flash Player 11.2.202 Beta 1支持 64位操作系统
  10. 手机拍的照片计算机内存不足怎么办,电脑内存不足怎么办