Aller au contenu principal

Description des classes

Le plugin inclut actuellement quatre classes C++.

  • MediaHandlerGISub : qui reçoit et interprète les notifications de l'API salon
  • MediaPlayerComponent : qui réunit les éléments nécessaires pour afficher un flux
  • MediaReceiverComponent : qui garde en mémoire les streams accessibles
  • MediaRPCallerComponent : qui permet d'effectuer des RPC

Un blueprint, MediaPlayerActor, propose une utilisation par défaut de MediaReceiverComponent et MediaPlayerComponent. Il se charge notamment d'appliquer la texture du MediaPlayer à la place d'un Material donné de son Mesh.

MediaHandlerGISub

Basé sur MessageHandlerGISubsystem du plugin ModularBase, ce subsystem reçoit les messages publiés par PersistentCommGISubsystem.

Il interprète deux de ces messages :

  • StartStream : reçu lors de la publication d'un nouveau stream
  • StopStream : reçu lors de l'arrêt d'un stream

MediaPlayerComponent

Il est composé de trois éléments :

  • MediaPlayerInstance, un MediaPlayer instancié dynamiquement et donc indépendant
  • MediaSoundInstance, un composant MediaSound lié à MediaPlayerInstance pour diffuser le son associé à la vidéo
  • MediaTextureInstance, une MediaTexture liée à MediaPlayerInstance qui permet de diffuser la vidéo sur des surfaces

Associé à un acteur, il suffit de lui passer en paramètre le Material à remplacer, Il contient les fonctions nécessaires pour charger une source par URL et arrêter le streaming. Il agit comme une surcouche d'un classique MediaPlayer.

MediaReceiverComponent

Le rôle de ce composant est de stocker les sources accessibles. Il reçoit les informations qui permettent d'identifier un stream et génère l'URL d'accès correspondant.

Les identifiants sont reçus côté serveur via MediaHandler puis diffusés sur chaque client. MediaReceiver crée l'URL correspondant selon l'OS (Android : flux HLS, Windows : flux RTMP).

note

Cet élément manque de flexibilité. Il pourrait être intéressant de former l'URL de streaming ailleurs, il se contenterait alors de stocker les chaînes de caractère. Cependant, il faudrait un intermédiaire supplémentaire car cette construction doit être réalisée indépendamment sur chaque client selon leur OS et la solution.

MediaRPCallerComponent

Les autres composants de ce plugin sont conçus pour être associés à des acteurs non possédés. Ils ne peuvent donc pas effectuer de RPC qui permettraient de les synchroniser entre utilisateurs.

C'est le rôle de ce dernier composant : attaché à un character il permet aux composants précédents d'effectuer des RPC par son biais.