今天在做一款音乐播放器的时候需要支持文件共享本地导入音乐,但是导入进去的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. 两个文件比对_Edlib:方便快速的长序列比对软件包
  2. mSystems:华中农大郝秀丽组发现稀有/丰富微生物类群对镉污染土壤改良剂的不同反应!...
  3. ivona tts语音合成引擎_耳听也不一定为实,AI语音已能骗得百万巨款
  4. 轻知 | 为什么全球只有13组根域名服务器?
  5. 用于 Keras 用户使用的 TensorFlow.js layers API
  6. 园龄一年了,可还未动笔.
  7. 如何实现自动化前端开发?
  8. tomcat常见配置及优化、升级
  9. 复习webpack4之PWA打包配置
  10. 如何快速学python
  11. IntelliJ IDEA 记学习笔《Patch 创建补丁》
  12. 流量监测NetLimiter v4.1.6.0
  13. 亚马逊aws服务取消_Amazon S3 – AWS简单存储服务
  14. 中科院半导体所裴为华研究团队及其合作者在脑电电极领域取得重要研究进展...
  15. CISCO思科考试考生注册指导手册
  16. k8s访问外部mysql_Kubernetes连接外部数据源
  17. 机器学习的思考–计算机的潜意识
  18. Python搭建代理IP池(一)- 获取 IP
  19. 人工智能时代创造少儿编程实用能力
  20. java判断图中两点是否连通_连通分量(求有几个连通分量+判断是否两点连通+是否为强联通图 相应例子)...

热门文章

  1. 办公一定要有哪些基础软件?
  2. 关于多元正态分布的条件概率密度
  3. 【随机过程】课后作业 1-条件概率期望密度
  4. Android简单的集成腾讯视频播放器
  5. QQ空间技术架构之深刻揭秘
  6. 交错、反交错与IVTC —— 从入门到放弃
  7. 《软件工程》思维导图
  8. Redis数据类型和应用场景
  9. oracle性能调优之--Oracle 10g AWR 配置
  10. 基于SSM+Mysql在线电影预定下单管理系统