Catálogo de jugadores

En este tema, aprenderá a usar Brightcove Player's catalogar biblioteca de métodos para realizar solicitudes al catálogo de Video Cloud. La biblioteca del catálogo facilita la obtención de información sobre los medios de Video Cloud y su carga en un reproductor.

Sintaxis básica

La sintaxis básica para usar el catalog es como sigue:

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

Varios de los catalog Los métodos pasarán un objeto de parámetros que definen la solicitud. La catalog objeto de parámetros se define en la siguiente sección y se hará referencia a ella en las descripciones de los métodos, cuando corresponda.

catalog objeto de parámetros

La siguiente tabla describe las propiedades en el CatalogParams objeto. Este verdadero objeto (no un constructor) define el formato de los parámetros que se utilizarán con muchas solicitudes de catálogo.

Nombre Tipo Descripción
type string

El tipo de solicitud a realizar. debe ser uno de video , lista de reproducción , o buscar.

policyKey string

La clave de política para esta cuenta. Esto tomará por defecto la clave de política del jugador.** Tenga en cuenta que si pasa un ID de cuenta diferente como parámetro, también debe pasar la clave de política correspondiente para esa cuenta.

deliveryConfigId string

La identificación de las reglas de entrega. Ver Descripción general: Reglas de entrega.

[id] string

Un ID de video o lista de reproducción o un ID de referencia con el prefijo "ref:". Required para solicitudes de videos y listas de reproducción. DEPRECATED: Para compatibilidad con versiones anteriores, esto se admite como una consulta de búsqueda en lugar de q. Esto se puede proporcionar como un subobjeto, que también es un CatalogParams objeto, que se puede utilizar para proporcionar parámetros.

[q] string

Una consulta de búsqueda. Required para solicitudes de búsqueda, ignorado para otros.

[adConfigId] string

Un video podría SSAI ID de configuración de anuncios.

[tveToken] string

Un token TVE opcional que se enviará como parámetro de cadena de consulta.

[limit] string

Soportado para playlist y search tipos solamente. Limite la cantidad de videos devueltos.

[offset] string

Soportado para playlist y search tipos solamente. La cantidad de videos que se van a omitir.

[sort] string

Soportado para search escriba solamente. Cómo se deben ordenar los videos para las búsquedas.

[bcovAuthToken] string Para usar con el Servicio de autorización de reproducción (PAS) de Brightcove.

getVideo( ) método

La getVideo(params | videoID,callback,[adConfigId]) => XMLHttpRequest el método hace un catalog solicita el video con la identificación especificada e invoca una devolución de llamada cuando se completa la solicitud.

Parámetros

  • params | videoID: Un objeto de tipo catalog parámetros O una cadena que contenga la identificación del video o una identificación de referencia con el prefijo ref:.

  • callback: Función a la que se llamará cuando se complete la solicitud, se haya realizado correctamente o no. Se invoca con dos argumentos:

    • El primer argumento contendrá un objeto de error si se produce un error. Este objeto contiene detalles del error. Si no se produce ningún error, este objeto se null.

    • Si no se produce ningún error, el segundo argumento es el objeto de vídeo solicitado. Si se produce un error, este valor contiene la cadena vacía.

  • [adConfigId]: OBSOLETO ID de configuración de anuncios de Video Cloud que se pasará a la API de reproducción. En su lugar, pase el adConfigID en el objeto params inicial.

Valor devuelto

La catalog la llamada a sí misma devuelve un objeto de tipo XMLHttpRequest. A continuación, se muestra un ejemplo de este objeto:

objeto de solicitud

Aunque la llamada devuelve un XMLHttpRequest objeto, lo más probable es que nunca se ocupe de ese objeto. La razón es que en la función de devolución de llamada, la respuesta JSON se analiza automáticamente y un objeto utilizable es lo que se pasa a la función de devolución de llamada, en este caso un objeto de video.

Ejemplo: ID de video como cadena

El siguiente ejemplo muestra un uso de la getVideo() método:

<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>

Ejemplo: Usando catalogParams

El equivalente del código anterior, pero usando el objeto CatalogParams, aparece de la siguiente manera:

<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étodo

