在我的应用中,我将视频上传到服务器。我使用原生UIImagePickercontroller
从图库中挑选视频。
我的代表是;
imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
我的应用程序必须在后台工作,并且从图库中选择大型视频时,压缩时间非常高,用户可能会感到烦恼并退出应用程序。虽然发生了这种情况,但beginbackgroundTaskWithExpirationhandler
给了我bgTask
10分钟。但如果压缩过程超过10分钟而应用程序处于后台,操作系统会暂停/杀死我的应用程序。
你知道我怎么能避免这种情况。??
答案 0 :(得分:3)
可悲的是,没有办法完全避免压缩。将视频质量设置为高应该会有所帮助。
myController.videoQuality = UIImagePickerControllerQualityTypeHigh;
编辑:我没有对此进行测试,但听起来它会起作用。这是UIImagePickerController的翻版,声称可以对图像和视频进行原始访问。
答案 1 :(得分: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
我相信,不仅仅是这两个,而是从这里开始。