2013-04-08 14 views
7

Sto lavorando a un'app IOS (con Storyoard). Ho un ViewController:IOS MPMoviePlayerViewController Caricamento infinito

//movieViewController.h 

#import <UIKit/UIKit.h> 
#import <MediaPlayer/MediaPlayer.h> 

@interface movieViewController : UIViewController { 

    MPMoviePlayerViewController *moviePlayer; 

} 

@property (strong, nonatomic) MPMoviePlayerViewController *moviePlayer; 
-(void) playMovie; 

@end 


//movieViewController.m 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
// Do any additional setup after loading the view. 
    [self playMovie]; 
} 

-(void)playMovie 
{ 
    NSString *videoPath = [[NSBundle mainBundle] pathForResource:@"movie" 
                 ofType:@"mov"]; 

    moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL 
                fileURLWithPath:videoPath]]; 
[self presentMoviePlayerViewControllerAnimated:moviePlayer]; 
} 

Quando eseguo vedo il mio viewController con un "Loading ..." che prende per sempre. enter image description here

+1

Non dovresti aspettare fino viewDidAppear chiamata prima di richiamare [sé playMovie]? – sixthcent

risposta

1

È necessario chiamare -prepareToPlay e/o -play. Per MPMoviePlayerController 's documentazione:

partire in iOS 5.0, al fine di facilitare il controllo della riproduzione più dettagliato, un nuovo lettore di film non è automaticamente pronta a svolgere.

+0

Stai mescolando MPMoviePlayerController e MPMoviePlayerViewController. – Till

+1

MPMoviePlayerViewController ha una proprietà 'moviePlayer' che è un oggetto MPMoviePlayerController. – zadr

+0

Questo è vero, ma non è necessario accedere a quella proprietà per ottenere ciò che l'OP chiedeva. MPMoviePlayerViewController lo fa immediatamente. – Till

0
-(IBAction)startVideo:(id)sender 
{ 
    NSURL *video = [[NSURL alloc] initWithString:@"http://www.w3schools.com/html/movie.mp4"]; 
    MPMoviePlayerViewController *controller = [[MPMoviePlayerViewController alloc]initWithContentURL:video]; 
    controller.view.frame = CGRectMake(20, 50, 280, 180); 

    controller.moviePlayer.view.center = self.view.center; 
    [self.view addSubview:controller.view]; 

    [controller.moviePlayer prepareToPlay]; 
    [controller.moviePlayer play]; 
}
+1

Puoi aggiungere del testo per spiegare la tua soluzione, per favore? – GHC

Problemi correlati