在获取一些视频时,requestAVAssetForVideo似乎挂起了

时间:2017-05-27 10:18:56

标签: ios objective-c

我在使用requestAVAssetForVideo获取视频时遇到了一些问题。似乎在获取某些视频时,dispatch_async永远不会被调用,在其他视频上,它被调用并按预期工作。有人能发现问题可能是什么吗?

- (void)videoSelected:(long)selectedVideoIndex {

    PHAsset *selectedVideo = [self.allVideos objectAtIndex:selectedVideoIndex];

    PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
    options.networkAccessAllowed = YES;


    self.movieInformation = [[NSMutableDictionary alloc] init];

    [[PHImageManager defaultManager] requestAVAssetForVideo:selectedVideo options:options resultHandler:^(AVAsset *avAsset, AVAudioMix *audioMix, NSDictionary *info) {
        // Use the AVAsset avAsset

        dispatch_async(dispatch_get_main_queue(), ^{
             [self loadingScreen];
             [self loadTheVideo:avAsset];
        });

    }];



}

更新 似乎当我使用照片应用程序运行相同的视频时,它们也会挂起并且微调器继续运行。是否有办法添加在视频失败时调用的超时属性?

1 个答案:

答案 0 :(得分:1)

存储在 iCloud 中的视频/图片的延迟是正常的。如果您已启用iCloud备份并在手机设置中启用优化存储,则您的iPhone会将视频和图像备份到iCloud,并维持较低的图像分辨率和视频缩略图,并根据需要从iCloud中提取。登记/>
代码中的networkAccessAllowed负责从iCloud中获取视频或图像。如果是OFF,iOS将不会打扰存储在iCloud中的项目 - 它只会获取设备中的本地内容。