La getPlaylist(params | playlistID,callback,[adConfigId]) => XMLHttpRequest el método hace un catalog solicita la lista de reproducción con el ID especificado e invoca una devolución de llamada cuando se completa la solicitud.

Parámetros

  • params | playlistID: Un objeto de tipo catalog parámetros O una cadena que contenga el ID de la lista de reproducción o un ID de referencia con el prefijo ref:.

  • callback: Función a la que se llamará cuando se complete la solicitud, se haya realizado correctamente o no. Se invoca con dos argumentos:

    • El primer argumento contendrá un objeto de error si se produce un error. Este objeto contiene detalles del error. Si no se produce ningún error, este objeto se null.

    • Si no se produce ningún error, el segundo argumento es el objeto de vídeo solicitado. Si se produce un error, este valor contiene la cadena vacía.

  • [adConfigId]: OBSOLETO ID de configuración de anuncios de Video Cloud que se pasará a la API de reproducción. En su lugar, pase el adConfigID en el objeto params inicial.

Valor devuelto

La catalog la llamada a sí misma devuelve un XMLHttpRequest. Aunque la llamada devuelve un XMLHttpRequest objeto, lo más probable es que nunca se ocupe de ese objeto. La razón es que en la función de devolución de llamada, la respuesta JSON se analiza automáticamente y un objeto utilizable es lo que se pasa a la función de devolución de llamada, en este caso un objeto de lista de reproducción.

Ejemplo

El siguiente ejemplo muestra un uso de la getPlaylist() sigue el método:

<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étodo load ()

La load(mediaobject) El método carga un objeto de video o lista de reproducción en el reproductor. Este método actualizará la mediainfo propiedad, y actualice la fuente de video y el póster. En la mayoría de los casos, llamaría a este método con el resultado de una llamada a getVideo() o getPlaylist(). Si desea recibir una notificación cuando mediainfo ha sido actualizado, escuche el loadstart evento.

Parámetros

  • mediaobject: Un objeto de video o lista de reproducción para cargar. Este objeto debe tener el mismo formato que el objeto de respuesta de una llamada a getVideo() o getPlaylist()método.

Ejemplo

El siguiente ejemplo recupera un video y lo carga en el reproductor.

<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étodo get ()

La get(params, [callback]) ⇒ Promise | XMLHttpRequest El método permite buscar el catalog utilizando CMS / API de reproducción: Sintaxis de búsqueda de vídeos. Bajo el capó, este método utiliza la API de reproducción.

Parámetros

  • params: Un objeto de tipo catalog parámetros.

  • callback: Función a la que se llamará cuando se complete la solicitud, se haya realizado correctamente o no. Se invoca con dos argumentos:

    • El primer argumento contendrá un objeto de error si se produce un error. Este objeto contiene detalles del error. Si no se produce ningún error, este objeto se null.

    • Si no se produce ningún error, el segundo argumento es el objeto de vídeo solicitado. Si se produce un error, este valor contiene la cadena vacía.

Valor devuelto

El método devuelve un Promise o un objeto de tipo XMLHttpRequest. Si está utilizando una función de devolución de llamada, la respuesta JSON se analiza automáticamente y un objeto utilizable es lo que se pasa a la función de devolución de llamada. La estructura exacta de los datos devueltos en la devolución de llamada variará según lo que se haya buscado.

Ejemplo de devolución de llamada

En el ejemplo siguiente se hace lo siguiente:

  1. Crea un objeto catalogParams que se pasará como argumento con la función. La búsqueda buscará videos con la cadena Desert en el video name.

  2. Realiza la búsqueda usando el get() método. Tenga en cuenta que la función de devolución de llamada utilizará los parámetros denominados errorObj y videosReturned.

  3. Utilice el playlist() método para asignar los vídeos devueltos a Brightcove Player.

<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>

En la siguiente captura de pantalla se muestran los dos console.log() resultados del código anterior. La catalogParams muestra los parámetros para la búsqueda, y el videosReturned matriz muestra los tres videos devueltos por la búsqueda.

Objetos en la consola de la llamada al método get

Ejemplo de promesa

