UIImagePickerController - 从照片库中选择背景视频

UIImagePickerController - picking video in background from photo library

如何在后台模式下继续从照片库中选择视频?

我的意思是当我从 imagePickerController - PhotoLibrary 按下 use 按钮时视频开始压缩 - 在此压缩过程中(已附上截图)如果我按下 home button(i.e. go to background) 然后来到 foreground 然后我得到 info[UIImagePickerControllerMediaURL] 作为 null,所以应用程序是否可以继续在后台压缩视频并且 return 适当 url 当来到 foreground ?

截图:

我的didFinishPickingMediaWithInfo,

 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{


NSURL *url = info[UIImagePickerControllerMediaURL];

NSLog(@"url : %@",url);

[picker dismissViewControllerAnimated:YES completion:nil];

}

P.S : 如果我们通过camera录制视频然后转到后台,那么它会在那里停止录制,我们可以在前台使用它。

我想到了一种解决方法 - UIBackgroundTaskIdentifier 但它并非在所有情况下都有效,如果视频很大,则它有时间限制,因此寻找其他解决方案!

任何帮助将不胜感激! :)

如果我们想在 video is compressing and user press home button(app go in background) 期间通过 UIImagePickerControllerphotolibrary 在后台连续选择 video 那么我们必须使用 UIBackgroundTaskIdentifier 继续执行背景或任何其他使应用程序在后台运行的后台方式(不太可能!)。现在,UIBackgroundTaskIdentifier 有时间限制,所以我们不能选择任何大小的视频,所以如果我们限制视频持续时间,那么我们可以在后台连续选择它,比如,

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.videoMaximumDuration = 60.0;

 self.backgroundTask = UIBackgroundTaskInvalid;

            self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
                NSLog(@"Background handler called. Not running background tasks anymore.");
                [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
                self.backgroundTask = UIBackgroundTaskInvalid;
            }];

[self presentViewController:picker animated:YES completion:NULL]; 

使用 UIImagePickerController 我们可以做的只是在背景中选择视频。如果有人想在背景中选择大视频,那么 he/she 应该考虑 ALAssetLibraryPhotos framework