Retrasar la instanciación del jugador

En este tema, aprenderá cómo retrasar la creación de instancias de Brightcove Player cuando se navega por una página HTML. Los casos de uso en los que esta técnica es útil son, por ejemplo, los estilos de caja de luz y las aplicaciones web de una sola página en las que la página con el reproductor no se instancia inicialmente.

Retraso de instanciación

Hay algunos casos de uso en los que querrá utilizar el código de implementación del reproductor avanzado (incrustación en la página), pero retrasar la creación de instancias del reproductor. Para hacer esto, debe modificar el <videos-js> atributos de la etiqueta y utilice el bc() método para inicializar el reproductor. Tenga en cuenta que el método puede tomar la ID del jugador o el elemento del jugador como argumento.

Modificar la etiqueta video-js

Al retrasar la creación de instancias del jugador, NO PUEDE usar todos los <video-js> atributos de la etiqueta, o se creará una instancia del jugador. Debe eliminar tres de los atributos del código estándar avanzado (incrustación en la página). Los atributos que deben eliminarse son:

  • data-account
  • data-player
  • data-video-id

Esto deja los siguientes atributos en el <video-js> etiqueta:

  • data-embed
  • class
  • controls (optional)

La razón por la que los atributos deben eliminarse, ya que permanece cualquiera de esos tres atributos, hará que se cree una instancia de Brightcove Player.

El código avanzado utilizado debe tener un patrón en el siguiente fragmento de código. Tenga en cuenta que un id se agrega a la etiqueta.

<video-js id="myPlayerID"
  data-embed="default"
  controls=""></video-js>
<script src="https://players.brightcove.net/1507807800001/5e28670f-28ce-4ed6-8809-227784965834_default/index.min.js"></script>

Estos cambios en el código avanzado y el código JavaScript que se muestran a continuación funcionan juntos para retrasar la creación de instancias del reproductor.

JavaScript utilizado

Una práctica muy común es utilizar un código similar al siguiente para prepararse para interactuar mediante programación con el reproductor:

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

Este enfoque no se puede utilizar ya que crearía una instancia del jugador. En su lugar, usará el bc() método para crear una instancia del reproductor DESPUÉS de que se hayan establecido otras preferencias. Esto bc() El método se utiliza para crear una nueva instancia de Brightcove Player y normalmente se llama automáticamente cuando se utiliza el <video-js> etiqueta, a menos que se sigan los pasos detallados aquí.

  • Líneas 2-3: Declara una variable para el jugador y obtén el video-js elemento.
  • Líneas 4-5: Utilice el setAttribute() método JavaScript para configurar el data-account y data-player. Esto es importante para realizar el seguimiento de los análisis y otros servicios.
  • Línea 6: Utiliza el setAttribute() método JavaScript para configurar el ID de vídeo.
  • Línea 9: Utiliza el bc() método para inicializar el reproductor.
  • Líneas 12-15: Reproduce el vídeo mediante programación. Esperar a que el loadedmetadata evento se envíe garantiza que el catálogo haya recuperado el vídeo antes de que intente reproducirse.
<script type="text/javascript">
  var myPlayer,
    vTag = document.getElementById('myPlayerID');
  vTag.setAttribute('data-account', 1507807800001);
  vTag.setAttribute('data-player', 'BdGVdOd36');
  vTag.setAttribute('data-video-id', 2114345470001);

  // Use the bc() method to initialize the Brightcove Player
  myPlayer = bc(vTag);

  // Mute (in case there is an audio track, in which case play won't work) and play the video
  myPlayer.on('loadedmetadata',function(){
    myPlayer.muted(true);
    myPlayer.play();
  });
</script>
  • Líneas 2-3: Declara una variable para el jugador y obtén el video-js elemento.
  • Líneas 4-5: Utilice el setAttribute() método JavaScript para configurar el data-account y data-player. Esto es importante para realizar el seguimiento de los análisis y otros servicios.
  • Línea 8: Utiliza el bc() método para inicializar el reproductor.
  • Línea 10: Establece el valor src para el reproductor. Es muy importante establecer tanto el src objeto de origen como type para el objeto de origen. Pueden producirse problemas en algunos navegadores si la primera opción del orden de la tecnología de reproducción no coincide con el tipo de vídeo.
  • Línea 13: Reproduce el vídeo mediante programación. Por supuesto, esto no es obligatorio.
<script type="text/javascript">
  var myPlayer,
    vTag = document.getElementById('myPlayerID');
  vTag.setAttribute('data-account', 1507807800001);
  vTag.setAttribute('data-player', 'BdGVdOd36');

  // Use the bc() method to initialize the Brightcove Player
  myPlayer = bc(vTag);

  myPlayer.src({ src: "//solutions.brightcove.com/bcls/assets/videos/Tiger.m3u8", type: "application/x-mpegURL"});
  // Mute (in case there is an audio track, in which case play won't work) and play the video
  myPlayer.muted(true);
  myPlayer.play();
</script> 

No id en el jugador

