用ALAssetsLibrary获取相册图片视频

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];

    [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
usingBlock:^(ALAssetsGroup *group, BOOL *stop) { // Filter down to only photos
[group setAssetsFilter:[ALAssetsFilter allPhotos]]; // Grab the first photo return
[group enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndex:]
options:
usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) { if (result) { id repressentation = [result defaultRepresentation]; // 可以生产一个AVAsset
NSURL *url = [repressentation url];
AVAsset *asset = [AVAsset assetWithURL:url]; // 也可以直接获取image
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageWithCGImage:[repressentation fullResolutionImage]]]; }
}];
} failureBlock:^(NSError *error) { NSLog(@"Error: %@", [error localizedDescription]);
}];

使用AVAsset加载资源:

    NSURL *assetURL = [[NSBundle mainBundle] URLForResource:@"guitar" withExtension:@"caf"];

    AVAsset *asset = [AVAsset assetWithURL:assetURL];

    NSArray *keys = @[@"tracks"];

    [asset loadValuesAsynchronouslyForKeys:keys completionHandler:^{

        NSError *error = nil;

        AVKeyValueStatus status = [asset statusOfValueForKey:@"tracks" error:&error];

        switch (status) {
case AVKeyValueStatusLoaded:
// 加载完资源 to do
NSLog(@"加载完");
break; case AVKeyValueStatusFailed:
// 加载失败 to do
NSLog(@"加载失败");
break; case AVKeyValueStatusCancelled:
// 加载取消 to do
NSLog(@"加载取消");
break; default:
break;
}
}];

获得元数据

    NSURL *assetURL = [[NSBundle mainBundle] URLForResource:@"" withExtension:@"m4a"];

    AVAsset *asset = [AVAsset assetWithURL:assetURL];

    NSArray *keys = @[@"availableMetadataFormats"];

    [asset loadValuesAsynchronouslyForKeys:keys completionHandler:^{

        NSMutableArray *metadata = [NSMutableArray array];
for (NSString *format in asset.availableMetadataFormats) { [metadata addObjectsFromArray:[asset metadataForFormat:format]];
} NSLog(@"meta format: %@", metadata); NSString *keySpace = AVMetadataKeySpaceiTunes;
NSString *artistKey = AVMetadataiTunesMetadataKeyArtist;
NSString *albumKey = AVMetadataiTunesMetadataKeyAlbum; NSArray *artistMetadata = [AVMetadataItem metadataItemsFromArray:metadata
withKey:artistKey
keySpace:keySpace]; NSArray *albumMetadata = [AVMetadataItem metadataItemsFromArray:metadata
withKey:albumKey
keySpace:keySpace]; AVMetadataItem *artistItem, *albumItem;
if (artistMetadata.count > ) {
artistItem = artistMetadata[];
} if (albumMetadata.count > ) {
albumItem = albumMetadata[];
}
}];

使用AVMetadataItem

NSURL *assetURL = [[NSBundle mainBundle] URLForResource:@"" withExtension:@"m4a"];

    AVAsset *asset = [AVAsset assetWithURL:assetURL];

    NSArray *metadata = [asset metadataForFormat:AVMetadataFormatiTunesMetadata];

    for (AVMetadataItem *item in metadata) {

        NSLog(@"%@: %@", item.key, item.value);
}

