在iPad上播放捕获的视频会使我的应用程序崩溃

问题描述

| 我正在开发ipad 2的应用程序,该应用程序允许用户使用设备前置摄像头录制自己的视频,然后在视频播放器上播放。我的整体功能正常运行,但是有时候,当我加载将要播放视频的视图时,有时我的应用会崩溃,原因是: \'CALayerInvalidGeometry \',原因:\'CALayer位置包含NaN:[nan 11.5] \' 我注意到,当录制的剪辑播放时间少于15秒左右时,应用程序崩溃主要(但不是唯一)。 任何人都知道保存录音的代码是什么:
    -(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];
}
} 编辑:我已经实现了一种方法来分析所有捕获的视频并删除有问题的视频,我的应用程序再次稳定,但是我仍然想知道为什么有些视频创建得不好。     

解决方法

        我不知道为什么相机每次都不能准确捕获好视频文件,但是我将向您展示如何安全地测试文件是否有效。您必须使用要测试的文件路径创建一个AVAsset,该AVAsset具有一个名为\'playable \'的属性,即布尔值,然后您可以循环使用捕获视频的地址循环访问数组,询问当前资产是否可播放并删除损坏的文件。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...