Я пытаюсь воспроизвести видео в формате .mp4 в cocos2d. См. Мой код ниже. Видео не воспроизводится, появляется только черный фон, покрывающий чуть более трети экрана.Cocos2d .mp4 видео не играет
Instructions.m:
#import "Instructions.h"
@implementation Instructions
- (id)init
{
self = [super init];
if (self != nil)
{
[self playInstructionsVideo];
}
return self;
}
- (void)playInstructionsVideo
{
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Instructions" ofType:@"mp4"]];
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
// Register to receive a notification when the movie has finished playing.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlayBackDidFinish:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
if ([moviePlayer respondsToSelector:@selector(setFullscreen:animated:)])
{
// Use the new 3.2 style API
moviePlayer.controlStyle = MPMovieControlStyleNone;
moviePlayer.shouldAutoplay = YES;
// This does blows up in cocos2d, so we'll resize manually
// [moviePlayer setFullscreen:YES animated:YES];
[moviePlayer.view setTransform:CGAffineTransformMakeRotation((float)M_PI_2)];
CGSize winSize = [[CCDirector sharedDirector] winSize];
moviePlayer.view.frame = CGRectMake(0, 0, winSize.height, winSize.width); // width and height are swapped after rotation
[[[CCDirector sharedDirector] view] addSubview:moviePlayer.view];
}
else
{
// Use the old 2.0 style API
moviePlayer.controlStyle = MPMovieControlStyleNone;
[moviePlayer play];
}
}
- (void)moviePlayBackDidFinish:(NSNotification *)notification
{
MPMoviePlayerController *moviePlayer = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayer];
// If the moviePlayer.view was added to the openGL view, it needs to be removed
if ([moviePlayer respondsToSelector:@selector(setFullscreen:animated:)])
{
[moviePlayer.view removeFromSuperview];
}
[moviePlayer release];
}
@end
Пожалуйста, помогите мне, я не уверен, что является причиной аномального поведения.
Что такое winSize.height & winSize.width, прежде чем устанавливать размер кадра видео? –
@MichaelDautermann: извините, я не видел ваш комментарий раньше. Мне удалось воспроизвести видео, но ориентация обращена к левой половине экрана ([см. Снимок экрана] (http://imgur.com/4IekvPa)). Я поставил CCLOG, чтобы проверить winSize.width и winSize.height и получил соответственно 568.0 и 320.0 для ширины и высоты. Как я могу решить эту проблему? – NSologistic