Événements joueur

Dans cette rubrique, vous découvrirez les différents types d'événements associés à Brightcove Player.

Aperçu

Le Brightcove Player a de nombreux événements pour vous permettre de contrôler la lecture vidéo. Cette rubrique fournit une vue d'ensemble des différents types d'événements.

Une liste complète des événements Brightcove Player se trouve dans le API Player Methods / Events document de référence. Ce document reflète les événements qui font partie du code réel qui compose le lecteur.

Événements médiatiques

le Norme de vie HTML document est une excellente ressource pour obtenir des informations sur le développement de HTML et les API nécessaires aux applications Web. Il s'agit d'un document «vivant» tenu à jour par le groupe de travail sur la technologie des applications hypertextes Web (WHATWG), qui est une communauté croissante de personnes intéressées par l'évolution du Web.

Le Brightcove Player s'exécute au-dessus du framework HTML, ce qui déclenche les éléments suivants Événements médiatiques.

Voici quelques termes associés aux événements de ce document:

bloqué

Un MediaController est considéré comme bloqué si la lecture a été mis en pause. Un élément multimédia est bloqué si son contrôleur est un contrôleur multimédia bloqué.

MediaController

UNE MediaController est un objet qui coordonne la lecture de plusieurs éléments multimédias.

élément média

UNE élément média présente des données audio, ou des données vidéo et audio, à l'utilisateur.

esclave

Par défaut, chaque élément multimédia n'a pas MediaController. Lorsque des éléments multimédias sont associés à un MediaController , on dit qu'ils sont esclave au contrôleur. Le contrôleur modifie la vitesse de lecture et le volume de chacun des éléments multimédias qui lui sont asservis. Si l'un des éléments asservis cale de manière inattendue, le contrôleur arrêtera les autres éléments asservis.

Événements de mise en mémoire tampon et de QoS

Voici un sous-ensemble d'événements liés à la mise en mémoire tampon et à la qualité de service (QoS):

Nom de l'événement Description
progress Mise en mémoire tampon (chargement) des données vidéo
waiting Attendre momentanément les données vidéo demandées
stalled Tampon bloqué
error Une erreur s'est produite lors du chargement de la vidéo
playing La lecture a repris après une pause ou un délai de téléchargement
ratechange La vitesse de lecture a changé (peut être manuelle ou automatique)

Événements de démarrage

Un certain nombre d'événements se produisent lorsque le lecteur est initialisé et se prépare à lire une vidéo. Ils sont répertoriés ici dans l'ordre où ils seront expédiés:

  • :loadstart Envoyé lorsque le lecteur est initialisé, et s'il est réinitialisé dans le cas de lui donner une nouvelle source à jouer

  • :loadedmetadata Envoyé lorsque le joueur dispose des informations de durée et de dimension initiales, en d'autres termes, lorsque le premier segment est téléchargé. Pour les vidéos en direct, le loadedmetadata l'événement ne sera pas diffusé tant que l'utilisateur n'aura pas cliqué sur jouer En effet, les vidéos en direct ne commencent pas à télécharger des segments tant que l'utilisateur ne clique pas sur la lecture.
  • :loadeddata Envoyé lorsque le lecteur a téléchargé des données à la position de lecture actuelle

Le CodePen suivant montre les événements de démarrage écoutés et distribués. Notez que si vous passez la souris sur CodePen, vous pouvez cliquer sur le bouton REDIFFUSION bouton situé en bas à droite pour voir à nouveau l'envoi des événements. Si vous souhaitez tester le code, cliquez sur le bouton Modifier sur CODEPEN lien dans l'en-tête pour passer à l'environnement d'édition. Vous pouvez cliquer sur le JS bouton pour voir le JavaScript qui ajoute les écouteurs d'événements.

Voir le stylo Démo des événements de démarrage par Brightcove Learning Services (@bcls ) sur CodePen.

méthode ready ()

le ready() La méthode a une double personnalité en ce qu'elle ressemble à un événement, mais vous l'utilisez comme une méthode. Cette méthode / cet événement signifie que le joueur est prêt à recevoir des commandes.

le ready() diffère des écouteurs d'événements en ce que si la ready l'événement s'est déjà produit, il déclenchera le ready() méthode immédiatement. Vous verrez souvent la méthode utilisée comme suit pour fournir le point de départ du développement avec Brightcove Player:

videojs.getPlayer('myPlayerID').ready(function(){
  var myPlayer = this;
});

ready () vs on ('sharedmetadata', ...)

Notez que l'utilisation ready() fonctionne correctement si vous souhaitez interagir avec le lecteur, par exemple ajouter un plugin par programmation. Si vous souhaitez interagir immédiatement avec la vidéo, utilisez par exemple play() , l'extrait de code ci-dessus ne fonctionnera pas toujours correctement. Une meilleure approche serait d'écouter les loadedmetadata pour interagir avec la vidéo, par exemple:

videojs.getPlayer('myPlayerID').on('loadedmetadata',function(){
  var myPlayer = this;
  myPlayer.play();
});

En résumé, pour interagir avec le joueur, vous pouvez utiliser ceci:

videojs.getPlayer('myPlayerID').ready()

Si vous souhaitez interagir immédiatement avec la vidéo dans le lecteur, utilisez ceci:

videojs.getPlayer('myPlayerID').on('loadedmetadata',function(){})

Événements plein écran

UNE fullscreenchange L'événement est émis par le lecteur lorsqu'il est basculé vers ou depuis le mode plein écran. Le même événement est diffusé, que le joueur passe en plein écran ou revienne en mode normal, s'il est important pour vous de savoir ce qui s'est passé, utilisez le player.isFullscreen() méthode pour déterminer si le lecteur est actuellement en mode plein écran.

