2013-01-04 73 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 

我相信这不仅仅是这两个,而是从这里开始。