zoukankan      html  css  js  c++  java
  • iOS-使用ALAssetsLibrary获取相册图片视频

    用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:0]
                                                           options:0
                                                        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:@"123" 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 > 0) {
                artistItem = artistMetadata[0];
            }
    
            if (albumMetadata.count > 0) {
                albumItem = albumMetadata[0];
            }
        }];

    使用AVMetadataItem

    NSURL *assetURL = [[NSBundle mainBundle] URLForResource:@"123" withExtension:@"m4a"];
        
        AVAsset *asset = [AVAsset assetWithURL:assetURL];
        
        NSArray *metadata = [asset metadataForFormat:AVMetadataFormatiTunesMetadata];
        
        for (AVMetadataItem *item in metadata) {
            
            NSLog(@"%@: %@", item.key, item.value);
        }
  • 相关阅读:
    30分钟速懂Java8新特性!
    学习数据结构和算法心得
    看似简单但容易忽视的编程常识
    你应该关注的几个Eclipse超酷插件
    无谓的通宵加班之后的思索
    比特币这么火热,看看这篇比特币初学者指南
    2017年最受欢迎的十大开源黑客工具
    15分钟破解网站验证码
    我的新博客:www.wangyufeng.org
    20 岁时候的你在想些什么?
  • 原文地址:https://www.cnblogs.com/zhouxihi/p/7709812.html
Copyright © 2011-2022 走看看