La animation AVSynchronizedLayer funciona bien con el file local pero no mientras se transmite

Tengo una animation que funciona bien con un file de video local con AVSynchronizedLayer. Ahora, cuando reemploop el file local como con un enlace de transmisión (del mismo file), la animation deja de funcionar por completo. No tengo ni idea de qué está causando esto, lo he probado varias veces y funciona perfectamente en los files locales, pero no mientras se está transmitiendo. ¿Algunas ideas?

EDITAR:

- (void)observeValueForKeyPath:(NSString*) path ofObject:(id)object change:(NSDictionary*)change context:(void*)context{ /* AVPlayerItem "status" property value observer. */ if (context == AVPlayerDemoPlaybackViewControllerStatusObservationContext) { [self syncPlayPauseButtons]; AVPlayerStatus status = [[change objectForKey:NSKeyValueChangeNewKey] integerValue]; switch (status) { /* Indicates that the status of the player is not yet known because it has not tried to load new media resources for playback */ case AVPlayerStatusUnknown: { [self removePlayerTimeObserver]; [self syncScrubber]; [self disableScrubber]; [self disablePlayerButtons]; } break; case AVPlayerStatusReadyToPlay: { /* Once the AVPlayerItem becomes ready to play, ie [playerItem status] == AVPlayerItemStatusReadyToPlay, its duration can be fetched from the item. */ [self initScrubberTimer]; [self enableScrubber]; [self enablePlayerButtons]; } break; case AVPlayerStatusFailed: { AVPlayerItem *playerItem = (AVPlayerItem *)object; [self assetFailedToPrepareForPlayback:playerItem.error]; } break; } } /* AVPlayer "rate" property value observer. */ else if (context == AVPlayerDemoPlaybackViewControllerRateObservationContext) { [self syncPlayPauseButtons]; } /* AVPlayer "currentItem" property observer. Called when the AVPlayer replaceCurrentItemWithPlayerItem: replacement will/did occur. */ else if (context == AVPlayerDemoPlaybackViewControllerCurrentItemObservationContext) { AVPlayerItem *newPlayerItem = [change objectForKey:NSKeyValueChangeNewKey]; /* Is the new player item null? */ if (newPlayerItem == (id)[NSNull null]) { [self disablePlayerButtons]; [self disableScrubber]; } else /* Replacement of player currentItem has occurnetworking */ { /* Set the AVPlayer for which the player layer displays visual output. */ [self.playbackView setPlayer:_player]; /* Specifies that the player should preserve the video's aspect ratio and fit the video within the layer's bounds. */ [self.playbackView setVideoFillMode:AVLayerVideoGravityResizeAspect]; [self syncPlayPauseButtons]; } } else if( context == AVPlayerDemoPlaybackViewControllerCurrentItemObservationContextForDisplay) { AVPlayerLayer *layer = (AVPlayerLayer*) object; if (layer.readyForDisplay){ [layer removeObserver:self forKeyPath:kReadyForAdDisplayKeyT]; AVPlayerItem *item = _player.currentItem; AVSynchronizedLayer *syncedLayer = [AVSynchronizedLayer synchronizedLayerWithPlayerItem:item]; syncedLayer.frame = CGRectMake(0, 0, 568, 320); syncedLayer.backgroundColor = [[UIColor clearColor] CGColor]; //ADDING THE SYNCHRONIZED LAYER TO MY VIEW [self.madnessView addSyncedLayer:syncedLayer player:[self.playbackView player] withGravity:layer.videoGravity]; } } else { [super observeValueForKeyPath:path ofObject:object change:change context:context]; }} 

Aquí es donde agrego la capa AVSynchronized a mi vista personalizada donde se reproduce una animation. El código para Animación es:

 CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; anim.beginTime = AVCoreAnimationBeginTimeAtZero; anim.duration = self.videoDuration; anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; anim.removedOnCompletion = NO; anim.fillMode = kCAFillModeForwards; anim.values = [self.transforms objectAtIndex:adNumber]; UIImageView* imageView = [self.adViews objectAtIndex:adNumber]; [imageView.layer addAnimation:anim forKey:@"transformAnimation"]; imageView.hidden = NO; 

Comtesting el valor self.videoDuration , tuve el mismo problema mientras transmitía mi video: la duración siempre era 0. Espero que esto ayude.

El problema fue con la creación de la capa. Una vez que arreglé eso (es decir, creando la capa / animation después de que el reproductor de video estaba listo para reproducirse), las cosas comenzaron a funcionar como se esperaba.