Le Codepen ci-dessous illustre comment procéder.

Voir le stylo Événements plein écran du lecteur Brightcove par Brightcove Learning Services (@bcls ) sur CodePen.

Événements publicitaires

Pour inclure des bibliothèques de publicités et des fonctionnalités dans votre lecteur, vous pouvez utiliser le Plug-in IMA3 ou la Plugin FreeWheel. Ceci est construit au-dessus du cadre des annonces videojs (videojs-contrib-ads). Ces deux plugins publicitaires peuvent diffuser les événements publicitaires indiqués dans le tableau suivant. Chacun a également des événements spécifiques à la mise en œuvre.

Événement Expédié lorsque :
demande d'annonces Sur demande et données publicitaires.
ads-load Lorsque des données publicitaires sont disponibles suite à une demande d'annonce.
ads-ad-démarré Une annonce a commencé à être diffusée.
annonces ad-terminées Une annonce a fini de jouer.
ads-pause Une annonce est suspendue.
ads-play Une annonce est reprise à partir d'une pause.
annonces premier quartile L'annonce a joué 25 % de sa durée totale.
ads-milieu L'annonce a diffusé 50 % de sa durée totale.
ads-troisième quartile L'annonce a diffusé 75 % de sa durée totale.
ads-clic Un spectateur a cliqué sur l'annonce en lecture.
ads-volumechange Le volume de l'annonce en lecture a été modifié.
ads-pod-started La première annonce d'un espace publicitaire linéaire (un groupe d'annonces séquencé) a démarré.
ads-pod-terminés La dernière annonce d'un espace publicitaire linéaire (un groupe d'annonces séquencé) est terminée.
ads-allpods-terminé Toutes les annonces linéaires ont fini de jouer.

Événement bc-catalog-error

Il est possible que la gestion des erreurs dans la ready() section normale du bloc de script puisse causer des problèmes. Par exemple, il peut arriver que l' bc-catalog-error événement soit distribué avant que le joueur soit prêt, et si vous écoutez l'erreur dans la ready() section, vous ne serez pas en mesure de gérer l'erreur. Ce problème peut se produire lorsque vous utilisez le géofiltrage, une vidéo n'est pas publiée, une vidéo est hors de la plage de planification ou dans un autre compte. Pour une discussion complète et des exemples de manipulation du bc-catalog-error événement, voir le Catalogue des joueurs document.

progression et mise à jour du temps

Une confusion peut survenir quant aux différences entre les progress et timeupdate événements. Le Brightcove Player s'appuie sur la vidéo HTML5, et dans cette norme, le progress l'événement est envoyé lorsque le navigateur télécharge des données. le timeupdate L'événement est distribué lorsque la position de lecture actuelle a changé.

Cela peut prêter à confusion pour les utilisateurs du Smart Player de Brightcove, car dans cette API, le progress l'événement fait quoi timeupdate fait dans l'API Brightcove Player.

Attention lors de la suppression des écouteurs timeupdate

Dans certains cas, vous souhaiterez peut-être supprimer un écouteur d'événement que vous avez ajouté au timeupdate un événement. Un cas d'utilisation est présenté dans le Exemple de lecteur Brightcove: Inscription pour jouer après l'aperçu document. Dans cette situation, vous souhaitez que le lecteur se mette en pause dans une certaine période et timeupdate pour le contrôle de l'heure, puis utilisez une définition de fonction de gestionnaire d'événements anonyme. Vous ne souhaitez mettre en pause qu'une fois, vous devez donc supprimer l'écouteur d'événements. Vous ne voulez PAS simplement faire:

myPlayer.off('timeupdate');

Bien sûr, cela supprime TOUS les écouteurs d'événements timeupdate , et parmi d'autres problèmes, cela empêchera la minuterie d'avancer. Ce qui doit être fait est de créer une fonction en utilisant la syntaxe de définition de fonction normale (une déclaration de fonction), puis de supprimer JUSTE le seul écouteur d'événement. Le code abrégé est affiché ici:

 // Add the event handler
myPlayer.on('timeupdate', timeupdateHandler);

// Handle the event then remove JUST this event listener on timeupdate
function timeupdateHandler(evt) {
  ...
  myPlayer.off('timeupdate', timeupdateHandler);
}

Événements analytiques

Un événement est déclenché chaque fois qu'une balise est envoyée au collecteur de données Analytics. Vous pouvez écouter n'importe quelle balise ou des balises spécifiques.

Écoutez toutes les balises

Vous pouvez suivre toutes les balises d'analyse envoyées en écoutant le analytics-beacon un événement:

player.on('analytics-beacon', function(e) {
  videojs.log('sent a(n) ' + e.params.event + ' beacon!', e.params);
});

Écoutez des balises spécifiques

Vous pouvez suivre les balises d'analyse spécifiques envoyées en écoutant le analytics-beacon-{beacon_name} un événement.

{beacon_name} est le nom de l'un des événements du lecteur qui sont envoyés au collecteur de données. Pour une liste complète de ces événements, consultez le Référence de l'API de collecte de données.

Exemple

player.on('analytics-beacon-video-impression', function(e) {
  videojs.log('sent an impression beacon!', e.params);
});

Pas de prise en charge du chaînage de méthodes

Depuis la version 6 de la méthode Brightcove Player, le chaînage avec des événements n'est plus pris en charge. Cela signifie que vous NE POUVEZ PAS faire ceci:

player.on(event, function () {})
.on(event, function () {})
.on(event, function () {})
.on(event, function () {});