Catalogue des joueurs

Dans cette rubrique, vous apprendrez à utiliser Brightcove Player catalogue bibliothèque de méthodes pour envoyer des requêtes au catalogue Video Cloud. La bibliothèque du catalogue permet d'obtenir facilement des informations sur les médias Video Cloud et de les charger dans un lecteur.

Syntaxe de base

La syntaxe de base pour utiliser le catalog est comme suit:

  • Méthodes: playerName.catalog.methodName()

Plusieurs des catalog Les méthodes passeront un objet de paramètres qui définissent la demande. le catalog objet de paramètres est défini dans la section suivante et sera référencé dans les descriptions des méthodes, le cas échéant.

catalog objet de paramètres

Le tableau suivant décrit les propriétés du CatalogParams objet. Ce véritable objet (pas un constructeur) définit le format des paramètres à utiliser avec de nombreuses demandes de catalogue.

Prénom Type Description
type string

Le type de demande à faire. Doit être l'un des vidéo , playlist , ou chercher.

policyKey string

Clé de stratégie de ce compte. Ce sera par défaut la clé de stratégie du joueur.** Notez que si vous transmettez un ID de compte différent en tant que paramètre, vous devez également transmettre la clé de stratégie correspondante pour ce compte.

deliveryConfigId string

L'identifiant des règles de livraison. Voir Aperçu: Règles de livraison.

[id] string

Un identifiant de vidéo ou de playlist ou un identifiant de référence précédé de "ref:". Required pour les demandes de vidéos et de listes de lecture. DEPRECATED: Pour la compatibilité descendante, ceci est pris en charge en tant que requête de recherche au lieu q. Cela peut être fourni en tant que sous-objet, qui est également un CatalogParams objet, qui peut être utilisé pour fournir des paramètres.

[q] string

Une requête de recherche. Required pour les demandes de recherche, ignoré pour les autres.

[adConfigId] string

Une vidéo pourrait ID de configuration de l'annonce SSAI.

[tveToken] string

Un jeton TVE facultatif à envoyer en tant que paramètre de chaîne de requête.

[limit] string

Pris en charge pour playlist et search types uniquement. Limitez le nombre de vidéos renvoyées.

[offset] string

Pris en charge pour playlist et search types uniquement. Le nombre de vidéos à ignorer.

[sort] string

Pris en charge pour search tapez uniquement. Comment les vidéos doivent être triées pour les recherches.

[bcovAuthToken] string À utiliser avec Brightcove Playback Authorization Service (PAS).

getVideo( ) méthode

le getVideo(params | videoID,callback,[adConfigId]) => XMLHttpRequest méthode fait un catalog demande la vidéo avec l'ID spécifié et appelle un rappel lorsque la demande se termine.

Paramètres

  • :params | videoID Un objet de type catalog paramètres OU une chaîne contenant l'ID vidéo ou un ID de référence préfixé par ref:.

  • callback: Fonction qui sera appelée à la fin de la requête, qu'elle soit réussie ou non. Il est invoqué avec deux arguments :

    • Le premier argument contiendra un objet error, si une erreur se produit. Cet objet contient des détails sur l'erreur. Si aucune erreur ne se produit, cet objet est null.

    • Si aucune erreur ne se produit, le deuxième argument est l'objet vidéo demandé. Si une erreur se produit, cette valeur contient la chaîne vide.

  • [adConfigId]: OBSOLÈTE ID de configuration de la publicité Video Cloud qui sera transmis à l'API Playback. Au lieu de cela, transmettez l'AdConfigID dans l'objet params initial.

Valeur renvoyée

L' catalog appel lui-même renvoie un objet de type XMLHttpRequest. Un exemple de cet objet suit:

objet de demande

Bien que l'appel renvoie un XMLHttpRequest objet, vous ne traiterez probablement jamais cet objet. La raison en est que dans la fonction de rappel, la réponse JSON est automatiquement analysée et un objet utilisable est ce qui est passé à la fonction de rappel, dans ce cas un objet vidéo.

Exemple : ID vidéo sous forme de chaîne

L'exemple suivant montre une utilisation du getVideo() méthode:

<video-js id="myPlayerID"
  data-account="1507807800001"
  data-player="3bc25a34-086a-4060-8745-dd87af3d53b4"
  data-embed="default"
  data-video-id=""
  controls=""></video-js>
<script src="https://brightcove.net/1507807800001/3bc25a34-086a-4060-8745-dd87af3d53b4_default/index.min.js"></script>


