2012-01-14 10 views
16

Estoy tratando de reproducir una transmisión de video desde Internet en el iPhone presionando un botón. Utilicé muchas muestras de código pero nada funcionó. Con este código, se abre una vista negra sin ningún flujo de video o controles en ella. (La corriente en sí funciona.)Cómo reproducir secuencias de video con MPMoviePlayerController en iOS

NSURL *url = [NSURL URLWithString:@"http://MyStreamURL.com"]; 
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(moviePlayBackDidFinish:) 
              name:MPMoviePlayerPlaybackDidFinishNotification 
              object:moviePlayer]; 

moviePlayer.controlStyle = MPMovieControlStyleDefault; 
moviePlayer.shouldAutoplay = YES; 
[self.view addSubview:moviePlayer.view]; 
[moviePlayer setFullscreen:YES animated:YES]; 

Respuesta

27

lugar de crear una MPMoviePlayerController y agregó que a su juicio, es probable que sea más fácil de crear un MPMoviePlayerViewController y presentar esa forma modal controlador de vista (ya que usted está tratando de mostrar su video completo pantalla de todos modos). Entonces el MPMoviePlayerViewController puede administrar la presentación de su video por usted.

MPMoviePlayerViewController *mpvc = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; 

[[NSNotificationCenter defaultCenter] addObserver:self 
            selector:@selector(moviePlaybackDidFinish:) 
             name:MPMoviePlayerPlaybackDidFinishNotification 
             object:nil];  

mpvc.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming; 

[self presentMoviePlayerViewControllerAnimated:mpvc]; 
[mpvc release]; 

En el método de moviePlayBackDidFinish delegado A continuación, puede descartar el controlador de vista de modelo.

+0

¡Muchas gracias! Yo trabajo perfectamente – derFalke

+2

pequeña corrección sin embargo; se supone que debes usar 'presentMoviePlayerViewControllerAnimated' en lugar de' presentModalViewController'. Esto dará como resultado el efecto de animación adecuado que los usuarios esperan de un reproductor de películas. – Till

+0

Gracias @Till, no lo sabía. He editado la muestra de mi código para reflejar este cambio. – jonkroll

2

Necesito mencionar el tipo de fuente de película como el streaming

moviePlayer.movieSourceType = MPMovieSourceTypeStreaming; 
1

Añadir marco de trabajo AVFoundation en la sección de biblioteca de vínculos

En su archivo .h añadir

#import <MediaPlayer/MediaPlayer.h> 
@interface video_liveViewController : UIViewController<MPMediaPickerControllerDelegate,MPMediaPlayback> 

En el archivo .m

NSURL *movieURL = [NSURL URLWithString:@"http://172.31.17.252:1935/live/myStream/playlist.m3u8"]; 
movieController = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL]; 
[self presentMoviePlayerViewControllerAnimated:movieController]; 
[movieController.moviePlayer play]; 
-1

simplemente agrega "MPMovieSourceTypeStreaming" a "moviesourcetype"

Cuestiones relacionadas