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