<script type="text/javascript">
  videojs.getPlayer('myPlayerID').ready(function() {
    var myPlayer = this;
    myPlayer.catalog.getVideo('2114345471001', function(error, video){
    //deal with error
    myPlayer.catalog.load(video);
  });
});
</script>

Exemple : Utilisation de catalogParams

L'équivalent du code juste au-dessus, mais en utilisant l'objet CatalogParams apparaît comme suit:

<script>
  videojs.getPlayer('myPlayerID').ready(function() {
    var myPlayer = this,
      catalogParams = {};
    catalogParams.type = 'video';
    catalogParams.id = '2114345471001';
    myPlayer.catalog.getVideo(catalogParams, function(error, video){
    //deal with error
    myPlayer.catalog.load(video);
  });
});
</script>

getPlaylist( ) méthode

le getPlaylist(params | playlistID,callback,[adConfigId]) => XMLHttpRequest méthode fait un catalog demande la liste de lecture avec l'ID spécifié et appelle un rappel lorsque la demande se termine.

Paramètres

  • :params | playlistID Un objet de type catalog paramètres OU une chaîne contenant l'ID de la playlist ou un ID de référence préfixé par ref:.

  • callback: Fonction qui sera appelée à la fin de la requête, qu'elle soit réussie ou non. Il est invoqué avec deux arguments :

    • Le premier argument contiendra un objet error, si une erreur se produit. Cet objet contient des détails sur l'erreur. Si aucune erreur ne se produit, cet objet est null.

    • Si aucune erreur ne se produit, le deuxième argument est l'objet vidéo demandé. Si une erreur se produit, cette valeur contient la chaîne vide.

  • [adConfigId]: OBSOLÈTE ID de configuration de la publicité Video Cloud qui sera transmis à l'API Playback. Au lieu de cela, transmettez l'AdConfigID dans l'objet params initial.

Valeur renvoyée

le catalog l'appel lui-même renvoie un XMLHttpRequest. Bien que l'appel renvoie un XMLHttpRequest objet, vous ne traiterez probablement jamais cet objet. La raison en est que dans la fonction de rappel, la réponse JSON est automatiquement analysée et un objet utilisable est ce qui est passé à la fonction de rappel, dans ce cas un objet de playlist.

Exemple

L'exemple suivant montre une utilisation du getPlaylist() la méthode suit:

<video-js id="myPlayerID"
  data-account="1752604059001"
  data-player="f50a2d3c-af51-4d8c-84e3-0c7cdec0edbe"
  data-embed="default"
  controls=""></video-js>

<script src="https://players.brightcove.net/1752604059001/f50a2d3c-af51-4d8c-84e3-0c7cdec0edbe_default/index.min.js"></script>

<script type="text/javascript">
  videojs.getPlayer('myPlayerID').ready(function() {
    var myPlayer = this;
    myPlayer.catalog.getPlaylist('1754200320001', function(error, playlist){
      //deal with error
      myPlayer.catalog.load(playlist);
    })
  });
</script>

méthode load ()

le load(mediaobject) La méthode charge un objet vidéo ou playlist dans le lecteur. Cette méthode mettra à jour le lecteur mediainfo propriété et mettez à jour la source vidéo et l'affiche. Dans la plupart des cas, vous appelleriez cette méthode avec le résultat d'un appel à getVideo() ou getPlaylist(). Si vous souhaitez être averti quand mediainfo a été mis à jour, écoutez le loadstart un événement.

Paramètres

  • :mediaobject Un objet vidéo ou playlist à charger. Cet objet doit avoir le même format que l'objet de réponse d'un appel à getVideo() ou getPlaylist()méthode.

Exemple

L'exemple suivant récupère une vidéo et la charge dans le lecteur.

<video-js id="myPlayerID"
  data-account="1507807800001"
  data-player="3bc25a34-086a-4060-8745-dd87af3d53b4"
  data-embed="default"
  data-video-id=""
  controls=""></video-js>
<script src="https://players.brightcove.net/1507807800001/3bc25a34-086a-4060-8745-dd87af3d53b4_default/index.min.js"></script>


<script type="text/javascript">
  videojs.getPlayer('myPlayerID').ready(function() {
    var myPlayer = this;
    myPlayer.catalog.getVideo('2114345471001', function(error, video) {
      //deal with error
      myPlayer.catalog.load(video);
    });
  });
</script>

méthode get ()

le get(params, [callback]) ⇒ Promise | XMLHttpRequest méthode permet de rechercher catalog en utilisant CMS / API de lecture: Syntaxe de recherche de vidéos. Sous le capot, cette méthode utilise l'API Playback.

