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

时间:2016-10-03 08:40:35

标签: ios objective-c uiimagepickercontroller

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

我的意思是当我从useimagePickerController - PhotoLibrary按钮并且视频开始压缩时 - 在此压缩过程中(已附加屏幕截图)如果我按home button(i.e. go to background)然后来{ {1}}然后我将foreground作为info[UIImagePickerControllerMediaURL],那么应用是否可以继续在后台压缩视频,并在null时返回正确的url?< / p>

屏幕截图:

enter image description here

我的foreground

didFinishPickingMediaWithInfo

P.S:如果我们按 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{ NSURL *url = info[UIImagePickerControllerMediaURL]; NSLog(@"url : %@",url); [picker dismissViewControllerAnimated:YES completion:nil]; } 录制视频并转到后台,那么它将停止录制,我们可以在前景后使用它。

我想过一个解决方法 - camera但是它并不适用于所有情况,如果视频很大,那么它有时间限制,所以寻找任何其他解决方案!

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

1 个答案:

答案 0 :(得分:1)

如果我们想在<command> {*}[glob -directory ../myDir PlainText$i.*] 期间video UIImagePickerControllerphotolibrary继续选择video is compressing and user press home button(app go in background),那么我们必须使用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,我们只能在后台选择视频。如果有人想在后台挑选大型视频,那么他/她应该查看ALAssetLibraryPhotos framework