【问题标题】:Play recorded video using UIImagePickerController使用 UIImagePickerController 播放录制的视频
【发布时间】:2013-04-13 18:53:51
【问题描述】:

我正在创建一个应用程序,它将使用 UIImagePickerController 录制视频,我将录制的视频保存在文档目录中,并尝试通过点击 USE 播放视频(想要显示录制的完整第一帧视频以及中间的播放按钮,就像 iPhone 的原生应用程序一样)。

我可以录制视频并将其保存到文档目录中,但无法创建帧和播放。

我尝试转到可以播放录制视频的新课程,但在单击 USE 按钮时崩溃了。

这是我的代码

-(void)btnRecord_Press
{
    BOOL canRecordVideo;

    canRecordVideo = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];

    if (canRecordVideo)
    {
        UIImagePickerController *videoRecorder = [[UIImagePickerController alloc]init];
        videoRecorder.sourceType = UIImagePickerControllerSourceTypeCamera;
        videoRecorder.delegate=self;

        videoRecorder.showsCameraControls = TRUE;

        NSArray *mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];

        NSArray *videoMediaTypesOnly = [mediaTypes filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(SELF CONTAINS %@)",@"movie"]];

        BOOL movieOuputPossible  = (videoMediaTypesOnly!=nil);

        if (movieOuputPossible)
        {
            videoRecorder.mediaTypes = videoMediaTypesOnly;

            [self presentViewController:videoRecorder animated:YES completion:nil];
        }

    }
}

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];

    NSData *videoData = [NSData dataWithContentsOfURL:videoURL];
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *tempPath = [documentsDirectory stringByAppendingFormat:@"/vid1.mp4"];

    BOOL success = [videoData writeToFile:tempPath atomically:NO];


    [self dismissViewControllerAnimated:NO completion:nil];

    PlayMovie *play = [[PlayMovie alloc]initWithNibName:@"PlayMovie" bundle:Nil];

    [self.navigationController pushViewController:play animated:YES];

}

任何帮助都将不胜感激。

谢谢

【问题讨论】:

    标签: iphone uiimagepickercontroller mpmovieplayercontroller


    【解决方案1】:

    我是用这段代码做的。

    -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
    {
        videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
    
        [self dismissViewControllerAnimated:NO completion:nil];
    
        [self Play];
    
    }
    
    -(void)Play
    {
    
        NSData *videoData = [NSData dataWithContentsOfURL:videoURL];
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *tempPath = [documentsDirectory stringByAppendingFormat:@"/vid1.mp4"];
    
        BOOL success = [videoData writeToFile:tempPath atomically:NO];
    
        player = [[MPMoviePlayerController alloc]initWithContentURL:videoURL];
    
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(btnDone_Press) name:MPMoviePlayerWillExitFullscreenNotification object:nil];
    
        self._player.shouldAutoplay = NO;
    
        UIImage *thumbnail = [player thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];
    
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        {        
            screenSize = [[UIScreen mainScreen]bounds].size;
    
    
            if (screenSize.height >480.0f)
            {
                player.view.frame = CGRectMake(0, 0, 320, 548);
    
            }
            else
            {
                player.view.frame = CGRectMake(0, 0, 320, 460);
    
            }
    
        }
    
        [self.view addSubview:player.view];
    
        self._player.scalingMode = MPMovieScalingModeAspectFit;
    
        self._player.fullscreen = YES;
    
        [self._player play];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 2020-06-27
      • 2021-04-06
      • 1970-01-01
      • 2015-08-13
      • 2012-05-22
      • 1970-01-01
      相关资源
      最近更新 更多