Paramètres

  • params: Objet de catalog paramètresde type.

  • callback: Fonction qui sera appelée à la fin de la requête, qu'elle soit réussie ou non. Il est invoqué avec deux arguments :

    • Le premier argument contiendra un objet error, si une erreur se produit. Cet objet contient des détails sur l'erreur. Si aucune erreur ne se produit, cet objet est null.

    • Si aucune erreur ne se produit, le deuxième argument est l'objet vidéo demandé. Si une erreur se produit, cette valeur contient la chaîne vide.

Valeur renvoyée

La méthode renvoie un Promise ou un objet de type XMLHttpRequest. Si vous utilisez une fonction de rappel, la réponse JSON est automatiquement analysée et un objet utilisable est ce qui est passé à la fonction de rappel. La structure exacte des données renvoyées dans le rappel varie en fonction de ce qui a été recherché.

Exemple de rappel

L'exemple suivant illustre les actions suivantes :

  1. Construit un objet catalogParams qui sera passé en argument avec la fonction. La recherche interrogera les vidéos avec la chaîne Desert dans la vidéo name.

  2. Effectue la recherche à l'aide du get() méthode. Notez que la fonction de rappel utilisera les paramètres nommés errorObj et videosReturned.

  3. Utilisez playlist() cette méthode pour attribuer les vidéos renvoyées au lecteur Brightcove.

<script type="text/javascript">
  videojs.getPlayer('myPlayerID').ready(function() {
    var myPlayer = this,
      catalogParams = {};
    catalogParams.type = 'search';
    catalogParams.policyKey = 'BCpkADawqM3dv_...Cv8-nlTX';
    catalogParams.q = 'name:Desert';
    console.log('catalogParams',catalogParams);
    myPlayer.catalog.get(catalogParams,function(errorObj,videosReturned){
      console.log('videosReturned',videosReturned);
      myPlayer.playlist(videosReturned);
    });
  });
</script>

La capture d'écran suivante montre les deux console.log() résultats dans le code ci-dessus. le catalogParams affiche les paramètres de la recherche et le videosReturned tableau montre les trois vidéos renvoyées par la recherche.

Objets dans la console à partir de l'appel de méthode get

Exemple de promesse

Dans ce code, la même recherche est effectuée en utilisant get() comme indiqué ci-dessus, mais le résultat est traité comme une promesse.

<script type="text/javascript">
  videojs.getPlayer('myPlayerID').ready(function() {
    var myPlayer = this,
      catalogParams = {};
    catalogParams.type = 'search';
    catalogParams.policyKey = 'BCpkADawqM3dv_...Cv8-nlTX';
    catalogParams.q = 'name:Desert';
    myPlayer.catalog.get(catalogParams).then(function(videosReturned){
      console.log('videosReturned',videosReturned);
      myPlayer.playlist(videosReturned);
    }).catch(function(errorObj){
      console.log('errorObj',errorObj);
    })
  });
</script>

Pour plus d'informations sur les promesses, consultez Utilisation des promesses JavaScript.

méthode getSearch ()

le getSearch(params, [callback], [adConfigId]) ⇒ XMLHttpRequest La méthode permet de rechercher dans le catalogue en utilisant CMS / API de lecture: Syntaxe de recherche de vidéos. Sous le capot, cette méthode utilise l'API Playback.

Paramètres

  • params: Objet de catalog paramètresde type.

  • callback: Fonction qui sera appelée à la fin de la requête, qu'elle soit réussie ou non. Il est invoqué avec deux arguments :

    • Le premier argument contiendra un objet error, si une erreur se produit. Cet objet contient des détails sur l'erreur. Si aucune erreur ne se produit, cet objet est null.

    • Si aucune erreur ne se produit, le deuxième argument est l'objet vidéo demandé. Si une erreur se produit, cette valeur contient la chaîne vide.

  • [adConfigId]: OBSOLÈTE ID de configuration de la publicité Video Cloud qui sera transmis à l'API Playback. Au lieu de cela, transmettez l'AdConfigID dans l'objet params initial.

Valeur renvoyée

L' catalog appel lui-même renvoie un objet de type XMLHttpRequest. Bien que l'appel renvoie un XMLHttpRequest objet, vous ne traiterez probablement jamais cet objet. La raison en est que dans la fonction de rappel, la réponse JSON est automatiquement analysée et qu'un objet utilisable est ce qui est transmis à la fonction de rappel. La structure exacte des données renvoyées dans le rappel varie en fonction de ce qui a été recherché.

