Muestra de Brightcove Player: Reproducir/pausar vídeo desde iframe parent

En este tema, aprenderá a usar un botón en la página principal de un reproductor de iframe para reproducir o pausar el video en el reproductor de iframe.

Ejemplo de jugador

Haga clic en el botón reproducir o pausar, que es parte de la página principal del iframe, para ver cómo inicia la reproducción / pausa del video en el reproductor de iframe.

Ver la pluma 18192-reproducir-video-iframe-parent por Brightcove Learning Services ( rcrooks1969 ) en CodePen.

Código fuente

Ver el solución completa en GitHub.

Uso de CodePen

Estos son algunos consejos para utilizar eficazmente el CodePen anterior:

  • Cambie la visualización real del reproductor haciendo clic en el Result botón.
  • Haga clic en el HTML/CSS/JS botones para mostrar UNO de los tipos de código.
  • Más adelante, en este documento, la lógica, el flujo y el estilo utilizados en la aplicación se analizarán en la configuración de reproductor/HTML, Flujo de aplicaciones y Estilo de la aplicación. secciones. La mejor manera de seguir la información de estas secciones es:
    1. Haga clic en el EDIT ON CODEPEN en el CodePen y tenga el código disponible en un navegador / pestaña del navegador.
    2. En CodePen, ajusta el código que quieres que se muestre. Puede cambiar el ancho de las distintas secciones de código dentro de CodePen.
    3. Ver el Configuración de reproductor / HTML , Flujo de aplicación y / o Estilo de aplicación secciones en otra pestaña del navegador / navegador. Ahora podrá seguir las explicaciones del código y, al mismo tiempo, ver el código.

secuencia de desarrollo

Esta es la secuencia de desarrollo recomendada:

  1. Utilice la implementación del reproductor de incrustación en la página para probar la funcionalidad de su reproductor, complemento y CSS (si es necesario CSS)
  2. Coloque el JavaScript y CSS del plugin en archivos separados para pruebas locales
  3. Implementa el código del plugin y CSS en tu servidor una vez que hayas resuelto cualquier error.
  4. Usa Studio para agregar el plugin y CSS a tu reproductor
  5. Reemplace la implementación del reproductor de incrustación en página si determina que la implementación de iframe se ajusta mejor (se detalla en la siguiente sección)

Para obtener más información sobre estos pasos, consulte la sección Paso a paso: Guía de desarrollo de plugins.

iframe o incrustación en página

Al desarrollar mejoras para Brightcove Player, deberás decidir si el código se ajusta mejor a la implementación de iframe o incrustación en la página. La recomendación de práctica recomendada es crear un complemento para usarlo con una implementación de iframe. Las ventajas de utilizar el reproductor iframe son:

  • Sin colisiones con JavaScript y/o CSS existentes
  • Responde automáticamente
  • El iframe facilita el uso en aplicaciones de redes sociales (o siempre que el vídeo tenga que «viajar» a otras aplicaciones)

Aunque la integración del reproductor de incrustación en la página puede ser más compleja, hay ocasiones en que planificará el código en torno a esa implementación. Para generalizar, este enfoque es mejor cuando la página que contiene necesita comunicarse con el reproductor. En concreto, estos son algunos ejemplos:

  • El código de la página que contiene necesita escuchar y actuar en función de los eventos de los jugadores
  • El reproductor utiliza estilos de la página que lo contiene
  • El iframe hará que la lógica de la aplicación falle, como un redireccionamiento desde la página que contiene

Incluso si tu implementación final no utiliza el código iframe, puedes seguir usando el código de incrustación en la página con un plugin para tu JavaScript y un archivo separado para tu CSS. Esto encapsula tu lógica para que puedas utilizarla fácilmente en varios reproductores.

Recursos de API/plugins utilizados

Métodos API
play()
pause()

El código también usa JavaScript postMessage() método en la página principal, y addEventListener() en el iframe.

Configuración de reproductor/HTML

En esta sección se detalla cualquier configuración especial necesaria durante la creación del reproductor. Además, se describen otros elementos HTML que deben agregarse a la página, más allá del código de implementación del reproductor de incrustación de la página.

Configuración del reproductor

El objetivo de esta muestra es comunicarse con la versión iframe del reproductor, por lo que se utiliza el código de implementación del reproductor.

Otros HTML

Se agregan dos botones HTML a la página.

Flujo de aplicaciones

La lógica básica detrás de esta aplicación es:

  • Cuando el Tocar o Pausa se hace clic en el botón, JavaScript postMessage() El método envía un valor de cadena correspondiente al iframe.
  • El iframe usa el addEventListener() evento para escuchar el mensaje, luego actúa en consecuencia.

Cree la URL y el objeto correctos para postMessage() puede ser usado

Busque el código etiquetado:

// ### Create functions that post either play or pause ###

La postMessage() El método se utiliza para enviar un mensaje al objeto Window del iframe. El primer argumento son los datos pasados como parte del evento. (En este caso es simplemente una cadena, pero puede ser un objeto). El segundo argumento especifica el origen del iframe. Puede usar el comodín '*' para que el evento se envíe a cualquier contenido del iframe, sin importar de dónde provenga, pero esto se considera una mala práctica de seguridad. Utilizando theURL variable (ya sea http://players.brightcove.net o https://players.brightcove.net) ya que el argumento significa que el evento solo se enviará al iframe si el contenido se originó en esa URL.

Escuche el mensaje en iframe

Busque el código etiquetado:

// ### This is the plugin code ###

El propósito de la muestra es mostrar cómo puede comunicarse con el iframe del padre, por lo que usar la implementación del código en la página primero no tiene sentido aquí. El enfoque de mejores prácticas para asociar código con una implementación de reproductor de iframe es usar un complemento, así que eso es lo que se hace aquí. Para mayor comodidad, el código del complemento se muestra comentado en CodePen.

El método clave aquí es JavaScript addEventListener() método. La postMessage() método despacha un evento de tipo message (ese es siempre el nombre del evento con postMessage()). El controlador de eventos definido es controlVideo (el segundo argumento). En el controlVideo() controlador de eventos, un if La declaración se usa para verificar el valor de los datos pasados por postMessage() , en este caso ya sea playVideo o pauseVideo. Según el valor de los datos transmitidos, el vídeo se reproduce o se pone en pausa.

Estilismo de aplicaciones

El CSS simple del complemento oculta el botón de reproducción grande para fomentar el uso de los botones de reproducción y pausa.

Código de plugin

Normalmente, al convertir JavaScript en un complemento de Brightcove Player, se necesitan cambios nominales. Un cambio necesario es reemplazar el uso estándar del ready() método por el código que define un complemento.

Aquí está el código de inicio a JavaScript muy utilizado que funcionará con el reproductor:

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

Cambiarás la primera línea para usar la sintaxis estándar para iniciar un plugin de Brightcove Player:

videojs.registerPlugin('pluginName', function(options) {
  var myPlayer = this;
  ...
});

Como se mencionó anteriormente, puede ver el código JavaScript del complemento en el repositorio de GitHub correspondiente de este documento: listen-for-parent.js.

Uso del complemento con un reproductor

Una vez que tengas los archivos CSS y JavaScript del plugin almacenados en una ubicación accesible a Internet, puedes usar el plugin con un reproductor. En Studio's JUGADORES módulo puedes elegir un jugador, luego en el PLUGINS sección agregue las URL a los archivos CSS y JavaScript, y también agregue el Nombre y Opciones , si se necesitan opciones.