获取MP3的信息

方法1:

 1 //读取mp3里的信息
 2     AudioFileID fileID;
 3
 4     AudioFileTypeID typeIdMP3 = kAudioFileMP3Type;
 5
 6     OSStatus status = noErr;
 7     //读取mp3文件
 8     status = AudioFileOpenURL((__bridge CFURLRef)fileURL, kAudioFileReadPermission, typeIdMP3, &fileID);
 9     if (status != noErr) {
10         NSLog(@"AudioFileOpenURL Failure");
11     }
12
13 //    ID3,一般是位于一个mp3文件的开头或末尾的若干字节内,附加了关于该mp3的歌手,标题,专辑名称,年代,风格等信息,该信息就被称为ID3信息,ID3信息分为两个版本,v1和v2版。 其中:v1版的ID3在mp3文件的末尾128字节,以TAG三个字符开头,后面跟上歌曲信息。 v2版一般位于mp3的开头,可以存储歌词,该专辑的图片等大容量的信息。
14     UInt32 id3DataSize = 0;
15     status = AudioFileGetPropertyInfo(fileID, kAudioFilePropertyID3Tag, &id3DataSize, NULL);
16     if (status != noErr) {
17         NSLog(@"读id3DataSize失败,没有附加信息");
18     }
19     NSLog(@"id3DataSize: %ld",id3DataSize);
20
21     //唱片信息
22     NSDictionary *propertyInfo = nil;
23     UInt32 piDataSize = sizeof(propertyInfo);
24     status = AudioFileGetProperty(fileID, kAudioFilePropertyInfoDictionary, &piDataSize, &propertyInfo);
25     if (status != noErr) {
26         NSLog(@"读取唱片信息失败");
27     }
28     NSLog(@"propertyInfo: %@",propertyInfo);
29
30
31
32     //唱片封面 这里获取到的图片数据是空的,暂时不知道为什么,建议使用方法2,简单
33     CFDataRef albumPic = nil;
34     UInt32 albumPicDataSize = sizeof(albumPic);
35     status = AudioFileGetProperty(fileID, kAudioFilePropertyAlbumArtwork, &albumPicDataSize, &albumPic);
36
37     if (status != noErr) {
38         NSLog(@"读取唱片封面失败");
39     }
40     //获取专辑名称
41     NSString *album = propertyInfo[@"album"];
42     NSString *artist = propertyInfo[@"artist"];
43     NSString *title = propertyInfo[@"title"];
44     NSString *year = propertyInfo[@"year"];
45     CZMP3Info *mp3Info = [[CZMP3Info alloc] init];
46
47     mp3Info.album = album;
48     mp3Info.artist = artist;
49     mp3Info.title = title;
50     mp3Info.year = year;
51     mp3Info.albumArtwork = (__bridge NSData *)albumPic;

方法2:

 1 AVURLAsset *assest = [AVURLAsset URLAssetWithURL:fileURL options:nil];
 2
 3     CZMP3Info *mp3Info = [[CZMP3Info alloc] init];
 4     NSLog(@"%@",assest.lyrics);
 5     for (NSString *key in [assest availableMetadataFormats]) {
 6         for (AVMetadataItem *item in [assest metadataForFormat:key]) {
 7             NSString *commonKey = item.commonKey;
 8
 9             if ([commonKey isEqualToString:@"artist"]) {//歌手
10                 mp3Info.artist = (NSString *)item.value;
11             }else if([commonKey isEqualToString:@"albumName"]){//专辑名称
12                 mp3Info.album = (NSString *)item.value;
13             }else if([commonKey isEqualToString:@"title"]){//歌曲名
14                 mp3Info.title = (NSString *)item.value;
15             }else if ([commonKey isEqualToString:@"artwork"]){
16                 NSDictionary *artworkDict = (NSDictionary *)item.value;
17                 NSData *image = [artworkDict objectForKey:@"data"];
18                 mp3Info.albumArtwork = image;
19             }
20         }
21     }
22
23     CMTime durationTime = assest.duration;
24     CGFloat duration = CMTimeGetSeconds(durationTime);

获取MP3的信息

时间: 2024-08-29 21:27:11

获取MP3的信息的相关文章

C#获取MP3,WMA信息

用于获取MP3内部信息,包括歌曲名,歌手名等…… namespace FileBatchRemaer.domain { /// <summary> /// Mp3信息结构 /// </summary> public struct Mp3Info { public string identify; //TAG,三个字节 public string Title; //歌曲名,30个字节 public string Artist; //歌手名,30个字节 public string Al

linux(ubuntu)下为python安装使用mutagen模块获取mp3文件信息包括封面图片的获取

首先是安装 下载地址:    https://pypi.python.org/pypi/mutagen 安装: tar -zxvf mutagen-1.29.tar.gz cd mutagen-1.29 ./setup.py build ./setup.py install 使用: from mutagen.mp3 import MP3, EasyMP3 from mutagen.id3 import EasyID3 from mutagen.id3 import COMM #EasyMP3继承

Atitit.获取主板与bios序列号获取硬件设备信息&#160;&#160;Wmi&#160;wmic&#160;的作用

Atitit.获取主板与bios序列号获取硬件设备信息  Wmi wmic 的作用 1 获取硬件核心基础核心基础Wmi1 2 其他资料2 3 Wmic WMI 命令行接口2 4 Atitit.获取主板与bios序列号2 5 参考3 1 获取硬件核心基础核心基础Wmi WMI,是Windows 2K/XP管理系统的核心:对于其他的Win32操作系统,WMI是一个有用的插件.WMI以CIMOM为基础,CIMOM即公共信息模型对象管理器(Common Information Model Object 

Android如何获取SIM卡信息

android 获取sim卡运营商信息 TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TELEPHONY_SERVICE); TelephonyManager 的使用 TelephonyManager 提供设备上获取通讯服务信息的入口,应用程序使用这个类的方法来获取电话的服务商或者状态.程序也可以注册一个监听器来监听电话状态的改变. 不需要直接实例化这个类,使用Context.getSystemS

Linux命令(34):ss命令-获取socket统计信息

ss 可以用来获取socket统计信息,它可以显示和netstat类似的内容. 例如: (1)显示TCP连接 #ss -t -a (2)列出所有打开的网络连接端口 #ss -l (3)查看进程使用的socket #ss -pl

Magicodes.WeiChat——使用OAuth 2.0获取微信用户信息

使用Magicodes.WeiChat,可以很方便的获取到微信用户的信息.在使用OAuth 2.0之前,你先需要做以下操作: 1)在开发者中心修改[网页授权获取用户基本信息],在弹出的界面输入自己的根域名.比如:weichat.chinacloudsites.cn 如下图所示: 2)配置菜单或者链接(如果使用特性“WeChatOAuth”,本步骤可以略过,这里只是介绍下原理,具体请参考步骤3的说明).Magicodes.WeiChat在控制器WeiChatController中进行处理,配置路径

Python网络编程小例子:使用python获取网站域名信息

Whois简介 whois(读作"Who is",非缩写)是用来查询域名的IP以及所有者等信息的传输协议.简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人.域名注册商).通过whois来实现对域名信息的查询.早期的whois查询多以命令列接口存在,但是现在出现了一些网页接口简化的线上查询工具,可以一次向不同的数据库查询.网页接口的查询工具仍然依赖whois协议向服务器发送查询请求,命令列接口的工具仍然被系统管理员广泛使用.whois通常

高德amap 根据坐标获取的地址信息

高德地理逆地理编码接口List<List<Address>> lists = coder.getFromLocation(33.00, 116.500, 3, 3, 3, 500); Address addres = address.get(0); addres.getCountryCode=CN; addres.getCountryCode=CN; addres.getCountryName=中国; addres.getFeatureName=131乡道; addres.getL

微信服务号开发-获取用户位置信息

微信服务号开发-获取用户位置信息 在微信公众号开发的中,获取用户位置信息是非常常见的功能需求,通过用户的位置信息,可以做一些地图导航,以及基于LBS的营销活动.下面将介绍微信服务号获取用户位置信息的原理与步骤. 原理 1. 位置信息获取流程 2. 位置信息报文 <xml><ToUserName><![CDATA[gh_public_member_account]]></ToUserName> <FromUserName><![CDATA[o