2016-10-03 64 views
2

如何在後臺模式下從照片庫中繼續選擇視頻?UIImagePickerController - 從照片庫中選擇背景中的視頻

我的意思是,當我從imagePickerController - PhotoLibrary和視頻按use按鈕開始得到壓縮 - 在這個壓縮過程(附上截圖)如果我按home button(i.e. go to background)再來找​​後來我info[UIImagePickerControllerMediaURL]null,所以是有可能該應用程序可以繼續在後臺壓縮視頻,並在返回​​時返回正確的url

截圖:

enter image description here

didFinishPickingMediaWithInfo

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


NSURL *url = info[UIImagePickerControllerMediaURL]; 

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

[picker dismissViewControllerAnimated:YES completion:nil]; 

} 

PS:如果我們camera錄製視頻並轉到後臺,然後它會停止記錄那裏,我們可以來後再使用前景。

我想到了一種解決方法 - UIBackgroundTaskIdentifier,但它不會在任何情況下工作,如果視頻很大,那麼它有時間限制,所以尋找任何其他解決方案!

任何幫助將不勝感激! :)

回答

1

,如果我們想在video is compressing and user press home button(app go in background)通過UIImagePickerControllerphotolibraryvideo不斷在後臺,然後我們必須使用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

相關問題