2013-02-24 16 views
5

Próbuję uzyskać podstawowy plik wideo .mov do odtworzenia za pomocą poniższego kodu, ale po naciśnięciu przycisku, któremu przypisano akcję, pojawia się tylko czarna ramka, ale nie jest odtwarzane wideo. Każda pomoc jest doceniana. Dzięki.Dlaczego mój MPMoviePlayerController nie jest odtwarzany?

@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

nie pokazuje pusty czarny ekran? –

Odpowiedz

13

Przyjęto warunek: projekt używa ARC.

Twoja instancja jest tylko lokalna, a ARC nie ma możliwości poinformowania, że ​​zachowaj tę instancję. Ponieważ kontroler nie jest zachowywany przez swój widok, wynikiem jest, że twoja instancja MPMoviePlayerController zostanie zwolniona bezpośrednio po wykonaniu twojego sposobu wykonania metody playMovie.

Aby naprawić ten problem, po prostu dodaj właściwość dla instancji odtwarzacza do swojej klasy SRViewController i przypisz instancję do tej właściwości.

Header:

@instance SRViewController 

    [...] 

    @property (nonatomic,strong) MPMoviePlayerController *player; 

    [...] 

@end 

Realizacja:

@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

Świetna odpowiedź! Dzięki! Mam teraz wideo do załadowania, ale kiedy jest odtwarzane, odtwarza tylko dźwięk. Nie jestem pewien, na czym polega problem, więc każda pomoc zostanie doceniona. Dzięki! – INsanEWay

+0

OK ... Rozwiązałem problem ... kodek wideo był po prostu błędny. – INsanEWay

+0

To jest doskonała odpowiedź i należy ją zaakceptować. –

Powiązane problemy