2013-01-04 103 views
2

在我的應用中,即時通訊上傳視頻到服務器。我使用原生UIImagePickercontroller從畫廊中挑選視頻。iPhone-避免UIImagePickerController中的視頻壓縮

我有的代表是;

imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 

我的應用程序在後臺工作,而從畫廊挑選大視頻壓縮時間很煩人高,因此用戶一些如何得到惱火和退出此發生app.While中,beginbackgroundTaskWithExpirationhandler給我10分鐘bgTask。但如果壓縮過程超過10分鐘,而應用程序在後臺操作系統暫停/殺死我的應用程序。

你有什麼想法我可以避免這種情況。

+0

你無法避免10分鐘的限制。您應該顯示一個進度條,或讓用戶知道應用程序正在處理它。 – Andy

回答

3

不幸的是,沒有辦法完全避免壓縮。儘管如此,將視頻質量設置爲高應該有幫助。

myController.videoQuality = UIImagePickerControllerQualityTypeHigh;

編輯:我沒有測試過這一點,但它聽起來像它會工作。它是UIImagePickerController的重製版本,聲稱可以原始訪問圖像和視頻。

GitHub上:https://github.com/elc/ELCImagePickerController

關於它的更多信息:http://www.icodeblog.com/2010/10/07/cloning-uiimagepickercontroller-using-the-assets-library-framework/

0

如果你知道如何獲取PHAsset對象,用它來代替第三方解決方案(更精確的控制,從來沒有升級):

[[PHImageManager defaultManager] requestAVAssetForVideo:phAsset options:nil resultHandler:^(AVAsset *avAsset, AVAudioMix *audioMix, NSDictionary *info) { 
    NSURL *url = (NSURL *)[[(AVURLAsset *)avAsset URL] fileReferenceURL]; 
    NSLog(@"url = %@", [url absoluteString]); 
    NSLog(@"url = %@", [url relativePath]); 
}]; 

鑑於phAsset是PHAsset對象,avAsset是由PHImageManager產生的所得AVAsset對象,輸出到控制檯從上面的代碼會產生,例如:

2016-04-16 01:15:40.155 ChromaEpsilon[3423:933358] url = file:///.file/id=16777218.8262005 
2016-04-16 01:15:40.155 ChromaEpsilon[3423:933358] url = /private/var/mobile/Media/DCIM/108APPLE/IMG_8421.MOV 

我相信這不僅僅是這兩個,而是從這裏開始。