Сбой MPMoviePlayerViewController Ошибка OpenGL 0x0505 в -[ES1Renderer resizeFromLayer:]

#opengl-es #cocos2d-iphone #mpmovieplayercontroller #ipod

#opengl-es #cocos2d-iphone #mpmovieplayercontroller #ipod

Вопрос:

У меня возникла проблема, из-за которой при загрузке вводного фильма в начале моего приложения для IOS игра вылетает с ошибкой OpenGL 0x0505 в -[ES1Renderer resizeFromLayer:].

Мои спецификации фильма:

Размеры: 480 x 320 Кодеки: H.264, AAC Продолжительность: 00:15 Общий битрейт: 984 Размер: 1.9 MB

Я запускаю фильм при запуске applicationDidFinishLaunching и выполняю инициализацию / создание моего CCDirector и EAGLView в отдельном методе, который вызывается после завершения воспроизведения фильма.

Это работает на симуляторе, а также на Iphone 4, 3GS, Ipod 4-го поколения, но на Ipod 2-го поколения (версия 4.1) происходит сбой.

У меня есть свой собственный класс, производный от MPMoviePlayerViewController, и у меня есть собственный метод с именем startMovie, который делает это:

 - (void)startMovie
{    
    MPMoviePlayerController* moviePlayerController = [self moviePlayer];
    moviePlayerController.controlStyle = MPMovieControlStyleNone;
    moviePlayerController.useApplicationAudioSession = YES;
    moviePlayerController.fullscreen = YES;
    moviePlayerController.scalingMode = MPMovieScalingModeAspectFill;

    // Only play video for iOS above 3.2
    if(OS_Version > 3.21)
    {        
        [moviePlayerController setMovieControlMode:MPMovieControlModeHidden];
        [moviePlayerController prepareToPlay];
        [moviePlayerController play];
    }
    else
   {
        // Use the new 3.2 style API
        if([moviePlayerController respondsToSelector:@selector(setFullscreen:animated:)])
            moviePlayerController.shouldAutoplay = YES;
        else // Use the old 2.0 style API 
        {
            moviePlayerController.movieControlMode = MPMovieControlModeHidden;  
            [moviePlayerController play]; 
        }
    }
}
  

При запуске моего фильма я делаю так:

 self.moviePlayerViewController = [[[PFMPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:filePath]] autorelease];
[moviePlayerViewController startMovie];
  

Я считаю, что у меня заканчивается память, поскольку ошибка OpenGL 0x0505 является проблемой нехватки памяти, но я не понимаю, почему. Сама игра выделила более 2 МБ после нажатия кнопки воспроизведения, поэтому я думаю, что она может справиться с выделением фильма.

Есть ли что-нибудь вопиюще неправильное, что я могу делать, чтобы заставить OpenGL выдавать подобную ошибку?

Спасибо,

Ответ №1:

Вам будет лучше использовать класс CCVideoPlayer из проекта cocos2d-iphone-extensions, а не заново изобретать колесо.