Circuito de video suave en iOS

¿Alguien puede sugerir un método mediante el cual pueda lograr un bucle de video sin problemas y sin problemas en iOS? He probado dos methods, los cuales producen una pequeña pausa cuando los loops de video

1) AVPlayerLayer con la configuration de notificación playerItemDidReachEnd seekToTime: kCMTimeZero

Prefiero usar un AVPlayerLayer (por otros motivos), pero este método produce una pausa notable de alnetworkingedor de un segundo entre loops.

2) MPMoviePlayerController con setRepeatMode: MPMovieRepeatModeOne

Esto resulta en una pausa más pequeña, pero aún no es perfecta.

No estoy seguro de a dónde ir desde aquí. ¿Alguien puede sugerir una soultion?

    Puedo concordar con los hallazgos de SamBrodkin.

    [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(myMovieFinishedCallback:) name: MPMoviePlayerPlaybackStateDidChangeNotification object: m_player]; 

    y

     -(void) myMovieFinishedCallback: (NSNotification*) aNotification { NSLog( @"myMovieFinishedCallback: %@", aNotification ); MPMoviePlayerController *movieController = aNotification.object; NSLog( @"player.playbackState = %d", movieController.playbackState ); } 

    También corrigió el problema de no bucle en iOS 5.

    Acabo de funcionar en mi iPad 3 con iOS 5.1.1, base SDK iOS 5.1

    Al configurar el reproductor de películas, configure el modo de repetición en MPMovieRepeatModeNone y luego agregue la notificación

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

    Luego, configure su selector para 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]; } } } 

    Apple realizó algunos cambios importantes a la forma en que el MPMoviePlayerController maneja la carga de files de películas cuando cambiaron de iOS 4 a iOS 5, por lo que no sé si este método funcionará cuando lanzan iOS 6

    Para ver un ejemplo que muestra un bucle sin interrupciones de un video en segundo plano (de un GIF animado) y el cambio entre un par de animaciones de caracteres en primer plano (con un canal alfa), eche un vistazo a seamless-video-looping-on-ios . Intenté usar AVPlayer en el pasado y tuve que renunciar a las soluciones relacionadas con AVPlayer, ya que no funcionaban lo suficientemente bien. Mira esta pregunta SO también iphone-smooth-transition-from-one-video-to-another .

    Investigué el mismo problema que informó el póster original (pequeña pausa en el bucle que estaba rompiendo la sin costura). Por suerte, tuve otra muestra de video que no tenía este comportamiento y encontré la explicación / diferente solo más tarde:

    La banda sonora.

    Sospecho que la initialization del sonido es muy lenta (¿routing?).

    Eliminar la pista de sonido fue la solución más fácil para mí (no se necesita sonido), pero tendré que search más (opciones de mezcla de audio y probar la solución que se ha publicado en este hilo).

    Eric

    Para evitar la brecha cuando se rebobina el video, el uso de varias copys del mismo activo en una composition funcionó bien para mí.

     AVURLAsset *tAsset = [AVURLAsset assetWithURL:tURL]; CMTimeRange tEditRange = CMTimeRangeMake(CMTimeMake(0, 1), CMTimeMake(tAsset.duration.value, tAsset.duration.timescale)); AVMutableComposition *tComposition = [[[AVMutableComposition alloc] init] autorelease]; for (int i = 0; i < 100; i++) { // Insert some copies. [tComposition insertTimeRange:tEditRange ofAsset:tAsset atTime:tComposition.duration error:nil]; } AVPlayerItem *tAVPlayerItem = [[AVPlayerItem alloc] initWithAsset:tComposition]; AVPlayer *tAVPlayer = [[AVPlayer alloc] initWithPlayerItem:tAVPlayerItem];