Deux videos AVPlayer désynchronisées (Swift)

J'ai deux éléments AVPlayer() jouent des videos de la même durée (10 secondes). Le but est de les faire boucler et de restr synchronisés les uns avec les autres. Je les ajoute en tant que sous-couches du même UIView et appelle ensuite player.play() sur chacun d'entre eux.

Le problème est cependant que l'exécution de code a évidemment le moindre retard car l'un est appelé après l'autre, les videos sont désynchronisées (bien que quelques millisecondes seulement, cela se remarque).

Je n'ai pas la possibilité de créer un AVMutableComposition comme je l'ai vu d'autres posts suggèrent, donc y at-il de toute façon deux joueurs séparés qui restnt vraiment synchronisés et jouent EXACTEMENT en même time?

Je vous remercie!

Si vous souhaitez effectuer la synchronisation, vous devez charger les videos séparément avec AVPlayer et observer la propriété AVPlayerItemStatus de chaque lecteur. Seulement lorsque tous les joueurs ont le statut .readyToPlay vous pouvez passer en .readyToPlay les joueurs et définir la propriété .rate .

Modifier:

Vous pouvez également les synchroniser en utilisant setRate(_:time:atHostTime:) . N'oubliez pas de commencer à charger datatables média en utilisant preroll(atRate:completionHandler:) avant d'appeler setRate . Fondamentalement:

  • attendez readyToPlay
  • preroll(atRate:completionHandler:) lorsque tous les joueurs sont prêts
  • setRate(_:time:atHostTime:) lorsque tous les joueurs ont été préenregistrés