2012-09-23 7 views
7

MPMoviePlayerController przestaje grać po kilku sekundach jest to kod używam:MPMoviePlayerController przestaje grać po kilku sekundach

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]; 
} 

Błąd im się w konsoli to:

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

Cześć , Którego używasz? – AsifHabib

Odpowiedz

1

Możesz spróbować zrobić to tuż po utworzeniu swojego odtwarzacza: [player prepareToPlay]

Więcej informacji tutaj: iOS 6 streaming player com.apple.coremedia.networkbuffering bug

+0

Nie jestem pewien, gdzie mam się przyczepić [player prepareToPlay], już mam to w swoim kodzie. Czy powinienem przenieść tę metodę gdzieś indziej lub dodać dodatkową, nie do końca pewną, jak to zrobić – Luna

+0

Dodałem metodę [player prepareToPlay] po [player play], a ona nadal odcina po kilku sekundach – Luna

+0

nadal nie ma szczęścia widzę inny post z podobnym problemem, ale problem nie został rozwiązany. – Luna

9

rozwiązany go:

Odwróciłem MPMoviePlayerController na miejscu:

// dodać w nagłówku

@property (strong,nonatomic) MPMoviePlayerController *myPlayer; 

// dodać w pliku .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

Spróbuj tego, działa dobrze dla mnie w 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

Oto interesująca linia kodu, której brakuje.

Według dokumentu Apple

"Kiedy dodać widok odtwarzacz filmów do wyświetlania hierarchii swojej aplikacji, upewnij się, że rozmiar ramki poprawnie, tak jak pokazano poniżej: 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

Rozwiązaniem jest to, że odtwarzacz musiałby być zmienną instancji lub właściwością kontrolera widoku tj. Musimy użyć instancji MPMoviePlayerController

@property (nonatomic, strong) MPMoviePlayerController * myMovieController;

8

Trzeba ustawić zmienną klasy tak:

@property (nonatomic, retain) MPMoviePlayerController *moviePlayer; 

Mój kod wygląda następująco:

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]; 

Działa to dla mnie idealny!

2

na xCode 4.6.1 działało dobrze.

Ale miałem ten problem z xCode 5!

Ale to rozwiązanie jest bardzo pomocne:

„Rozwiązanie jest to, że gracz musiałby być zmienną instancji lub własność kontrolera widoku.tj Musimy wykorzystać wystąpienie MPMoviePlayerController

@property (nonatomic, silne) MPMoviePlayerController * myMovieController,”

podziękować autorowi bardzo dużo

I to jest mój kod:

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(); 
Powiązane problemy