AVPlayerItem replaceCurrentItemWithPlayerItem Bloqueio

Primeiro um pequeno contexto sobre o aplicativo ...
- Há muitas operações pesadas da interface do usuário envolvendo players de vídeo (principalmente rolagem)
- Os vídeos são dinâmicos e mudam com base em nossa página atual.
- então o vídeo tem que ser dinâmico e continuar mudando e a interface do usuário precisa ser responsiva

Eu estava usando inicialmente umMPMoviePlayerController mas depois, devido a certos requisitos, tive de recorrer ao AVPlayer
Eu fiz o meu próprio invólucro para oAVPlayer .
Para alterar o conteúdo no videoPlayer, é assim que o método se parece na classe wrapper do AVPlayer

/**We need to change the whole playerItem each time we wish to change a video url */
-(void)initializePlayerWithUrl:(NSURL *)url
{
    AVPlayerItem *tempItem = [AVPlayerItem playerItemWithURL:url];

    [tempItem addObserver:self forKeyPath:@"status"
                  options:NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew
                  context:nil];
    [tempItem addObserver:self forKeyPath:@"playbackBufferEmpty"
                  options:NSKeyValueObservingOptionInitial | NSKeyValueObservingOptionNew
                  context:nil];

    //Not sure if this should be stopped or paused under the ideal circumstances
    //These will be changed to custom enums later
    [self setPlaybackState:MPMoviePlaybackStateStopped];
    [self setLoadState:MPMovieLoadStateUnknown];
    [self.videoPlayer replaceCurrentItemWithPlayerItem:tempItem];

    //This is required only if we wish to pause the video immediately as we change the url
    //[self.videoPlayer pause];
}

Agora é claro que tudo estava funcionando bem ...... exceto ..

[self.videoPlayer replaceCurrentItemWithPlayerItem:tempItem];

Parece estar bloqueando a interface do usuário por uma fração de segundo e durante a rolagem, isso torna a interface realmente sem resposta e feia, e essa operação não pode ser executada em segundo plano.

Existe alguma correção ou solução para isso ..?

questionAnswers(2)

yourAnswerToTheQuestion