En este código se realiza la misma búsqueda usando get() como se muestra arriba, pero el resultado se maneja como una Promesa.

<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>

Para obtener más información sobre promesas, consulte Usar promesas de JavaScript.

método getSearch ()

La getSearch(params, [callback], [adConfigId]) ⇒ XMLHttpRequest El método permite buscar en el catálogo utilizando CMS / API de reproducción: Sintaxis de búsqueda de vídeos. Bajo el capó, este método utiliza la API de reproducción.

Parámetros

  • params: Un objeto de tipo catalog parámetros.

  • callback: Función a la que se llamará cuando se complete la solicitud, se haya realizado correctamente o no. Se invoca con dos argumentos:

    • El primer argumento contendrá un objeto de error si se produce un error. Este objeto contiene detalles del error. Si no se produce ningún error, este objeto se null.

    • Si no se produce ningún error, el segundo argumento es el objeto de vídeo solicitado. Si se produce un error, este valor contiene la cadena vacía.

  • [adConfigId]: OBSOLETO ID de configuración de anuncios de Video Cloud que se pasará a la API de reproducción. En su lugar, pase el adConfigID en el objeto params inicial.

Valor devuelto

La catalog la llamada a sí misma devuelve un objeto de tipo XMLHttpRequest. Aunque la llamada devuelve un XMLHttpRequest objeto, lo más probable es que nunca se ocupe de ese objeto. El motivo es que en la función de devolución de llamada la respuesta JSON se analiza automáticamente y un objeto utilizable es lo que se pasa a la función de devolución de llamada. La estructura exacta de los datos devueltos en la devolución de llamada variará según lo que se haya buscado.

Ejemplo

En el ejemplo siguiente se hace lo siguiente:

  1. Construye un CatálogoParams objeto que se pasará como argumento con la función. Se pasa la clave de política habilitada para la búsqueda. La búsqueda buscará videos con la cadena desert en el video name.

  2. Realiza la búsqueda usando el getSearch() método. Tenga en cuenta que la función de devolución de llamada utilizará los parámetros denominados errorObj y videosReturned.

  3. Utilice el playlist() método para asignar los vídeos devueltos a Brightcove Player.

<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>

En la siguiente captura de pantalla se muestran los dos console.log() resultados del código anterior. La catalogParams muestra los parámetros requeridos para la búsqueda, y el videosReturned matriz muestra los tres videos devueltos por la búsqueda.

Objetos en la consola de la llamada al método getSearch

método getSequence ()

La getSequence(sequences, callback, [adConfigId]) ⇒ Array.<XMLHttpRequest> El método permite pasar múltiples catalog operaciones y recupera todos los objetos de video de esos múltiples catalog operaciones. Puede tener tres tipos de operaciones, siendo estas:

  1. búsqueda
  2. video
  3. lista de reproducción

En términos prácticos, esto significa que puede recuperar las siguientes combinaciones y los datos devueltos son una matriz de objetos de video:

  • Varias listas de reproducción
  • Una lista de reproducción y varios videos individuales adicionales
  • Mediante la búsqueda, todos los videos con una determinada cadena en el nombre, descripción o etiqueta.

Por supuesto, las secuencias que acabamos de enumerar son solo algunas de un número casi infinito de combinaciones.

Parámetros

  • sequences: Un objeto de tipo catalog parámetros O una matriz de objetos que representan una secuencia de catalog operaciones.

  • callback: Función a la que se llamará cuando se complete la solicitud, se haya realizado correctamente o no. Se invoca con dos argumentos:

    • El primer argumento contendrá un objeto de error si se produce un error. Este objeto contiene detalles del error. Si no se produce ningún error, este objeto se null.

    • Si no se produce ningún error, el segundo argumento es el objeto de vídeo solicitado. Si se produce un error, este valor contiene la cadena vacía.

  • [adConfigId]: Un ID de configuración de anuncios que se transmitirá junto con cada solicitud.

Tenga en cuenta que si se devuelve un video específico en más de una de las operaciones, aparecerá en el resultado varias veces.

Valor devuelto

La catalog la llamada a sí misma devuelve un objeto de tipo XMLHttpRequest. Aunque la llamada devuelve un XMLHttpRequest objeto, lo más probable es que nunca se ocupe de ese objeto. El motivo es que en la función de devolución de llamada la respuesta JSON se analiza automáticamente y un objeto utilizable es lo que se pasa a la función de devolución de llamada. La estructura exacta de los datos devueltos en la devolución de llamada variará según lo que se haya buscado.

Ejemplo

El siguiente ejemplo usa una secuencia de tres catalog operaciones. El primero es una búsqueda de los 10 videos más antiguos del catalog , el segundo se agrega un video individual y, por último, los videos de una lista de reproducción se agregan al resultado.

<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 siguiente captura de pantalla muestra la estructura del mySequences matriz, seguida de la matriz de objetos de vídeo devueltos:

La estructura de datos de myStructures

método getLazySequence ()

El getLazySequence(sequences, callback, [adConfigId]) ⇒ XMLHttpRequest El método se comporta igual que el método getSequence() , excepto que se emplea la carga diferida de videos. Esto significa que cuando se recuperan los videos de una operación de secuencia, los videos de la siguiente operación de secuencia no se recuperarán hasta que se alcance el último video de la operación anterior. Existe un caso especial si una secuencia devuelve solo un video, en cuyo caso se realiza la siguiente operación de secuencia y se recuperan más videos.

método autoFindAndLoadMedia ()

La autoFindAndLoadMedia([opts]) ⇒ Object | undefined El método busca el ID de lista de reproducción o video definido por última vez, lo solicita a la API y lo carga en el reproductor. Este método define el comportamiento predeterminado de Brightcove Player.

Parámetros

  • options: Se reconoce cualquiera de las siguientes opciones:
    • adConfigId(número): Un valor numérico para una configuración de anuncios que se transferirá a la API de reproducción. Se llamará ad_config_id al final.

    • embedHasPoster(booleano): Si la inserción original tenía un póster o no.

    • embedHasSources(booleano): Si la inserción original tenía o no fuentes.

    • embedHasTracks(booleano): Si el incrustado original tenía pistas o no.

    • playlistId(cadena): Una ID de lista de reproducción proporcionada en la configuración del reproductor.

    • search(cadena | Objeto): Cadena/objeto de búsqueda que se proporcionó en la configuración o incrustación del reproductor. Consulte get() el método para obtener más información sobre los parámetros admitidos.

    • sequence(Objeto | Matriz.Objeto): Cadena/objeto de búsqueda que se proporcionó en la configuración o incrustación del reproductor. Consulte get() el método para obtener más información sobre los parámetros admitidos.

    • videoId(cadena): Una identificación de video proporcionada en la configuración del reproductor.

El siguiente ejemplo obtiene el objeto de video basado en el videoId y lo carga en el reproductor:

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

El siguiente ejemplo obtiene el objeto de lista de reproducción basado en playlistId y lo carga en el reproductor. También obtiene el objeto de video basado en playlistVideoId y lo carga como el primer video para reproducir en la lista de reproducción:

<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étodo transformVideoResponse ()

La transformVideoResponse(data) El método convierte un objeto de video sin procesar de la API de CMS o el API de reproducción en un formato compatible con el reproductor y los navegadores. Esto incluye tiempos de duración y compatibilidad de imágenes https. También reorganiza las fuentes para garantizar que las fuentes que se espera brinden la experiencia de visualización de la más alta calidad en esta plataforma se intenten primero.

Parámetros

  • data: Un objeto de video sin procesar analizado a partir de un catalog Respuesta de API.

A continuación, se muestra un ejemplo de uso del método:

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

Para ver el ejemplo de código completo, consulte el Paginación de la API de reproducción documento.

Valor devuelto

Un objeto que es más coherente con el entorno del navegador y el reproductor.

catalog eventos

Hay tres catálogos de eventos para los que puede escuchar. Son:

  • catalog_request: Un evento enviado cuando una solicitud al catalog está hecho.

  • catalog_response: Un evento enviado cuando una respuesta del catalog Esta recibido. La respuesta con formato JSON contiene los datos sin procesar que catalog API devuelta. Ver el Información de respuesta contenido más adelante en esta sección para obtener más detalles.

  • catalog_request_error: Un evento enviado cuando hay un error al interactuar con el catalog.