Exemple

L'exemple suivant illustre les actions suivantes :

  1. Construit un CatalogueParams objet qui sera passé en argument avec la fonction. La clé de stratégie activée pour la recherche est transmise. La recherche interrogera les vidéos avec la chaîne desert dans la vidéo name.

  2. Effectue la recherche à l'aide du getSearch() méthode. Notez que la fonction de rappel utilisera les paramètres nommés errorObj et videosReturned.

  3. Utilisez playlist() cette méthode pour attribuer les vidéos renvoyées au lecteur Brightcove.

<script type="text/javascript">
  videojs.getPlayer('myPlayerID').ready(function() {
    var myPlayer = this,
      catalogParams = {};
    catalogParams.type = 'search';
    catalogParams.policyKey = 'BCpkADawqM3dv_...-rSSaDpwCVfj0vsWCv8-nlTX';
    catalogParams.q = 'name:Desert';
    console.log('catalogParams',catalogParams);
    myPlayer.catalog.getSearch(catalogParams,function(errorObj,videosReturned){
      console.log('videosReturned',videosReturned);
      myPlayer.playlist(videosReturned);
    });
  });
</script>

La capture d'écran suivante montre les deux console.log() résultats dans le code ci-dessus. le catalogParams affiche les paramètres requis pour la recherche et le videosReturned tableau montre les trois vidéos renvoyées par la recherche.

Objets dans la console à partir de l'appel de méthode getSearch

méthode getSequence ()

le getSequence(sequences, callback, [adConfigId]) ⇒ Array.<XMLHttpRequest> méthode permet de passer plusieurs catalog opérations et récupère tous les objets vidéo de ces multiples catalog opérations. Vous pouvez avoir trois types d'opérations, à savoir:

  1. recherche
  2. vidéo
  3. playlist

Concrètement, cela signifie que vous pouvez récupérer les combinaisons suivantes et que les données renvoyées sont un tableau d'objets vidéo:

  • Plusieurs listes de lecture
  • Une playlist et plusieurs vidéos individuelles supplémentaires
  • En utilisant la recherche, toutes les vidéos avec une certaine chaîne dans le nom, la description ou le tag.

Bien entendu, les séquences qui viennent d'être énumérées ne sont que quelques-unes d'un nombre presque infini de combinaisons.

Paramètres

  • :sequences Un objet de type catalog paramètres OU un tableau d'objets représentant une séquence de catalog opérations.

  • callback: Fonction qui sera appelée à la fin de la requête, qu'elle soit réussie ou non. Il est invoqué avec deux arguments :

    • Le premier argument contiendra un objet error, si une erreur se produit. Cet objet contient des détails sur l'erreur. Si aucune erreur ne se produit, cet objet est null.

    • Si aucune erreur ne se produit, le deuxième argument est l'objet vidéo demandé. Si une erreur se produit, cette valeur contient la chaîne vide.

  • [adConfigId]: Un ID de configuration d'annonce qui sera transmis avec chaque demande.

Notez que si une vidéo spécifique est renvoyée dans plus d'une des opérations, elle figurera plusieurs fois dans le résultat.

Valeur renvoyée

L' catalog appel lui-même renvoie un objet de type XMLHttpRequest. Bien que l'appel renvoie un XMLHttpRequest objet, vous ne traiterez probablement jamais cet objet. La raison en est que dans la fonction de rappel, la réponse JSON est automatiquement analysée et qu'un objet utilisable est ce qui est transmis à la fonction de rappel. La structure exacte des données renvoyées dans le rappel varie en fonction de ce qui a été recherché.

Exemple

L'exemple suivant utilise une séquence de trois catalog opérations. Le premier est une recherche des 10 vidéos les plus anciennes du catalog , la seconde, une vidéo individuelle est ajoutée, et enfin les vidéos d'une playlist sont ajoutées au résultat.

