2013-02-24 4 views
5

Sto cercando di riprodurre un file video .mov di base utilizzando il codice sottostante, ma quando il pulsante a cui è assegnata l'azione viene premuto, l'unica cosa che viene visualizzata è la cornice nera, ma non viene riprodotto alcun video. Qualsiasi aiuto è apprezzato. Grazie.Perché il mio MPMoviePlayerController non funziona?

@implementation SRViewController 

-(IBAction)playMovie{ 
    NSString *url = [[NSBundle mainBundle] 
        pathForResource:@"OntheTitle" ofType:@"mov"]; 
    MPMoviePlayerController *player = [[MPMoviePlayerController alloc] 
             initWithContentURL: [NSURL fileURLWithPath:url]]; 

    // Play Partial Screen 
    player.view.frame = CGRectMake(10, 10, 720, 480); 
    [self.view addSubview:player.view]; 

    // Play Movie 
    [player play]; 
} 

@end 
+0

Si vede uno schermo nero in bianco? –

risposta

13

precondizione Assunta: il progetto sta usando ARC.

L'istanza MPMoviePlayerController è solo locale e ARC non ha modo di dire che è necessario conservare quell'istanza. Poiché il controller non viene mantenuto dalla sua visualizzazione, il risultato è che l'istanza MPMoviePlayerController verrà rilasciata direttamente dopo l'esecuzione dell'elaborazione del metodo playMovie.

Per risolvere il problema, è sufficiente aggiungere una proprietà per l'istanza del lettore alla classe SRViewController e assegnare l'istanza a tale proprietà.

Intestazione:

@instance SRViewController 

    [...] 

    @property (nonatomic,strong) MPMoviePlayerController *player; 

    [...] 

@end 

Implementazione:

@implementation SRViewController 

    [...] 

    -(IBAction)playMovie 
    { 
     NSString *url = [[NSBundle mainBundle] 
         pathForResource:@"OntheTitle" ofType:@"mov"]; 
     self.player = [[MPMoviePlayerController alloc] 
              initWithContentURL: [NSURL fileURLWithPath:url]]; 

     // Play Partial Screen 
     self.player.view.frame = CGRectMake(10, 10, 720, 480); 
     [self.view addSubview:self.player.view]; 

     // Play Movie 
     [self.player play]; 
    } 

    [...] 

@end 
+0

Ottima risposta! Grazie! Ho caricato il video ora, ma quando viene riprodotto, riproduce solo l'audio. Non sono sicuro di quale sia il problema, quindi qualsiasi aiuto sarebbe apprezzato. Grazie! – INsanEWay

+0

OK ... Ho risolto il problema ... il codec del video era semplicemente sbagliato. – INsanEWay

+0

Questa è una risposta eccellente e dovrebbe essere accettata. –