2011-01-02 19 views
12

Gracias de antemano por cualquier ayuda, soy novato y agradecería cualquier ayuda aquí .. Tengo este código para reproducir una película y funciona muy bien. ¿Alguien ME PUEDE decir cómo hacer que este ciclo de película y reproducir desde el principio no pare (cualquier código ayudaría). También me gustaría saber cómo reproducir 2 películas, una después de la otra, de preferencia con una transición gradual o suave. Gracias por cualquier ayudaMPMoviePlayerController: ¿Cómo puedo hacer mi video loop?

#import "MyAppViewController.h" 

@implementation MyAppViewController 

-(IBAction)button:(id)sender{ 
NSString *path = [[NSBundle mainBundle] 
     pathForResource:@"mymovie" ofType:@"mp4"]; 

player = [[MPMoviePlayerViewController alloc] 
    initWithContentURL:[NSURL fileURLWithPath:path]]; 

[self presentMoviePlayerViewControllerAnimated:player]; 

} 
+0

Debe formatear su código próxima vez. –

Respuesta

23

Establecer la propiedad repeatMode de su MPMoviePlayerController a MPMovieRepeatModeOne

player = [[MPMoviePlayerViewController alloc] 
      initWithContentURL:[NSURL fileURLWithPath:path]]; 
player.moviePlayer.repeatMode = MPMovieRepeatModeOne; 
+0

Lo hice y ahora recibo un error de línea en: player.repeatMode = MPMovieRepeatModeOne; >>>> Solicitar miembro 'repeatMode' es algo que no es una estructura o unión- <<<< Creo que estamos cerca ... ¿puedes ayudar? –

+0

@Jay L intente mi respuesta ahora - debería funcionar. –

+0

Impresionante, Funciona muy bien. Ok una pregunta más. Necesito poder agregar un temporizador a mi película; es decir, hacer que se detenga después de un tiempo establecido. Me gustaría utilizar un control deslizante para eso, ¿alguna idea de cómo agregar eso? –

1

Para el temporizador puede crear una variable Int que tiene el valor de su deslizador y luego usar un performSelector afterDelay :

int delayInt = 8; // Substitute the 8 for the value of your slider 
[self performSelector:@selector(myMethod) withObject:nil afterDelay:delayInt]; 

Y luego en su "myMethod"

-(void) myMethod{ 
//the code to stop your player and remove view controller 
} 
20

MPMovieRepeatModeOne es bueno pero no reproduce el video muy suavemente. Prueba esto a continuación (copiado de otro post):

(acabo de recibir esta trabajando en mi iPad 3 con iOS 5.1.1, la base SDK de iOS 5.1.)

Al configurar el reproductor de películas, establece la repetición modo de MPMovieRepeatModeNone a continuación, añadir la notificación

[[NSNotificationCenter defaultCenter] addObserver:self 
      selector:@selector(moviePlayerDidFinish:) 
      name:MPMoviePlayerPlaybackDidFinishNotification 
          object:self.moviePlayer]; 

a continuación, configurar el selector de filtrar cuando la película termina de reproducirse:

- (void)moviePlayerDidFinish:(NSNotification *)note 
{ 
    if (note.object == self.moviePlayer) { 
     NSInteger reason = [[note.userInfo objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] integerValue]; 
     if (reason == MPMovieFinishReasonPlaybackEnded) 
     { 
      [self.moviePlayer play]; 
     } 
    } 
} 
+2

Lo extraño para mí fue que esto funcionó muy bien en el simulador, pero al intentarlo en un teléfono real, a veces se bifurcaba y algunas veces se quedaba atascado al final. Sospechaba una condición de carrera (donde se llama a jugar cuando en realidad la película todavía no está terminada). Cuando agregué un NSTimer para retrasar la llamada del método de juego, de hecho se realizó un bucle (pero con un hickup al final), que no es óptimo. ¿Tal vez sea por el códec del archivo .mp4? – morksinaanab

+0

Es una buena práctica usar: [self.moviePlayer prepareToPlay]; Esto ayuda a optimizar el video y eliminar cualquier problema de procesamiento no deseado. –

+0

Ya no funciona con iOS8 +. El espacio es tan largo como establecer el modo repeat en .One – Mike

Cuestiones relacionadas