在ipad上播放捕获的视频会导致我的应用崩溃

时间:2011-05-31 20:34:45

标签: iphone ios xcode ipad video-capture

我正在开发一款适用于ipad 2的应用程序,让用户可以使用设备前置摄像头录制自己的视频,然后在视频播放器上播放。我有整体功能,但有时候,有时我的应用程序崩溃,当我加载视频将播放视频,因为这样: 'CALayerInvalidGeometry',原因:'CALayer位置包含NaN:[nan 11.5]' 我注意到,当录制的剪辑播放时间小于15秒时,应用程序主要崩溃,但并非排他性地崩溃。 任何人都知道s going on? Here负责录制的代码:

    -(void)record{

        AVCaptureMovieFileOutput *output = [[AVCaptureMovieFileOutput alloc]init];
        NSMutableString *videoURL;
        if(isRecording){

            //here i do some stuff to generate a random system path

            [session addOutput:output];
            AVCaptureConnection *videoConnection;
            [session beginConfiguration];

            for ( AVCaptureConnection *connection in [output connections] ) {
                for ( AVCaptureInputPort *port in [connection inputPorts] ) {
                    if ( [[port mediaType] isEqual:AVMediaTypeVideo] ) {
                        videoConnection = connection;
                    }
                }
            }
            if([videoConnection isVideoOrientationSupported]){

                [videoConnection setVideoOrientation:AVCaptureVideoOrientationLandscapeLeft];
                videoConnection.videoMirrored = true;  
            }

            [session commitConfiguration];
            [session startRunning]; 
            NSURL *vidURL = [[NSURL alloc]initFileURLWithPath:videoURL];
            [output startRecordingToOutputFileURL:vidURL recordingDelegate:self];
            NSLog(@"Recording started in %@", videoURL);
            [rootRep addObject:videoURL];
            [vidURL release];
            [videoURL release];
        }else{
            isRecording = false;
            [output stopRecording];
            [session removeOutput:output];
            [output release];
            NSLog(@"Recording stopped");
            [recBut setImage:[UIImage imageNamed:@"rec.png"] forState:UIControlStateNormal];
}

}

编辑:我已经实施了一种方法来分析所有捕获的视频并删除有问题的视频,我的应用程序再次稳定,但我仍然想知道为什么有些视频不能很好地创建。

1 个答案:

答案 0 :(得分:0)

我不知道为什么相机每次都无法捕捉到好的视频文件,但我会告诉你如何安全地测试文件是否有效。你必须使用你想要测试的文件路径创建一个AVAsset,AVAsset有一个名为'playable'的属性,一个bool,然后你可以循环一个数组,其中包含你捕获的视频的地址,询问当前资产是否可播放并删除损坏的文件。