/*--------------------------------------------------------------------------- * Load movie player from your viewcontroller *--------------------------------------------------------------------------*/ - (void)loadMoviePlayer { // Play movie from the bundle NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp4" inDirectory:nil]; // Create custom movie player moviePlayer = [[CustomMoviePlayerViewController alloc] initWithPath:path]; // Show the movie player as modal [self presentViewController:moviePlayer animated:YES completion:nil]; // Prep and play the movie [moviePlayer readyPlayer]; }
/*--------------------------------------------------------------------------- * CustomMoviePlayerViewController.m *--------------------------------------------------------------------------*/ - (id)initWithPath:(NSString *)moviePath { // Initialize and create movie URL if (self = [super init]) { movieURL = [NSURL fileURLWithPath:moviePath]; [movieURL retain]; } return self; } - (void) moviePlayerLoadStateChanged:(NSNotification*)notification { // Unless state is unknown, start playback if ([mp loadState] != MPMovieLoadStateUnknown) { // Remove observer [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerLoadStateDidChangeNotification object:nil]; // When tapping movie, status bar will appear, it shows up // in portrait mode by default. Set orientation to landscape [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:NO]; // Rotate the view for landscape playback [[self view] setBounds:CGRectMake(0, 0, 568, 320)]; //[[self view] setCenter:CGPointMake(260, 240)]; [[self view] setTransform:CGAffineTransformMakeRotation(M_PI / 2)]; // Set frame of movieplayer [[mp view] setFrame:CGRectMake(0, 0, 568, 320)]; // Add movie player as subview [[self view] addSubview:[mp view]]; // Play the movie [mp play]; } } /*--------------------------------------------------------------------------- * For 3.1.x devices * For 3.2 and 4.x see moviePlayerLoadStateChanged: *--------------------------------------------------------------------------*/ - (void) moviePreloadDidFinish:(NSNotification*)notification { // Remove observer [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; // Play the movie [mp play]; } /*--------------------------------------------------------------------------- * *--------------------------------------------------------------------------*/ - (void) moviePlayBackDidFinish:(NSNotification*)notification { [[UIApplication sharedApplication] setStatusBarHidden:YES]; // Remove observer [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; [self dismissViewControllerAnimated:YES completion:nil]; [[NSNotificationCenter defaultCenter] postNotificationName:@"dissmissPlayer" object:nil]; } /*--------------------------------------------------------------------------- * *--------------------------------------------------------------------------*/ - (void) readyPlayer { mp = [[MPMoviePlayerController alloc] initWithContentURL:movieURL]; if ([mp respondsToSelector:@selector(loadState)]) { // Set movie player layout [mp setControlStyle:MPMovieControlStyleFullscreen]; [mp setFullscreen:YES]; // May help to reduce latency [mp prepareToPlay]; // Register that the load state changed (movie is ready) [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerLoadStateChanged:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil]; } else { // Register to receive a notification when the movie is in memory and ready to play. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePreloadDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; } // Register to receive a notification when the movie has finished playing. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; } /*--------------------------------------------------------------------------- * *--------------------------------------------------------------------------*/ - (void) loadView { [self setView:[[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease]]; [[self view] setBackgroundColor:[UIColor blackColor]]; } /*--------------------------------------------------------------------------- * *--------------------------------------------------------------------------*/ - (void)dealloc { [mp release]; [movieURL release]; [super dealloc]; }
No comments:
Post a Comment