programming learn guide framework developer desarrollador ios streaming ios-simulator mpmovieplayercontroller ios6

learn - Reproductor de streaming para iOS 6 com.apple.coremedia.networkbuffering error



xcode programming (9)

Tengo problemas para hacer que mi aplicación (reproductor de música y video) se ejecute en el simulador de iOS 6.

Cuando comienzo un video o música, se bloquea y muestra un error en este hilo: com.apple.coremedia.networkbuffering

y esto en la información de registro:

2012-09-13 17:45:09.260 app[32563:c07] [MPAVController] Autoplay: Disabling autoplay for pause 2012-09-13 17:45:09.260 app[32563:c07] [MPAVController] Autoplay: Disabling autoplay 2012-09-13 17:45:09.305 app[32563:c07] [MPAVController] Autoplay: Enabling autoplay 2012-09-13 17:45:09.307 app[32563:c07] handlePlaybackNowPlayingNotification 2012-09-13 17:45:09.308 app[32563:c07] [MPAVController] Autoplay: Likely to keep up or full buffer: 0 2012-09-13 17:45:09.308 app[32563:c07] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up. 2012-09-13 17:45:09.318 app[32563:c07] [MPAVController] Autoplay: Enabling autoplay 2012-09-13 17:45:09.320 app[32563:c07] [MPCloudAssetDownloadController] Prioritization requested for media item ID: 0

Estoy usando MPMoviePlayerController con flujo basado en http, y funciona bien en iOS 4 o iOS 5

¿Alguna idea de cómo arreglarlo?


Estaba teniendo exactamente el mismo problema ...

intente hacer esto justo después de crear una instancia de su reproductor:

[player prepareToPlay];

Debería llamarse automáticamente cuando llamas a play, pero aparentemente en iOS 6, algo sale mal si no lo llamas explícitamente.

En mi caso resolvió el problema.


Estoy teniendo el mismo problema con MPMoviePlayerController para ios6. Así que cambié mi código a fllowing y ahora está funcionando bien ...

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"mp4"]]; 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];


He verificado utilizando xcode 4.5 + SDK6.0 en comparación con xcode 4.4.1 + SDK5.1 en las combinaciones que hay un problema con la versión ios 6 del MPMoviePlayerController. Aunque solo he trabajado con iPads.

Aquí están mis observaciones: Nunca he visto el video reproducido en iOS 6.0 con mi código que usa MPMoviePlayerController. - con xcode 4.4.1 y SDK 5.1, he visto el código de trabajo en las versiones de iOS 5.1, 5.0 y 4.3. - con xcode 4.5 y SDK 6.0, el reproductor siempre falla en el simulador, pero la mayoría de las instalaciones en el dispositivo iOS 5.1 funcionan. Seguí reinstalando la aplicación en el dispositivo iOS 5.1 y probando el reproductor. Sólo falló una vez.

Aquí están mis observaciones cuando el jugador falló: - algunas veces cuando el jugador falló, vi los registros que mencionaste anteriormente. Otras veces, ni siquiera vi los registros. - Puse un punto de interrupción en la función que recibió la notificación MPMoviePlayerPlaybackDidFinishNotification. Luego busqué el errorLog en el reproductor y no había ninguno. Busqué MPMoviePlayerPlaybackDidFinishReasonUserInfoKey y era 0 (MPMovieFinishReasonPlaybackEnded). ¡así que MPMoviePlayerController no tenía idea de que algo había salido mal!

Conclusión: ios6 y / o SDK 6 tienen un error.


Lo que estás observando no es un choque sino una excepción. Es muy probable que tenga un punto de interrupción de excepción habilitado y eso lo lleva a la suposición de que la aplicación falla.

Esa excepción en realidad es manejada (cought) adecuadamente por el SDK y no causa un bloqueo de la aplicación.

Tenga en cuenta que esto solo ocurre en el simulador, no en el dispositivo.

El problema está estrechamente relacionado con este problema: what-does-this-gdb-output-mean . La diferencia es que ya no recibirás esos mensajes de error, pero las excepciones aún se lanzan (pero también son una trampa).


También estoy usando el MPMoviePlayerViewController para mostrar videos en vivo en mi aplicación y MPMoviePlayerViewController la misma lista de errores que la anterior. Descubrí que MPMoviePlayer no admite datos de mayor tamaño para mostrar video, pero si usa datos de video más pequeños funciona bien, no genera errores. De hecho, no es un problema de preparación para jugar y reproducir propiedades del reproductor de películas.

Si necesita mostrar datos más grandes, use webview en su aplicación.


Tengo un problema con el código de abajo, el reproductor aparece en pantalla completa, pero justo después de eso, se cierra y no reproduce el video en absoluto.

NSURL * url = [NSURL URLWithString: @ " http://streaming.disponivel.uol.com.br/video360p2/288148-1192657.mp4 "];

_player = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; [_player.moviePlayer setMovieSourceType:MPMovieSourceTypeFile]; [_player.moviePlayer setControlStyle:MPMovieControlStyleDefault]; [_player.moviePlayer setFullscreen:YES animated:YES]; [self presentMoviePlayerViewControllerAnimated:_player]; [_player.moviePlayer prepareToPlay]; [_player.moviePlayer play];


Todavía no he resuelto este problema, pero parece estar relacionado en mi caso particular cuando MPMoviePlayerController va a entrar en pantalla completa o cuando existe un posible retraso para el controlador.

No estoy transmitiendo contenido desde la web, el contenido está en el dispositivo, por lo que inicialmente el contenido se muestra bien en la vista.

Supongo que han implementado una nueva característica en MPMoviePlayerController para evitar el "tiempo muerto" durante la reproducción. "He visto algunas aplicaciones que simplemente se cuelgan cuando los datos de la película se desconectan o si se sale del alcance de su wifi"

Mi intento de resolver este problema será mirar el mensaje de notificación enviado a:

(void)moviePlayBackDidFinish: (NSNotification*)notification

Esto se hace consultando el diccionario de información del usuario.

NSDictionary *userInfo = [notification userInfo];

el valor para MPMoviePlayerPlaybackDidFinishReasonUserInfoKey es 0 en el caso de este tipo de falla.

Es un punto de partida. Mi idea es volver a instalar la película en este momento sobre este fallo único.

Te mantendré informado sobre los resultados.


primero había hecho algo como abajo

[self.player.moviePlayer prepareToPlay]; [self.player.moviePlayer play]; self.player.moviePlayer.shouldAutoplay = YES;

y cuando eliminé la línea de abajo

self.player.moviePlayer.shouldAutoplay = YES;

Problema fue resuelto.


NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"sample" ofType:@"mp4"]]; 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];

Nota: Antes de iOS 6, no es necesario llamar a [moviePlayer.moviePlayer play]; una vez que agregue la vista del reproductor a una vista, comenzará a reproducirse, pero en iOS 6, debe llamar explícitamente a la función de reproducción