2012-09-23 16 views
7

MPMoviePlayerController fermate che giocano dopo pochi secondi, questo è il codice che sto utilizzando:MPMoviePlayerController smette di giocare dopo pochi secondi

NSString *urlAddress = @"http://67.159.28.74:8730"; 
NSURL *url = [NSURL URLWithString:urlAddress]; 

MPMoviePlayerController *player = [[MPMoviePlayerController alloc]initWithContentURL:url]; 
player.movieSourceType = MPMovieSourceTypeStreaming; 

player.view.hidden = NO; 
[self.view addSubview:player.view]; 
[player prepareToPlay]; 

if(player){ 
    [player play]; 
} 

L'im errore di entrare in console è:

2012-09-23 18:07:56.618 Reader[696:c07] [MPAVController] Autoplay: Disabling autoplay for pause 

2012-09-23 18:07:56.619 Reader[696:c07] [MPAVController] Autoplay: Disabling autoplay 

2012-09-23 18:07:56.638 Reader[696:c07] [MPAVController] Autoplay: Disabling autoplay for pause 

2012-09-23 18:07:56.638 Reader[696:c07] [MPAVController] Autoplay: Disabling autoplay 

2012-09-23 18:07:56.643 Reader[696:c07] [MPAVController] Autoplay: Enabling autoplay 

2012-09-23 18:07:56.645 Reader[696:c07] [MPAVController] Autoplay: Likely to keep up or full buffer: 0 

2012-09-23 18:07:56.646 Reader[696:c07] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up. 

2012-09-23 18:07:56.648 Reader[696:c07] [MPAVController] Autoplay: Likely to keep up or full buffer: 0 

2012-09-23 18:07:56.648 Reader[696:c07] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up. 

2012-09-23 18:07:56.650 Reader[696:c07] [MPAVController] Autoplay: Enabling autoplay 

2012-09-23 18:07:56.652 Reader[696:c07] [MPCloudAssetDownloadController] Prioritization requested for media item ID: 0 

2012-09-23 18:07:58.746 Reader[696:c07] [MPAVController] Autoplay: Likely to keep up or full buffer: 0 

2012-09-23 18:07:58.746 Reader[696:c07] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up. 

2012-09-23 18:07:58.747 Reader[696:c07] [MPAVController] Autoplay: _streamLikelyToKeepUp: 0 -> 1 

2012-09-23 18:07:58.748 Reader[696:c07] [MPAVController] Autoplay: Likely to keep up or full buffer: 1 

