我正在iPhone 3GS上编写一个简单的视频上传应用程序,我首先将用户引导到相册,然后选择要共享或上传的视频。我以下列方式使用UIImagePickerController:
videoPickerCtrl = [[UIImagePickerController alloc] init];
videoPickerCtrl.delegate = self;
videoPickerCtrl.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
videoPickerCtrl.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:videoPickerCtrl.sourceType];
videoPickerCtrl.allowsImageEditing = NO;
videoPickerCtrl.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie];
[window addSubview:videoPickerCtrl.view];
但我可以看到,一旦控制器被调用,就会出现令人不安的视频修剪界面。按“选择”后,无论是否触摸剪裁控制,视频都会被修剪。有没有办法绕过这个修剪界面并直接获取视频文件的路径?
答案 0 :(得分:2)
您应该设置allowsEditing = NO;
而不是allowsImageEditing = NO;
(已在3.1中弃用)。然后,除非所选电影超过10分钟,否则不应出现剪裁界面(来自文档:“最长电影持续时间为10分钟。如果用户选择持续时间超过10分钟的电影,则会被迫修剪它在保存之前。“)。
答案 1 :(得分:2)
有趣的问题。这只是为了让其他人看到这个信息。在iPad OS 3.2上,我发现在检索视频时遇到了一些问题,虽然选择器工作正常但我可以从相册中选择视频,而不仅仅是从相机胶卷中选择视频。
这是我的工作代码frag
电话
NSArray *mediaTypesAllowed = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[picker setMediaTypes:mediaTypesAllowed];
picker.delegate = self;
picker.allowsEditing = NO;
picker.wantsFullScreenLayout = YES;
if(!IsEmpty(self.editBackgroundPopover)){
[self.editBackgroundPopover setContentViewController:picker animated:YES];
}
这是委托方法
imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[self.editBackgroundPopover dismissPopoverAnimated:true];
NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType];
//not production code, do not use hard coded string in real app
if ( [ mediaType isEqualToString:@"public.image" ]) {
NSLog(@"Picked a photo");
}
//not production code, do not use hard coded string in real app
else if ( [ mediaType isEqualToString:@"public.movie" ]){
NSLog(@"Picked a movie at URL %@", [info objectForKey:UIImagePickerControllerMediaURL]);
NSURL *url = [info objectForKey:UIImagePickerControllerMediaURL];
NSLog(@"> %@", [url absoluteString]);
}
[[picker self] dismissModalViewControllerAnimated:YES];
}
但是,我从选择器中检索的视频网址的格式为
文件:/localhost/private/var/mobile/Applications/C6FAC491-D27D-45A6-B805-951727ED2CEC/tmp/-Tmp-/trim.KOzqps.MOV
因此,即使我选择整个视频,我也希望通过修剪代码处理视频。另请注意,当我通过iTunes加载时,最初为m4v类型的电影是MOV类型,当然在设备上无法播放!我确实尝试过播放这个网址,但收到一条警告说“这种电影无法播放”
我不太明白Apple在这里播放的内容,API似乎并不能用作从照片库加载和播放视频的方式。
希望IOS 4会更加即将推出,但对于我的iPad应用程序来说,这还需要几个月的时间。
答案 2 :(得分:1)
好的,所以我仔细查看SDK文档后就可以了。我可以在3GS上从Camera Roll目录中获取视频。但我找不到UIImagePickerController可以从Camera Roll以外的目录中选择视频的任何方式(例如,用户通过iTunes同步视频的设备的照片库)。 SDK中有没有标准方法可以做到这一点?