2017-06-08 5 views
0

Je n'ai pas de problème avec un flux, mais je ne sais pas quand il est en mémoire tampon ou quand le flux est terminé. Y a-t-il un moyen de le déterminer en Objective-C? J'ai trouvé des solutions pour l'audio et j'ai même essayé le AVPlayerItemDidPlayToEndTimeNotification mais ça ne marche pas. Aucune suggestion?ios Savoir quand un livestream hls a joué le dernier morceau

NSString *url = liveStream.stream[@"cdn"]; 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     AVPlayerItem *playerItem = [[AVPlayerItem alloc] 
            initWithURL:[NSURL URLWithString:url]]; 
     [_player replaceCurrentItemWithPlayerItem:playerItem]; 


     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:playerItem]; 



     [_player play]; 
    }); 
} 

-(void)itemDidFinishPlaying:(NSNotification *) notification { 

} 

Répondre

1

En plus de la notification que vous utilisez, vous devez utiliser KVO pour observer le taux de AVPlayer, ainsi que l'état de l'élément AVPlayer actuel du AvPlayer. En observant ces propriétés, vous pouvez créer une sorte de machine d'état où le contrôleur de vue de votre lecteur sait ce qui se passe et peut restaurer à partir de divers changements. Il y a différents états de joueur que vous devez préparer et récupérer à partir des propriétés que vous observez.

Here's an answer on how to check for buffering

Here's an example of a complete AVPLayer

And of course, here's apple's documentation on AVPlayer

Here's the documentation on AVPlayerItem

Lastly, here's the link on KVOController. You'll thank me for this later.

+0

Merci @StevenOjo – user516883