Si por alguna razón no desea utilizar un id con su reproductor, puede utilizar el siguiente código para retrasar la creación de instancias.

  • Líneas 3-4: Declara una variable para el jugador y obtén el video-js elemento.
  • Líneas 7-8: Utilice el setAttribute() método JavaScript para configurar el data-account y data-player. Esto es importante para realizar el seguimiento de los análisis y otros servicios.
  • Línea 9: Utiliza el setAttribute() método JavaScript para configurar el ID de vídeo.
  • Línea 12: Utiliza el bc() método para inicializar el reproductor.
  • Líneas 15-18: Reproduce el vídeo mediante programación. Esperar a que el loadedmetadata evento se envíe garantiza que el catálogo haya recuperado el vídeo antes de que intente reproducirse.
<script type="text/javascript">
  // Retrieve the element by tag name, returns an array so use the zeroth array element
  var myPlayer,
    vTag = document.getElementsByTagName('video-js')[0];

  // Assign the needed attributes
  vTag.setAttribute('data-account', 1507807800001);
  vTag.setAttribute('data-player', 'BdGVdOd36');
  vTag.setAttribute('data-video-id', 2114345470001);

  // Use the bc() method to initialize the Brightcove Player
  myPlayer = bc(vTag);

  // Mute (in case there is an audio track, in which case play won't work) and play the video
  myPlayer.on('loadedmetadata',function(){
    myPlayer.muted(true);
    myPlayer.play();
  });
</script>
  • Líneas 3-4: Declara una variable para el jugador y obtén el video-js elemento.
  • Líneas 7-8: Utilice el setAttribute() método JavaScript para configurar el data-account y data-player. Esto es importante para realizar el seguimiento de los análisis y otros servicios.
  • Línea 11: Utiliza el bc() método para inicializar el reproductor.
  • Línea 13: Establece el valor src para el reproductor. Es muy importante establecer tanto el src objeto de origen como type para el objeto de origen. Pueden producirse problemas en algunos navegadores si la primera opción del orden de la tecnología de reproducción no coincide con el tipo de vídeo.
  • Línea 16: Reproduce el vídeo mediante programación. Por supuesto, esto no es obligatorio.
<script type="text/javascript">
  // Retrieve the element by tag name, returns an array so use the zeroth array element
  var myPlayer,
    vTag = document.getElementsByTagName('video-js')[0];

  // Assign the needed attributes
  vTag.setAttribute('data-account', 1507807800001);
  vTag.setAttribute('data-player', 'BdGVdOd36');

  // Use the bc() method to initialize the Brightcove Player
  myPlayer = bc('vTag');

  myPlayer.src({ src: "//solutions.brightcove.com/bcls/assets/videos/Tiger.m3u8", type: "application/x-mpegURL"});
  // Mute (in case there is an audio track, in which case play won't work) and play the video
  myPlayer.muted(true);
  myPlayer.play();
</script> 

CSAI con conmutación por error de anuncios SSAI

Con la conmutación por error de anuncios activada, Brightcove Player detecta si hay un bloqueador de anuncios en el navegador. De lo contrario, se reproducen sus anuncios del lado del cliente (CSAI). Si se detecta un bloqueador de anuncios, el reproductor solicita automáticamente sus anuncios del lado del servidor (SSAI). Para obtener más detalles, consulte la SSAI: Detección de bloque de anuncios y conmutación por error automática documento.

De forma predeterminada, llamando al bc() El método obliga al reproductor a inicializarse inmediatamente. Si desea utilizar la conmutación por error de anuncios con el bc() método, debe esperar a que el reproductor verifique si hay un bloqueador de anuncios presente. Puede hacer esto con el siguiente código:

bc.usingAdBlocker().then(function() {
  // The promise callback receives a true/false result, which is stored
  // internally, so future bc() calls will use it. There is no need to
  // handle it yourself.
  //
  // You can pass custom arguments to bc, as normal, if needed.
  bc();
});

Ejemplo

Aquí hay un código de ejemplo.

HTML

Este es el HTML del ejemplo.

<video-js id="myPlayerID"
	data-embed="default"
	data-application-id=""	
	controls=""
	width="640"
	height="360"></video-js>
<script src="//players.brightcove.net/1752604059001/W6RmT8TVL_default/index.min.js"></script>

JavaScript

Este es el JavaScript del ejemplo.

<script type="text/javascript">
  // +++ Define the player options +++
  var options = {
    controlBar: {
      volumePanel: {
        inline: false,
        vertical: true
      }
    }
  };

  // +++ Add the player attributes +++
  var myPlayer,
		myPlayerEl = document.getElementById("myPlayerID");
  myPlayerEl.setAttribute('data-account', 1752604059001);
  myPlayerEl.setAttribute('data-player', 'W6RmT8TVL');
  myPlayerEl.setAttribute('data-video-id', 5802784116001);

  // +++ Create the player +++
  bc.usingAdBlocker().then(function() {
    myPlayer = bc(myPlayerEl, options);

    // +++ Optionally, mute and start playback +++
    myPlayer.on('loadedmetadata',function(){
      myPlayer.muted(true);
      myPlayer.play();
    });
  });
</script>