visual studio samples prebuilt examples ejemplos ejemplo apps objective-c ios video mpmovieplayercontroller avfoundation

objective-c - studio - xamarin prebuilt apps



iOS: cómo usar MPMoviePlayerController (4)

Prueba agregar

[player prepareToPlay];

después

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url];

Puede leer más sobre MPMoviePlayerController en la documentación de Apple: http://developer.apple.com/library/ios/#documentation/mediaplayer/reference/MPMoviePlayerController_Class/Reference/Reference.html#//apple_ref/doc/c_ref/MPMoviePlayerController

Creé un proyecto en blanco (iOS) y lo puse en mi viewDidLoad:

NSString *moviePath = [[NSBundle mainBundle] pathForResource:@"Movie" ofType:@"m4v"]; MPMoviePlayerViewController *playerController = [[MPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:moviePath]]; [self presentMoviePlayerViewControllerAnimated:playerController]; [playerController.moviePlayer play];

Cuando la aplicación comienza todo lo que obtengo es una pantalla en blanco con mensajes de error en el registro :

<Error>: CGContextSaveGState: invalid context 0x0 <Error>: CGContextClipToRect: invalid context 0x0 <Error>: CGContextTranslateCTM: invalid context 0x0 <Error>: CGContextDrawShading: invalid context 0x0 <Error>: CGContextRestoreGState: invalid context 0x0 Warning: Attempt to present <MPMoviePlayerViewController: 0x821e3b0> on <ViewController: 0x863aa40> whose view is not in the window hierarchy!

... y un grupo de líneas relacionadas con la desactivación de la reproducción automática. Especialmente no entiendo la línea sobre la vista que no forma parte de la jerarquía, ya que es un proyecto de iOS "Aplicación de vista única" en blanco y el código está en ViewController.m. ESTÁ en la jerarquía de vista.

Sé con certeza que el archivo de película en sí no es el problema porque lo obtuve del código de muestra de Apple en MPMoviePlayer. Y aunque (aparentemente) intenté todo lo escrito en la muestra, simplemente no pude hacer que el jugador trabajara.

Aquí hay otro intento, esta vez con MPMoviePlayerController (no MPMoviePlayerViewController):

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:url]; [player setContentURL:url]; [player setMovieSourceType:MPMovieSourceTypeFile]; [[player view] setFrame:self.view.bounds]; [player view].backgroundColor = [UIColor greenColor]; player.scalingMode = MPMovieScalingModeNone; player.controlStyle = MPMovieControlModeDefault; player.backgroundView.backgroundColor = [UIColor whiteColor]; player.repeatMode = MPMovieRepeatModeNone; [self.view addSubview: [player view]]; [player play];

Resultado similar, con pantalla blanca y errores. Por favor ayuda....


Prueba esto:

//Hello guise :- complete process here. //1. add framework in .h MediaPlayer/MediaPlayer.h //2.add delegate in @interface, MPMediaPickerControllerDelegate //3.@property (retain, nonatomic) MPMoviePlayerViewController *moviePlayerController; //4.and synthesize in .m - @synthesize moviePlayerController; //5.IN - tableViewdelegateMethod - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath{ //given path for song NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory1 = [paths1 objectAtIndex:0]; NSString *strPath = [NSString stringWithFormat:@"%@/%@",documentsDirectory1,[movieArray objectAtIndex:indexPath.row]]; NSLog(@"strPath %@",strPath); //path for song. //convert path in NSURL. NSURL *videosURL = [NSURL fileURLWithPath:strPath]; moviePlayerController = [[MPMoviePlayerViewController alloc]initWithContentURL:videosURL]; [self presentMoviePlayerViewControllerAnimated:moviePlayerController]; [moviePlayerController.moviePlayer play]; } //play song on UITableViewCell click.


Resulta que todo lo que tenemos que hacer es esto:

NSURL *movieURL = [NSURL URLWithString:@"http://example.com/somefile.mp4"]; movieController = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL]; [self presentMoviePlayerViewControllerAnimated:movieController]; [movieController.moviePlayer play];

  • movieController es una instancia de MPMoviePlayerViewController declarada en el archivo .h.

  • Importante : al definir la URL, utilice el método URLWithString de URLWithString si desea acceder al archivo a través de una red y utilice el archivoUrlWithPath de fileUrlWithPath si tiene el archivo localmente.

  • [movieController.moviePlayer play] no es necesario y el reproductor comenzará independientemente si no configuró la reproducción automática en NO, pero observé que si pone play en ella, comienza un poco más rápido. Esto podría ser solo una coincidencia.

  • Si desea saber cuándo el usuario tocó el botón hecho (el reproductor se cerrará automáticamente) debe saber que se -viewDidAppear en el controlador de vista que aparece cuando se descarta el jugador. Puedes establecer una variable BOOL cuando el jugador se inicie y verificar el BOOL en tu -viewDidAppear para que sepas que -viewDidAppear se invocó porque el jugador fue descartado. Alternativamente, puede registrarse para la notificación MPMoviePlayerDidExitFullScreen , pero eso no funcionó para mí.

O, si esto no funciona, puede hacer lo siguiente

self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"something" ofType:@"mp4"]]]; [self.moviePlayer.view setFrame:CGRectMake(0, 0, 320, 320)]; [self.moviePlayer play]; [self.view addSubview:self.moviePlayer.view];

  • self.movieplayer es una instancia de MPMoviePlayerController (no MPMoviePlayerViewController). En mi experiencia, es importante declararlo como una propiedad (como así: @property (strong, nonatomic) MPMoviePlayerController *moviePlayer; ) en lugar de un simple ivar, porque a veces simplemente no funciona si es un ivar

  • establecer el marco también es importante, porque si no lo configuramos, el video no aparecerá en absoluto. El marco puede ser cualquier cosa siempre que lo que definas esté dentro de los límites de tu vista

  • Importante : como en el caso anterior, al definir la URL use el método URLWithString de URLWithString si desea acceder al archivo a través de una red y use el archivoUrlWithPath de fileUrlWithPath si tiene el archivo localmente .


Tienes que intentarlo......

NSString *path = [[NSBundle mainBundle]pathForResource:@"test" ofType:@"mp4"]; player = [[MPMoviePlayerViewController alloc]initWithContentURL:[NSURL fileURLWithPath:path]]; [player.view setFrame:CGRectMake(0, 0, 320, 320)]; [self presentMoviePlayerViewControllerAnimated:player]; [player.moviePlayer play]; [self.view addSubview:player.view];