Ejemplo de jugador
El siguiente video se comportará de manera diferente según el navegador / plataforma en la que ejecute el video. Si el vídeo se reproduce automáticamente con audio, lo hace. De lo contrario, verá que el video comienza a reproducirse, pero aparecerá un botón para activar el sonido. Si hace clic en ese botón, escuchará el audio del video. Generalmente, cuando se usa iOS, Safari o Chrome, un video NO se reproducirá automáticamente si el video no está silenciado. Esta muestra muestra una forma de reproducir automáticamente el video y presenta un botón obvio para dejar de silenciar.
Si está utilizando un pre-roll IMA3, querrá ver el Usar un anuncio pre-roll sección de este documento. Esta sección detalla los cambios menores que deberá aplicar al código que se muestra en el siguiente CodePen para que la funcionalidad funcione con un anuncio previo al video de IMA.
Ver la pluma Reproducción automática con botón de activación de silencio 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:
- Haga clic en el EDIT ON CODEPEN en el CodePen y tenga el código disponible en un navegador / pestaña del navegador.
- 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.
- 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:
- 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)
- Coloque el JavaScript y CSS del plugin en archivos separados para pruebas locales
- Implementa el código del plugin y CSS en tu servidor una vez que hayas resuelto cualquier error.
- Usa Studio para agregar el plugin y CSS a tu reproductor
- 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 | Eventos API |
---|---|
silenciado () | metadatos cargados |
jugar () | |
sobre() | |
volumen() |
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
Además de la inclusión estándar de un id
en el video
etiqueta, la playsinline
se agrega el atributo para la funcionalidad de iOS:
<div id="playerContainer" class="outer">
<video-js id="myPlayerID"
data-video-id="5755775186001"
data-account="1752604059001"
data-player="default"
data-embed="default"
data-application-id=""
controls=""
playsinline></video-js>
</div>
Otros HTML
No se agregan a la página otros elementos HTML, aparte de los mencionados en la sección anterior.
Flujo de aplicaciones
La lógica básica detrás de esta aplicación es:
- Utilizar el
play()
método para intentar reproducir el vídeo. La llamada al método se asigna a una variable, que contendrá el valor devuelto por un JavaScript. promesa. - Si la promesa se resuelve (el video se está reproduciendo), active el sonido del reproductor y configure el nivel de volumen.
- Si la promesa es rechazada (el video NO se está reproduciendo), realice lo siguiente:
- Silencie el reproductor e inicie la reproducción del video (lo que hará ahora ya que el reproductor está silenciado).
- Cree dinámicamente un elemento de botón HTML, que actúa como el activar el sonido botón.
- Agrega un
click
oyente de eventos en el botón. - Configure el texto, el estilo, etc. del botón
- Coloque el botón sobre el jugador.
Intenta reproducir el video
Busque el código etiquetado:
// ### Wait for loadedmetadata then try to play video ###
Según el procedimiento estándar, espere a que loadedmetadata
evento antes de usar el play()
método. La promesa devuelta por la llamada al método se almacena en el promise
variable. Si el video se está reproduciendo, puede activar el sonido del reproductor y configurar el volumen.
Cuando se evita la reproducción automática, silencia el reproductor y reproduce el video
Busque el código etiquetado:
// ### If autoplay prevented: mute the video, play video and display unmute button ###
Aquí el catch
La lógica de la promesa te permite actuar cuando el video no comenzó en el reproductor. El reproductor se silencia mediante programación, por lo que se reproducirá el video. La play()
se vuelve a llamar al método, que iniciará el vídeo. Siguiendo este código, el botón se crea y configura dinámicamente.
Agrega un click
oyente de eventos al botón
Busque el código etiquetado:
// ### Add button's event listener ###
Usando JavaScript addEventListener()
, el controlador de eventos para un clic se crea dinámicamente. En el controlador de eventos, se activa el sonido del reproductor, se establece el nivel de volumen y, por último, se elimina el botón del DOM.
Configurar el botón
Busque el código etiquetado:
// ### Configure the button ###
En esta sección de código se establece la etiqueta del botón, se configura el aspecto del botón y se class
se agrega para una referencia CSS que posiciona el botón.
Agrega el botón al contenedor
Busque el código etiquetado:
// ### Add the button to the container ###
La única línea de código coloca el botón en el div
eso restringe al jugador.
Usar un anuncio pre-roll
Dado que el anuncio se está reproduciendo cuando aparece el botón para activar el sonido, debe activar el reproductor de anuncios en lugar del reproductor de contenido. Para hacer esto, usaría lo siguiente para el controlador de clics:
button.addEventListener("click", function() {
myPlayer.ima3.adPlayer.muted(false);
myPlayer.ima3.adPlayer.volume(volumeLevel);
//myPlayer.muted(false);
//myPlayer.volume(volumeLevel);
playerContainer.removeChild(button);
}
Las dos líneas de código para el control de volumen del reproductor de contenido se comentan y se dejan solo a modo de comparación.
No es necesario que realice el mismo cambio para el código que no sea de iOS / Safari / Chrome, ya que el volumen se modifica ANTES de que se cargue el anuncio (en el loadstart
evento), y esos cambios se transmiten al reproductor de anuncios cuando se carga.
Mira esto CodePen para un ejemplo práctico.
Estilismo de aplicaciones
Los tres selectores de CSS realizan lo siguiente:
- Configura el video
height
ywidth
a 100% para llenar el recipiente en el que se coloca. - Crea un selector de clases que se usa con el
div
que rodea al jugador. Los valores utilizados corresponden al tamaño del jugador. - Crea otro selector de clase que coloca el botón de activación de silencio en el centro de la
div
que rodea al jugador.
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: unmute-button.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.