<script>
  videojs.getPlayer('myPlayerID').ready(function() {
    var myPlayer = this,
      // Declare object for catalog search
      catalogParams = {};
    // Declare mySequences array which will hold
    // three different types of catalog operations
    mySequences = [];

    // Declare 3 objects for different catalog operations
    mySequences[0]={};
    mySequences[1]={};
    mySequences[2]={};

    // Define the object for catalog search
    // Search will retrieve 10 oldest videos in catalog
    catalogParams.policyKey = 'BCpkADawqM3dv_-rSSaDpwCVfj0vsWCv8-nlTX';
    catalogParams.q = 'type:*';
    catalogParams.sort = 'created_at';
    catalogParams.limit = 10;
    catalogParams.type = 'search';
    mySequences[0] = catalogParams;

    // Create a video retrieval catalog operation
    catalogParams = {};
    catalogParams.type = 'video';
    catalogParams.id = '5755775186001';
    mySequences[1] = catalogParams;

    // Create a playlist retrieval catalog operation
    catalogParams = {};
    catalogParams.type = 'playlist';
    catalogParams.id = '5531423971001';
    mySequences[2] = catalogParams;

    // Display mySequences array
    console.log('mySequences',mySequences);

    // Perform sequence of catalog operations
    myPlayer.catalog.getSequence(mySequences,function(errorObj,videosReturned){
      // Display video objects returned
      console.log('videosReturned',videosReturned);
      // Assign video objects as a playlist
      myPlayer.playlist(videosReturned);
    });
  });
</script>

La capture d'écran suivante montre la structure du mySequences array, suivi du tableau d'objets vidéo renvoyés:

La structure de données myStructures

Méthode getLazySequence ()

le getLazySequence(sequences, callback, [adConfigId]) ⇒ XMLHttpRequest La méthode se comporte de la même manière que la méthode getSequence () , sauf que le chargement paresseux des vidéos est utilisé. Cela signifie que lorsque les vidéos d'une opération de séquence sont récupérées, les vidéos de l'opération de séquence suivante ne seront pas récupérées tant que la dernière vidéo de l'opération précédente ne sera pas atteinte. Un cas particulier existe si une séquence ne renvoie qu'une seule vidéo, auquel cas l'opération de séquence suivante est effectuée et plus de vidéos sont récupérées.

méthode autoFindAndLoadMedia ()

le autoFindAndLoadMedia([opts]) ⇒ Object | undefined La méthode recherche le dernier ID de vidéo ou de playlist défini, le demande à l'API et le charge dans le lecteur. Cette méthode définit le comportement par défaut du Brightcove Player.

Paramètres

  • options: Toutes les options suivantes sont reconnues:
    • adConfigId(nombre): Valeur numérique d'une configuration d'annonce qui sera transmise à l'API de lecture. Sera appelé ad_config_id à la fin.

    • embedHasPoster(booléen): Si l'intégration d'origine avait ou non une affiche.

    • embedHasSources(booléen): Si l'intégration d'origine avait ou non des sources.

    • embedHasTracks(booléen): Si l'intégration d'origine avait ou non des pistes.

    • playlistId(chaîne): Un identifiant de playlist fourni dans la configuration du lecteur.

    • search(chaîne | Objet): Une chaîne de recherche/objet qui a été fournie dans la configuration ou l'intégration du joueur. Voir get() méthode pour plus d'informations sur les paramètres pris en charge.

    • sequence(Objet | Array.Object): Une chaîne de recherche/objet qui a été fournie dans la configuration ou l'intégration du joueur. Voir get() méthode pour plus d'informations sur les paramètres pris en charge.

    • videoId(chaîne): Un ID vidéo fourni dans la configuration du lecteur.

L'exemple suivant obtient l'objet vidéo en fonction de la videoId et le charge dans le lecteur:

<script type="text/javascript">
  videojs.getPlayer('myPlayerID').ready(function() {
    var myPlayer = this,
		options = {};
    options.videoId = '5141730843001';
    myPlayer.catalog.autoFindAndLoadMedia(options);
  });
</script>

L'exemple suivant récupère l'objet playlist basé sur playlistId et le charge dans le lecteur. Il obtient également l'objet vidéo basé sur playlistVideoId et le charge comme première vidéo à lire dans la playlist:

<script type="text/javascript">
  videojs.getPlayer('myPlayerID').ready(function() {
    var myPlayer = this,
        options = {};
    options.playlistId = '4845949311001';
    options.playlistVideoId = '4845831078001'
    myPlayer.catalog.autoFindAndLoadMedia(options);
  });
</script>

méthode transformVideoResponse ()

le transformVideoResponse(data) convertit un objet vidéo brut de l'un ou l'autre API CMS ou la API de lecture dans un format compatible avec le lecteur et les navigateurs. Cela inclut les durées et la compatibilité des images https. Il réorganise également les sources pour garantir que les sources censées offrir une expérience de visionnage de la plus haute qualité sur cette plate-forme sont essayées en premier.

Paramètres

  • :data Un objet vidéo brut analysé à partir d'un catalog Réponse de l'API.

Voici un exemple d'utilisation de la méthode:

 for (var i=0; i<limitValue; i++) {
  	mediaData.videos[i] = myPlayer.catalog.transformVideoResponse (mediaData.videos[i], myPlayer);
  }

