我需要使用AVAsset对象,以便使用AVPlayer和AVPlayerLayer播放它.我开始使用Photos框架,因为不推荐使用AssetsLibrary.现在我到了我有一个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];
}];
Run Code Online (Sandbox Code Playgroud)
我假设本地化描述不是视频的绝对URL.
我还偶然发现了PHImageManager和requestAVAssetForVideo,但是,当涉及到视频时,options参数没有isSynchrounous属性,image参数就是这种情况.
PHVideoRequestOptions *option = [PHVideoRequestOptions new];
[[PHImageManager defaultManager] requestAVAssetForVideo:videoAsset options:option resultHandler:^(AVAsset * _Nullable avasset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {
Run Code Online (Sandbox Code Playgroud)
有同步方法吗?
谢谢.