Воспроизведение снятых видео на ipad приводит к сбою приложения - PullRequest
0 голосов
/ 01 июня 2011

Я работаю над приложением для ipad 2, которое позволяет пользователю записывать собственное видео с помощью передней камеры устройства, а затем воспроизводить его на видеоплеере.У меня работает общая функциональность, но иногда, просто иногда мое приложение падает, когда я загружаю представление, где будет воспроизводиться видео, из-за этого: 'CALayerInvalidGeometry', причина: 'Положение CALayer содержит NaN: [nan 11.5]' Iзаметили, что приложение падает, в основном, но не исключительно, когда воспроизведение записанного клипа длится менее 15 секунд.У любого есть идея, что s going on? Here s код, который заботится о записи:

    -(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 голосов
/ 14 июня 2011

Я не знаю, почему именно камера не записывает хорошие видеофайлы каждый раз, но я покажу вам, как можно безопасно проверить, работает файл или нет.Вам нужно создать AVAsset с путем к файлу, который вы хотите протестировать, AVAsset имеет свойство «playable», bool, затем вы можете циклически перемещать массив с адресами ваших захваченных видео, спрашивая, воспроизводится ли текущий актив, и удаляяповрежденные файлы.

...