我需要使用AVAsset对象,以便使用AVPlayer和AVPlayerLayer进行播放。由于AssetsLibrary已被弃用,因此我开始使用Photos框架。现在我已经获得了一组PHAsset对象,我需要将它们转换为AVAsset。我尝试通过遍历PHFetchResult并使用PHAsset的本地描述来分配新的AVAsset,但当我播放它时似乎没有显示任何视频。
PHAssetCollection *assetColl = [self scaryVideosAlbum];
PHFetchResult *getVideos = [PHAsset fetchAssetsInAssetCollection:assetColl options:nil];
[getVideos enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) {
NSURL *videoUrl = [NSURL URLWithString:asset.localizedDescription];
AVAsset *avasset = [AVAsset assetWithURL:videoUrl];
[tempArr addObject:avasset];
}];
我假设本地化描述并不是视频的绝对URL。
我也遇到了PHImageManager和requestAVAssetForVideo,但是,当涉及到视频时,选项参数没有isSynchrounous属性,而图像选项参数则有。
PHVideoRequestOptions *option = [PHVideoRequestOptions new];
[[PHImageManager defaultManager] requestAVAssetForVideo:videoAsset options:option resultHandler:^(AVAsset * _Nullable avasset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {
有没有同步的方法可以做到这一点?
谢谢。
weakSelf
习惯用法是避免保留循环的一种方式:https://dev59.com/1GIj5IYBdhLWcg3wpmoH - Rhythmic Fistman