1. 程式人生 > >IOS 獲取裝置本地音視訊

IOS 獲取裝置本地音視訊

1、檢索音視訊

PHFetchOptions *allPhotosOptions;
@property (nonatomic, strong) PHFetchResult *assetsFetchResults;
if (allPhotosOptions == nil) {
        
        allPhotosOptions = [[PHFetchOptions alloc] init];
        allPhotosOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
    }
 self.assetsFetchResults = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:allPhotosOptions];

其中assetsFetchResults儲存了所有的圖片資訊,PHAssetMediaTypeImage為搜尋圖片的型別,同樣的搜尋其他類的可以根據

typedef NS_ENUM(NSInteger, PHAssetMediaType) {
    PHAssetMediaTypeUnknown = 0,
    PHAssetMediaTypeImage   = 1,
    PHAssetMediaTypeVideo   = 2,
    PHAssetMediaTypeAudio   = 3,
} NS_ENUM_AVAILABLE_IOS(8_0);
2、獲取圖片UIImage
[[PHCachingImageManager defaultManager] requestImageForAsset:asset
                                    targetSize:AssetGridThumbnailSize
                                   contentMode:PHImageContentModeAspectFill
                                       options:nil
                                 resultHandler:^(UIImage *result, NSDictionary *info) {
                                     // Set the cell's thumbnail image if it's still showing the same asset.
                                     if ([cell.representedAssetIdentifier isEqualToString:asset.localIdentifier]) {
                                         cell.thumbnailImage = result;
                                     }
                                 }];
asset為assetsFetchResults中的一個PHAsset,targetSize是獲取圖片的大小,這個根據你顯示的方式設定,如果需要獲取圖片其他資訊比如標題可以採用
[phAsset valueForKey:@"filename"];

3、播放視訊

-(void)setVideoAsset:(PHAsset *)videoAsset
{
    _videoAsset = videoAsset;
    [[PHImageManager defaultManager] requestPlayerItemForVideo:_videoAsset options:nil resultHandler:^(AVPlayerItem * _Nullable playerItem, NSDictionary * _Nullable info) {
        self.currentItem = playerItem;
        [self.player replaceCurrentItemWithPlayerItem:self.currentItem];
        [self.currentItem addObserver:self forKeyPath:@"status" options:NSKeyValueObservingOptionNew context:nil];
    }];
}