iOS - 音乐播放器需要获取音乐文件的一些数据信息(封装获取封面图片的类)
//
// AVMetadataInfo.h
// AVMetadata
//
// Created by Wengrp on 15/10/27.
// Copyright © 2015年 Wengrp. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
@interface AVMetadataInfo : NSObject
/**
获取音视频文件的Metadata信息(可以获取到mp3以及m4a的相关信息)
*AVMetadataCommonKeyArtwork这个参数是可以换的,换不同的参数可以取得不同的值
*[注意]此方法中用到了信号量将异步操作转换成了同步操作,尽量在主线程中使用
@param fileURL 文件的URL地址
@return 一个包含了相关内容的字典
*/
+ (NSDictionary *)dataInfoFromFileURL:(NSURL *)fileURL;
@end
//
// AVMetadataInfo.m
// AVMetadata
//
// Created by Wengrp on 15/10/27.
// Copyright © 2015年 Wengrp. All rights reserved.
//
#import "AVMetadataInfo.h"
@implementation AVMetadataInfo
+ (NSDictionary *)dataInfoFromFileURL:(NSURL *)fileURL
{
// 创建字典
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
// 创建信号量(将异步变成同步)
dispatch_semaphore_t semaphore = dispatch_semaphore_create();
AVAsset *asset = [AVURLAsset URLAssetWithURL:fileURL options:nil];
[asset loadValuesAsynchronouslyForKeys:@[@"commonMetadata"]
completionHandler:^{
// 发送信号量
dispatch_semaphore_signal(semaphore);
}];
// 无限等待
dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
// 获取数据
NSArray *artworks = [AVMetadataItem metadataItemsFromArray:asset.commonMetadata
withKey:AVMetadataCommonKeyArtwork
keySpace:AVMetadataKeySpaceCommon];
for (AVMetadataItem *item in artworks)
{
if ([item.keySpace isEqualToString:AVMetadataKeySpaceID3])
{
NSDictionary *dict = [item.value copyWithZone:nil];
// 获取图片
UIImage *image = [UIImage imageWithData:[dict objectForKey:@"data"]];
[dic setObject:image forKey:@"Artwork"];
}
if ([item.keySpace isEqualToString:AVMetadataKeySpaceiTunes])
{
// 获取图片
UIImage *image = [UIImage imageWithData:[item.value copyWithZone:nil]];
[dic setObject:image forKey:@"Artwork"];
}
}
return [NSDictionary dictionaryWithDictionary:dic];
}
@end
iOS - 音乐播放器需要获取音乐文件的一些数据信息(封装获取封面图片的类)的更多相关文章
- iOS之基于FreeStreamer的简单音乐播放器(模仿QQ音乐)
代码地址如下:http://www.demodashi.com/demo/11944.html 天道酬勤 前言 作为一名iOS开发者,每当使用APP的时候,总难免会情不自禁的去想想,这个怎么做的?该怎 ...
- Ubuntu 14.04 用户如何安装深度音乐播放器和百度音乐插件
播放本地音乐或者收听国外的音乐电台,Ubuntu 14.04 自带的音乐播放器 Rhythmbox 完全能够满足,但是如果你想有像酷狗那样的国内播放器就需要折腾一下,还好有深度音乐播放器,这是一款完全 ...
- 在线音乐播放器-----酷狗音乐api接口抓取
首先身为一个在线音乐播放器,需要前端和数据库的搭配使用. 在数据库方面,我们没有办法制作,首先是版权问题,再加上数据量.所以我们需要借用其他网络播放器的数据库. 但是这些在线播放器,如百度,酷狗,酷我 ...
- 22_Android中的本地音乐播放器和网络音乐播放器的编写,本地视频播放器和网络视频播放器,照相机案例,偷拍案例实现
1 编写以下案例: 当点击了"播放"之后,在手机上的/mnt/sdcard2/natural.mp3就会播放. 2 编写布局文件activity_main.xml <Line ...
- 用Vue来实现音乐播放器(十四):歌手数据接口抓取
第一步:在api文件夹下创建一个singer.js文件 返回一个getSingerList()方法 使他能够在singer.vue中调用 import jsonp from '../common/j ...
- 记一次酷狗音乐API的获取,感兴趣的可以自己封装开发自己的音乐播放器
1.本教程仅供个人学习用,禁止用于任何的商业和非法用途,如涉及版权问题请联系笔者删除. 2.随笔系作者原创文档,转载请注明文档来源:http://www.cnblogs.com/apresunday/ ...
- Andriod小项目——在线音乐播放器
转载自: http://blog.csdn.net/sunkes/article/details/51189189 Andriod小项目——在线音乐播放器 Android在线音乐播放器 从大一开始就已 ...
- Android大作业 --音乐播放器
1.项目成员(本次作业主要对上一次的音乐播放器进行完善) 韦家城 学号:1600802026 班级:161 博客:https://www.cnblogs.com/ln9969cc/ 邓乾尧 学号:1 ...
- 10个免费开源的JS音乐播放器插件
点这里 音乐播放器在网页设计中有时候会用到,比如一些时尚类.音乐或影视类等项目,但这些 网页播放器 插件比较少见,所以这里为大家整理一个集合,也许会有用到的时候. 下面整理的播放器有些是支持自适应的, ...
随机推荐
- Postman测试api@RequestBody接收参数
api postman 结果 { , "message": "Content type 'multipart/form-data;boundary=----------- ...
- php解析mpp文件中的多级任务
获取层级的project任务 参考 启动javabridge java -jar JavaBridge.jar SERVLET_LOCAL:8089 1.读取mpp文件 $file_path = & ...
- Bootstrap——导航居中
这是采用了栅格,设置缩进,使看起来居中,但是手机浏览会靠到最左边.另外center-block类好像也不管用. <div class="row"> <ul cla ...
- 使用srvany.exe把程序安装成windows服务的方法
http://mazhihui.iteye.com/blog/1294431 srvany.exe是什么? srvany.exe是Microsoft Windows Resource Kits工具集的 ...
- 如何使用Maven scope
maven 有6个scope类型,下面简单总结备忘下 <dependency> <groupId>javax.servlet</groupId> <artif ...
- iOS 添加Resource bundle target(静态库中使用图片等资源)
一.首先将资源文件打包成bundle 新建工程:File -> New -> Project... -> OS X -> Framework & Library -&g ...
- ASPX代码加固小结
1.replace替换 <%@Page Language="C#"%> <% string strID=Request["id"]; strI ...
- CentOS7--Firewalld防火墙
Firewalld服务是红帽RHEL7系统中默认的防火墙管理工具,特点是拥有运行时配置与永久配置选项且能够支持动态更新以及"zone"的区域功能概念,使用图形化工具firewall ...
- [Ubuntu] 如何在 Lubuntu 安装 python-spidermonkey
SpiderMonkey 是由 Mozilla 开发的 Javascript 引擎,它由 C/C++ 编写而成.Mozilla 在其多个产品中使用了该引擎,包括 Firefox 浏览器. python ...
- Hadoop集群三种作业调度算法介绍
Hadoop集群中有三种作业调度算法,分别为FIFO,公平调度算法和计算能力调度算法 先来先服务(FIFO) Hadoop中默认的调度器FIFO,它先按照作业的优先级高低,再按照到达时间的先后选择被执 ...