2

在我的应用程序中,我将视频上传到服务器。我使用本机UIImagePickercontroller从图库中挑选视频。

我的代表是;

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

我的应用程序必须在后台工作,并且在从图库中挑选大型视频时,压缩时间非常长,以至于用户有些恼火并退出应用程序。虽然发生这种情况,但beginbackgroundTaskWithExpirationhandler给了我 10 分钟的时间bgTask。但如果压缩当应用程序在后台时,进程超过 10 分钟操作系统暂停/杀死我的应用程序。

你知道我怎样才能避免这种情况吗??

4

2 回答 2

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/

于 2013-01-04T11:02:55.720 回答
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

我相信不止这两个,但从这里开始。

于 2016-04-16T08:30:23.700 回答