iOS-使用ALAssetsLibrary获取相册图片视频的更多相关文章

  1. IOS多选单选相册图片

    之前做项目让实现多选相册的图片,自己写了一个demo一直保存在电脑上,今天下午发现电脑128G的容量已经快没有了,准备清理电脑,所以把之前做的一些demo放在博客上,以后方便用. 1.首先准备3个图片 ...

  2. android开发之——获取相册图片和路径

    Android开发获取相册图片的方式网上有很多种,这里说一个Android4.4后的方法,因为版本越高,一些老的api就会被弃用,新的api和老的api不兼容,导致出现很多问题. 比如:managed ...

  3. Swift中获取相册图片与保存到相册

    关于这个网上目前位置记录的资料比较少,记录一下这个坑 获取相册图片 1: var iPC = UIImagePickerController() 2: iPC.sourceType = UIImage ...

  4. ios获取相册图片 压缩图片

    从摄像头/相册获取图片 刚刚在上面的知识中提到从摄像头/相册获取图片是面向终端用户的,由用户去浏览并选择图片为程序使用.在这里,我们需要过UIImagePickerController类来和用户交互. ...

  5. uniapp+nvue实现仿微信/得物相册插件:选择界面 +自定义相册+图片视频过滤

    本篇文章基于uniapp 框架+ nvue,实现了uniapp仿微信/得物相册选择功能实例项目,该插件实例实现了以下功能: 1: 相册过滤 2: 图视频过滤 3: 界面UI定制化 4: 栅格列数定制化 ...

  6. Android获取相册图片

    1. AlertDialog的使用 2. 显示和隐式意图的区别 3. 相册页面的跳转 4. 选择完成后返回图片的获取 ----------------------------------------- ...

  7. iOS开发—— UIImagePickerController获取相册和拍照

    一.简单的拍照显示,或是从相册中直接选取照片 #import "ViewController.h" @interface ViewController ()<UIImageP ...

  8. Android 打开照相机、获取相册图片、获取图片并裁减

    一.调用照相机 注:surfaceView在当Activity不在前台的时候,会被销毁(onPause方法之后,执行销毁方法)当Activity回到前台时,在Activity执行onResume方法之 ...

  9. 照片大管家iOS-实现本地相册、视频、安全保护、社交分享一站式功能,源码开放

    <照片大管家> APP功能: 1.本地照片批量导入与编辑 2.本地视频存储与播放 3.手势密码.数字密码.TouchID安全保护 4.QQ.微信.微博.空间社交分享 5.其他细节功能. 运 ...

随机推荐

  1. 数据库之MySQL(二)

    数据表基本 1.创建表 create table 表名(   列名  类型  是否可以为空,   列名  类型  是否可以为空)ENGINE=InnoDB DEFAULT CHARSET=utf8 是 ...

  2. Python排列组合

    product 笛卡尔积 (有放回抽样排列) permutations 排列 (不放回抽样排列) combinations 组合,没有重复 (不放回抽样组合) combinations_with_re ...

  3. 001-centos7安装 笔记本 联想G510

    一.准备前提 1.联想G510AT 用winpe进入笔记本电脑,找到一个分区,删除即可 2.使用U盘安装 2.1.准备一个8G 的U盘,格式化ntfs. 2.2.在window下,下载UltraISO ...

  4. HackerRank - maximum-perimeter-triangle 【水】

    题意 给出一系列数字,判断其中哪三个数字可以构成一个三角形,如果有多个,输出周长最大的那个,如果没有输出 - 1 思路 数据较小,所有情况FOR一遍 判断一下 AC代码 #include <cs ...

  5. Python学习进程(2)Python环境的搭建

        本节主要介绍在windows和Linux平台上如何搭建Python编程环境.     (1)查看Python版本: windows: C:\Users\JMSun>python 'pyt ...

  6. token的生成和应用

    token的生成和应用 接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效: 2.因为是非开放性的,所以OAuth那套协议是行不通的,因为没有中间用户的授权过程: ...

  7. awk的内置函数

    常见awk内置数值函数

  8. 【HackerRank】 Sherlock and The Beast

    Sherlock and The Beast Sherlock Holmes is getting paranoid about Professor Moriarty, his archenemy. ...

  9. this 机制的四种规则

    江湖人称,谁调用 this,this 就指向谁. 那么 this 到底绑定或者引用的是哪个对象环境呢,以下便是四种规则 1. 默认绑定全局变量 function fn() { console.log( ...

  10. 20145231《Java程序设计》第五次实验报告

    实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验要求 基于Java Socket实现安全传输 基于TCP实现客户端和服 ...