Pour consulter l'exemple de code complet, consultez le Pagination de l'API de lecture document.

Valeur renvoyée

Un objet plus cohérent avec l'environnement du lecteur et du navigateur.

catalog événements

Il existe trois événements de catalogues que vous pouvez écouter. Il s'agit de :

  • :catalog_request Un événement distribué lorsqu'une demande au catalog est fait.

  • :catalog_response Un événement distribué lorsqu'une réponse du catalog est reçu. La réponse au format JSON contient les données brutes catalog L'API est retournée. Voir le Informations de réponse contenu plus loin dans cette section pour plus de détails.

  • :catalog_request_error Un événement distribué lorsqu'il y a une erreur lors de l'interaction avec le catalog.

Le tableau suivant montre le journal de la console des événements d'une demande et d'une réponse de catalog:

Objets d'événement de demande et de réponse

Vous voyez de nombreuses propriétés standard d'un objet événement. D'un intérêt particulier pour catalog événements est type et url.

Ce qui suit montre un journal de console d'un catalog objet d'erreur de demande:

Objet d'événement d'erreur

Informations de réponse

le catalog_response objet événement contient un format JSON response propriété qui contient les données brutes du catalog Réponse de l'API. Ce qui suit montre le journal de la console de la propriété de réponse:

Objets d'événement de réponse

Pour utiliser réellement les données de la propriété de réponse, vous devez analyser la chaîne au format JSON brute en un objet. Ce qui suit montre l'accès au name propriété:

myPlayer.on('catalog_response',function(evt){
  var api_response = JSON.parse(evt.response.response);
  console.log('api_response.name',api_response.name);
});

Voici le JSON d'un exemple response propriété:

{
  "description": null,
  "poster_sources": [{
    "src": "http://brightcove.vo.llnwd.net/e1/pd/1507807800001/1507807800001_4784518686001_4784463159001-vs.jpg?pubId=1507807800001&videoId=4784463159001"
  }, {
    "src": "https://brightcove.hs.llnwd.net/e1/pd/1507807800001/1507807800001_4784518686001_4784463159001-vs.jpg?pubId=1507807800001&videoId=4784463159001"
  }],
  "tags": [],
  "cue_points": [{
    "id": "4784326156001",
    "name": "First cue point",
    "type": "CODE",
    "time": 3.0,
    "metadata": "5;This is the first CTA;http://www.brightcove.com",
    "force_stop": false
  }, {
    "id": "4784326155001",
    "name": "Second cue point",
    "type": "CODE",
    "time": 13.0,
    "metadata": "3;This is the second CTA;http://docs.brightcove.com/",
    "force_stop": false
  }],
  "custom_fields": {},
  "account_id": "1507807800001",
  "sources": [{
    "avg_bitrate": 513000,
    "width": 480,
    "duration": 21098,
    "size": 1357587,
    "stream_name": "mp4:1507807800001/1507807800001_4784519206001_4784463159001.mp4&1483545600000&c190f37500f15373c964858e54b4e2a1",
    "codec": "H264",
    "asset_id": "4784519206001",
    "container": "MP4",
    "height": 270,
    "app_name": "rtmp://brightcove.fcod.llnwd.net/a500/e1/uds/rtmp/ondemand"
  }, {
    "avg_bitrate": 513000,
    "width": 480,
    "src": "http://brightcove.vo.llnwd.net/e1/uds/pd/1507807800001/1507807800001_4784519206001_4784463159001.mp4?pubId=1507807800001&videoId=4784463159001",
    "size": 1357587,
    "height": 270,
    "duration": 21098,
    "container": "MP4",
    "codec": "H264",
    "asset_id": "4784519206001"
  }, {
    "avg_bitrate": 1804000,
    "width": 960,
    "src": "https://brightcove.hs.llnwd.net/e1/uds/pd/1507807800001/1507807800001_4784519221001_4784463159001.mp4?pubId=1507807800001&videoId=4784463159001",
    "size": 4752091,
    "height": 540,
    "duration": 21098,
    "container": "MP4",
    "codec": "H264",
    "asset_id": "4784519221001"
  }, {
    "type": "application/x-mpegURL",
    "src": "http://c.brightcove.com/services/mobile/streaming/index/master.m3u8?videoId=4784463159001&pubId=1507807800001",
    "container": "M2TS",
    "codec": "H264"
  }, {
    "type": "application/x-mpegURL",
    "src": "https://secure.brightcove.com/services/mobile/streaming/index/master.m3u8?videoId=4784463159001&pubId=1507807800001&secure=true",
    "container": "M2TS",
    "codec": "H264"
  }],
  "name": "small-waterfall.mp4",
  "reference_id": null,
  "long_description": null,
  "duration": 21098,
  "economics": "AD_SUPPORTED",
  "published_at": "2016-03-03T14:56:42.982Z",
  "text_tracks": [],
  "updated_at": "2016-05-03T18:53:43.573Z",
  "thumbnail": "http://brightcove.vo.llnwd.net/e1/pd/1507807800001/1507807800001_4784518327001_4784463159001-th.jpg?pubId=1507807800001&videoId=4784463159001",
  "poster": "http://brightcove.vo.llnwd.net/e1/pd/1507807800001/1507807800001_4784518686001_4784463159001-vs.jpg?pubId=1507807800001&videoId=4784463159001",
  "link": null,
  "id": "4784463159001",
  "ad_keys": "key1%3Dvalue1%26key2%3Dvalue2",
  "thumbnail_sources": [{
    "src": "http://brightcove.vo.llnwd.net/e1/pd/1507807800001/1507807800001_4784518327001_4784463159001-th.jpg?pubId=1507807800001&videoId=4784463159001"
  }, {
    "src": "https://brightcove.hs.llnwd.net/e1/pd/1507807800001/1507807800001_4784518327001_4784463159001-th.jpg?pubId=1507807800001&videoId=4784463159001"
  }],
  "created_at": "2016-03-03T14:56:42.982Z"
}

catalog les erreurs

le catalog génère des erreurs en cas de problèmes de récupération ou de lecture initiale de la vidéo ou de la liste de lecture. Les erreurs sont détaillées ci-dessous.

catalog Erreur Description
Video ID as string Le lecteur a été configuré avec un ID de compte Video Cloud non valide.
VIDEO_CLOUD_ERR_RESOURCE_NOT_FOUND L'ID de la liste de lecture par défaut n'est pas valide.
VIDEO_CLOUD_ERR_VIDEO_NOT_FOUND La vidéo par défaut n'est pas valide.
VIDEO_CLOUD_ERR_NOT_PLAYABLE La vidéo Video Cloud n'est pas lisible. Les causes fréquentes de cette erreur incluent lorsqu'un ID vidéo est désactivé ou lorsque la disponibilité programmée a expiré.

Manipuler bc-catalog-error

Il est possible que la gestion des erreurs dans la ready() section normale du script bloc 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. Vous constaterez peut-être qu'il n'y a pas de problème dans votre code, mais le problème peut dépendre du navigateur, alors testez-le soigneusement.

Si c'est une possibilité dans votre implémentation, votre code de gestion des erreurs doit utiliser le one() méthode de gestion des événements pour écouter le bc-catalog-error dans un bloc de code séparé plutôt que dans le ready() section.

Dans l'exemple de code ci-dessous, vous voyez un bloc de code gérer le bc-catalog-error (ligne 62), ainsi qu'un bloc de code pour ready (ligne 71).

  <video-js id="myPlayerID"
    data-account="1486906377"
    data-player="77a8e8b7-e8d1-4a3c-8a1b-292ba8233006"
    data-embed="default"
    data-video-id="4040394419001"
    controls=""></video-js>

  <p id="textTarget"></p>

  <script src="https://players.brightcove.net/1486906377/77a8e8b7-e8d1-4a3c-8a1b-292ba8233006_default/index.min.js"></script>

  <script type="text/javascript">
    videojs.getPlayer('myPlayerID').one('bc-catalog-error', function(){
      var myPlayer = this,
        specificError;
      if (myPlayer.catalog.error !== undefined) {
        specificError = myPlayer.catalog.error.data[0];
        console.log('bc-catalog-error:', specificError);
      };
    });

    videojs.getPlayer('myPlayerID').ready(function() {
      var myPlayer = this;
      console.log('in ready');
    });
  </script>  

Utilisation d'une erreur personnalisée

La meilleure solution pour gérer un bc-catalog-error peut-être en utilisant une erreur personnalisée. Le code suivant montre un plugin qui utilise une erreur personnalisée pour informer un spectateur d'une vidéo inactive pourquoi la vidéo ne sera pas lue:

