使用UIImagePickerController播放录制的视频 我正在创建一个应用程序,它将使用 UIImagePickerController < /Cord>记录视频,我在文档目录中保存录制的视频,并尝试在“代码使用< < /代码>回放视频”(希望显示iPhone的第一个视频帧以及iPhone中的播放按钮,就像iPhone的本地应用程序)。

使用UIImagePickerController播放录制的视频 我正在创建一个应用程序,它将使用 UIImagePickerController < /Cord>记录视频,我在文档目录中保存录制的视频,并尝试在“代码使用< < /代码>回放视频”(希望显示iPhone的第一个视频帧以及iPhone中的播放按钮,就像iPhone的本地应用程序)。,iphone,uiimagepickercontroller,mpmovieplayercontroller,Iphone,Uiimagepickercontroller,Mpmovieplayercontroller,我可以录制视频并将其保存到文档目录中,但无法创建帧和播放 我试图进入新的课程,在那里我可以播放录制的视频,但在点击USE按钮时崩溃了 这是我的密码 -(void)btnRecord_Press { BOOL canRecordVideo; canRecordVideo = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]; if (canRec

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

我试图进入新的课程,在那里我可以播放录制的视频,但在点击
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];

}
任何帮助都是值得的


谢谢

我是用这段代码做的

-(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];
}