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)
期间通过 UIImagePickerController
从 photolibrary
在后台连续选择 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 应该考虑 ALAssetLibrary
或 Photos framework
。
如何在后台模式下继续从照片库中选择视频?
我的意思是当我从 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)
期间通过 UIImagePickerController
从 photolibrary
在后台连续选择 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 应该考虑 ALAssetLibrary
或 Photos framework
。