videojs.registerPlugin('inactiveErrorCheck', function(options) {
  var myPlayer = this;
  myPlayer.one('bc-catalog-error', function(){
    var specificError;
    myPlayer.errors({
      'errors': {
        'inactive-error': {
          'headline': options.inactiveMessage,
          'dismiss': false
        }
      }
    });
    if (typeof(myPlayer.catalog.error) !== 'undefined') {
      specificError = myPlayer.catalog.error.data[0];
      if (specificError !== 'undefined' & specificError.error_code == "VIDEO_NOT_PLAYABLE") {
        myPlayer.error({code:'inactive-error'});
      };
    };
  });
});

Le code pour utiliser le plugin, utilisant une implémentation de lecteur intégré dans la page, suit:

<video-js id="myPlayerID" data-video-id="5350958927001"
  data-account="1507807800001"
  data-player="default"
  data-embed="default"
  data-application-id=""
  controls=""></video-js>
<script src="https://players.brightcove.net/1507807800001/default_default/index.min.js"></script>

<script type="text/javascript" src="inactive-error-check.js"></script>

<script type="text/javascript">
  videojs.getPlayer('myPlayerID').ready(function() {
    var myPlayer = this,
    options =[];
    options.inactiveMessage = "This is the message to display for inactive videos.";
    myPlayer.inactiveErrorCheck(options);
});</script>

Si vous ajoutez le plugin via le PLUGINS dans Studio, vous devez fournir l'URL correcte où vous avez stocké votre code JavaScript, puis dans le Name, Option (JSON) alimentation d'entrée:

  • Nom: inactiveErrorCheck

  • Options: { "inactiveMessage": "This is the message to display for inactive videos." }

Gérer l'erreur de filtrage géographique

Comme mentionné précédemment, le filtrage géographique peut provoquer des erreurs de catalogue. Vous pouvez les gérer de manière très similaire à ce qui vient d'être montré. Un code s'affichera et mettra un message sous le lecteur "en erreur", comme indiqué ici:

erreur géographique

Le code suivant détecte l'erreur de catalogue, puis vérifie s'il s'agit d'un problème de filtrage géographique. Si tel est le cas, un message approprié s'affiche dans la page HTML, juste en dessous du lecteur, comme indiqué sur la capture d'écran.

<video-js id="myPlayerID"
  data-video-id="4040394419001"
  data-account="1486906377"
  data-player="XJhO7JGxY"
  data-embed="default"
  data-application-id=""
  controls=""
  width="640"
  height="360"></video-js>
<script src="//players.brightcove.net/1486906377/XJhO7JGxY_default/index.min.js"></script>
<br>
<div id="textTarget"></div>

<script type="text/javascript">
  videojs.getPlayer('myPlayerID').one('bc-catalog-error', function() {
    var myPlayer = this,
      specificError;
    if (myPlayer.catalog.error !== undefined) {
      specificError = myPlayer.catalog.error.data[0];
      console.log('myPlayer.catalog.error', myPlayer.catalog.error);
      if (specificError !== undefined & specificError.error_subcode == 'CLIENT_GEO') {
        document.getElementById('textTarget').innerHTML = '<strong>The video you are trying to watch cannot be viewed from your current country or location.</strong>';
      };
    };
  });

  videojs.getPlayer('myPlayerID').ready(function() {
    var myPlayer = this;
    console.log('in ready');
  });
</script>

Gérer l'erreur de restriction IP

Le code suivant est analogue à ce qui vient d'être montré ci-dessus pour le filtrage géographique, à l'exception des restrictions IP:

<video-js id="myPlayerID"
  data-video-id="5981021521001"
  data-account="5977711152001"
  data-player="iYNDnCGt9"
  data-embed="default"
  data-application-id=""
  controls=""
  width="640"
  height="360"></video-js>
<script src="//players.brightcove.net/5977711152001/iYNDnCGt9_default/index.min.js"></script>
<br>
<div id="textTarget"></div>

<script type="text/javascript">
  videojs.getPlayer('myPlayerID').one('bc-catalog-error', function() {
    var myPlayer = this,
      specificError;
    if (myPlayer.catalog.error !== undefined) {
      specificError = myPlayer.catalog.error.data[0];
      console.log('myPlayer.catalog.error', myPlayer.catalog.error);
      if (specificError !== undefined & specificError.error_subcode == 'CLIENT_IP') {
        document.getElementById('textTarget').innerHTML = '<strong>The video you are trying to watch cannot be viewed from your current IP address.</strong>';
      };
    };
  });

  videojs.getPlayer('myPlayerID').ready(function() {
    var myPlayer = this;
    console.log('in ready');
  });
</script>

Limite de demande

Étant donné que les réponses de l'API sont mises en cache, il n'y a pas de limite de débit sur catalog demandes.