如何从iPhone图库导入视频并在应用程序中播放

7
我正在使用以下代码展示视频库。
 -(IBAction)showVideoLibrary
{
UIImagePickerController *videoPicker = [[UIImagePickerController alloc] init];
videoPicker.delegate = self;
videoPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

videoPicker.mediaTypes =[[NSArray alloc] initWithObjects: (NSString *)kUTTypeMovie,nil];    
if(self.popoverController!=nil)
{
    [self.popoverController release];
}
self.popoverController  = [[UIPopoverController alloc] initWithContentViewController:videoPicker];
popoverController.delegate = self;
popoverController.popoverContentSize=CGSizeMake(320,1000);

[popoverController presentPopoverFromRect:CGRectMake(0,0,10,10) inView:self.view permittedArrowDirections:nil animated:YES];

}

我正在使用以下函数来接收所选视频网址。
- (void)imagePickerController: (UIImagePickerController *)picker2 didFinishPickingMediaWithInfo: (NSDictionary *)info {

NSString *mediaType = [info valueForKey:UIImagePickerControllerMediaType];
if([mediaType isEqualToString:@"public.movie"])
{
    NSLog(@"came to video select...");

     NSURL *videoUrl=(NSURL*)[info objectForKey:@"UIImagePickerControllerMediaURL"];

    NSLog(@"Got Movie Url==%@",videoUrl);


}

这是我正在使用的代码,我可以看到视频库中存在的视频列表,但是当我按下“使用”按钮时,它会显示“正在压缩视频...”,我无法取消它,并且我没有收到任何URL。

- (void)imagePickerController: (UIImagePickerController *)picker2 didFinishPickingMediaWithInfo: (NSDictionary *)info

有什么想法可以解决这个问题,并将URL导入应用程序中。

谢谢。

1个回答

10

在真实的iPhone设备上尝试一下

这是我在项目中使用的从iPhone库选择视频的代码

只需将视频方法从选择器添加到您想要的按钮即可

  -(void)video
     {
     UIImagePickerController *imagePicker =
     [[UIImagePickerController alloc] init];
     imagePicker.delegate = self;
     imagePicker.sourceType = 
     UIImagePickerControllerSourceTypePhotoLibrary;


     imagePicker.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeMovie, nil];

     [self presentModalViewController:imagePicker animated:YES];


     }


     -(void) imagePickerController: (UIImagePickerController *) picker
     didFinishPickingMediaWithInfo: (NSDictionary *) info 
     {


     NSString *mediaType = [info objectForKey: UIImagePickerControllerMediaType];

     if (CFStringCompare ((__bridge CFStringRef) mediaType, kUTTypeMovie, 0)
     == kCFCompareEqualTo) 
     {

     NSString *moviePath = [[info objectForKey:UIImagePickerControllerMediaURL] path];

       NSURL *videoUrl=(NSURL*)[info objectForKey:UIImagePickerControllerMediaURL];
     // NSLog(@"%@",moviePath);

     if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath)) {
     UISaveVideoAtPathToSavedPhotosAlbum (moviePath, nil, nil, nil);
     }
     }


     [self dismissModalViewControllerAnimated:YES];

     [picker release];


     }
请勿忘记添加移动核心服务框架,并且导入。
 #import <MobileCoreServices/UTCoreTypes.h>

字符串"moviepath"会给出iPhone中视频的路径,然后您可以对该视频执行任何需要的操作。在压缩完成之后,您将得到字符串"moviepath"中的视频路径,而"videourl"则是该视频的URL,用于播放该视频。

 MPMoviePlayerController *player =[[MPMoviePlayerController alloc] initWithContentURL: url];   //  give here the "videourl"  
    [[player view] setFrame: [self.view bounds]];  
    [self.view addSubview: [player view]];
    [player play];

@DineshKaushik 您先生,是个天才。非常感谢您,这也帮助了我 :) - Supertecnoboff
感谢 @Supertecnoboff - Dinesh Kaushik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接