A continuación se muestra el registro de la consola de los eventos de una solicitud a, y la respuesta de, el catalog:

Objetos de eventos de solicitud y respuesta

Ve muchas propiedades estándar de un objeto de evento. De especial interés para catalog eventos es type y url.

A continuación se muestra un registro de la consola de un catalog objeto de error de solicitud:

Objeto de evento de error

Información de respuesta

La catalog_response objeto de evento contiene un JSON formateado response propiedad que contiene los datos brutos del catalog Respuesta de API. A continuación, se muestra el registro de la consola de la propiedad de respuesta:

Objetos de eventos de respuesta

Para usar realmente los datos de la propiedad de respuesta, debe analizar la cadena con formato JSON sin procesar en un objeto. A continuación se muestra cómo acceder al name propiedad:

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

A continuación se muestra el JSON de un ejemplo response propiedad:

{
  "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 errores

La catalog arrojará errores cuando haya problemas para recuperar o reproducir inicialmente el video o la lista de reproducción. Los errores se detallan a continuación.

catalog Error Descripción
Video ID as string El reproductor se ha configurado con un ID de cuenta de Video Cloud no válido.
VIDEO_CLOUD_ERR_RESOURCE_NOT_FOUND El ID de lista de reproducción predeterminado no es válido.
VIDEO_CLOUD_ERR_VIDEO_NOT_FOUND El vídeo predeterminado no es válido.
VIDEO_CLOUD_ERR_NOT_PLAYABLE El video de Video Cloud no se puede reproducir. Las causas frecuentes de este error incluyen cuando una identificación de video está desactivada o cuando la disponibilidad programada ha expirado.

Resolver bc-catalog-error

Es posible que el manejo de errores en la ready() sección normal del script bloque pueda causar problemas. Por ejemplo, puede ocurrir que el bc-catalog-error evento se pueda enviar antes de que el reproductor esté listo y, si escucha el error en la ready() sección, no podrás manejar el error. Este problema puede producirse cuando se utiliza el filtrado geográfico, un vídeo no se publica, un vídeo está fuera del rango de programación o en otra cuenta. Es posible que descubra que no hay ningún problema en su código, pero el problema puede depender del navegador, así que pruebe a fondo.

Si esta es una posibilidad en su implementación, su código de manejo de errores debe usar el one() método de manejo de eventos para escuchar el bc-catalog-error en un bloque de código separado en lugar de dentro del ready() sección.

En el ejemplo de código a continuación, verá un bloque de código que maneja el bc-catalog-error (línea 62), y también un bloque de código para ready (línea 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>  

Usando error personalizado

La mejor solución para manejar un bc-catalog-error tal vez usando un error personalizado. El siguiente código muestra un complemento que usa un error personalizado para notificar a un espectador de un video inactivo por qué el video no se reproduce:

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'});
      };
    };
  });
});

El código para usar el complemento, utilizando una implementación de reproductor integrado en la página, es el siguiente:

<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 está agregando el complemento a través del PLUGINS sección en Studio, debe proporcionar la URL correcta donde almacenó su código JavaScript, luego en la Name, Option (JSON) suministro de entrada:

  • Nombre: inactiveErrorCheck

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

Manejar el error de filtrado geográfico

Como se mencionó anteriormente, el filtrado geográfico puede causar errores de catálogo. Puede manejarlos de manera muy similar a lo que se acaba de mostrar. Se mostrará un código que coloca un mensaje debajo del reproductor "con errores", como se muestra aquí:

error geográfico

El siguiente código detecta el error del catálogo y luego verifica si se trata de un problema de filtrado geográfico. Si es así, se muestra un mensaje apropiado en la página HTML, justo debajo del reproductor, como se muestra en la captura de pantalla.

<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>

Manejar error de restricción de IP

El siguiente código es análogo al que se acaba de mostrar arriba para el filtrado geográfico, excepto por las restricciones de 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>

Límite de solicitud

Dado que las respuestas de la API se almacenan en caché, no hay límite de frecuencia en catalog peticiones.