2012-09-23 18:07:58.748 Reader[696:c07] [MPAVController] Autoplay: Enabling autoplay` 
+0

Hi , Quale iOS stai usando? – AsifHabib

risposta

1

Puoi provare a farlo subito dopo aver istanziato il player: [player prepareToPlay]

Ulteriori informazioni qui: iOS 6 streaming player com.apple.coremedia.networkbuffering bug

+0

Non sono sicuro di dove dovrei pubblicare [player prepareToPlay], lo ho già nel mio codice. Devo spostare quel metodo da qualche altra parte o aggiungere un extra, non sono proprio sicuro di come andare a fare – Luna

+0

Ho aggiunto il metodo [player prepareToPlay] dopo [riproduzione di un giocatore], e continua a squarciare dopo alcuni secondi – Luna

+0

ancora senza fortuna vedo altri post con un problema simile, ma il problema non è risolto. – Luna

9

risolto:

ho girato la mia MPMoviePlayerController in una proprietà:

// aggiungere nell'intestazione

@property (strong,nonatomic) MPMoviePlayerController *myPlayer; 

// aggiungere nel file di .m

- (IBAction)playStream:(id)sender { 
    NSString *urlAddress = @"http://67.159.28.74:8730"; 
    NSURL *url = [NSURL URLWithString:urlAddress]; 

    MPMoviePlayerController *player = [[MPMoviePlayerController alloc]initWithContentURL:url]; 
    [player prepareToPlay]; 
    //Remember you have to add MediaPlayer.framework to your project 
    /*[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(moviePlayBackDidFinish:) 
              name:MPMoviePlayerPlaybackDidFinishNotification 
              object:player];*/ 

    player.movieSourceType = MPMovieSourceTypeStreaming; 



    player.view.hidden = YES; 

    self.myPlayer = player; 

    [self.view addSubview:self.myPlayer.view]; 


    if(player){ 
     [self.myPlayer play]; 
    } 
} 
1

Prova questo funziona bene per me in ios6

NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"ddd" ofType:@"mp4"]; 
NSLog(@"%@",resourcePath); 
NSURL *url = [NSURL fileURLWithPath:resourcePath]; 
NSLog(@"%@",url); 
MPMoviePlayerViewController *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; 
moviePlayer.view.frame = self.view.frame; 
moviePlayer.moviePlayer.shouldAutoplay=YES; 
moviePlayer.moviePlayer.controlStyle = MPMovieControlStyleNone; 
[moviePlayer.moviePlayer setFullscreen:YES animated:YES]; 
[self.view addSubview:moviePlayer.view]; 
[moviePlayer.moviePlayer play]; 
0

Ecco una riga di codice interessante che ti manca.

Secondo il documento di Apple

"Quando si aggiunge punto di vista di un lettore di film alla gerarchia vista della tua app, assicurati di dimensioni del telaio in modo corretto, come illustrato di seguito: http://tinyurl.com/9wgv9wc

MPMoviePlayerController *player = 

    [[MPMoviePlayerController alloc] initWithContentURL: myURL]; 

[player prepareToPlay]; 

[player.view setFrame: myView.bounds]; // player's frame must match parent's 

[myView addSubview: player.view]; 

// ... 

[player play]; 

http://tinyurl.com/aeh9f84

0

La soluzione è che il lettore deve essere una variabile di istanza o una proprietà del controller della vista ie Dobbiamo utilizzare l'istanza di MPMoviePlayerController

@property (nonatomic, strong) MPMoviePlayerController * myMovieController;

8

è necessario impostare una variabile di classe come questo:

@property (nonatomic, retain) MPMoviePlayerController *moviePlayer; 

Il mio codice è simile al seguente:

NSURL *theUrl = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"mp4"]; 
moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:theUrl]; 
[moviePlayer prepareToPlay]; 
[moviePlayer.view setFrame: self.view.bounds]; 
moviePlayer.movieSourceType = MPMovieSourceTypeFile; 
[self.view addSubview: moviePlayer.view]; 
[moviePlayer play]; 

Questo funziona perfetto per me!

2

su xCode 4.6.1 ha funzionato correttamente.

Ma ho avuto questo problema con xCode 5!

Ma questa soluzione è molto utile:

"La soluzione è che il giocatore avrebbe dovuto essere una variabile di istanza o di proprietà del controller della vista.cioè Dobbiamo utilizzare l'istanza di MPMoviePlayerController

@property (nonatomic, forte) MPMoviePlayerController * myMovieController;"

Grazie autore molto

E questo è il mio codice:

UIGraphicsBeginImageContext(CGSizeMake(1,1)); 

NSString *path = [[NSBundle mainBundle] pathForResource:@"video" ofType:@"mp4"]; 
NSURL *videoURL = [NSURL fileURLWithPath:path]; 
self.moviePlayerView = [[MPMoviePlayerController alloc] initWithContentURL:videoURL]; 
[self.moviePlayerView prepareToPlay]; 
[self.moviePlayerView.view setFrame:CGRectMake(0, 0, 320, self.view.frame.size.height/2)]; 
self.moviePlayerView.view.backgroundColor = [UIColor clearColor]; 
[self.moviePlayerView setContentURL:videoURL]; 

self.moviePlayerView.movieSourceType = MPMovieSourceTypeFile; 
self.moviePlayerView.controlStyle = MPMovieControlStyleDefault; 
[self.view addSubview:self.moviePlayerView.view]; 
self.moviePlayerView.shouldAutoplay = NO; 
[self.moviePlayerView play]; 

UIGraphicsEndImageContext(); 
Problemi correlati