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);
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM