API del reproductor de video incrustado
Puedes usar nuestra API de JavaScript para escuchar y controlar el reproductor incrustado. Nuestro reproductor iframe es compatible con el estándar de API player.js de Embedly.
1. Configuración
Primero, incluye la biblioteca player.js en tu página:
CDN
<script type="text/javascript" src="//cdn.embed.ly/player-0.1.0.min.js"></script>A continuación, inicializa el reproductor con tu iframe:
// Get reference to your iframe element
const iframe = document.getElementById('your-iframe-id');
// Create player instance
const player = new playerjs.Player(iframe);
// Wait for player to be ready before interacting
player.on('ready', () => {
console.log('Player is ready!');
// Now you can safely use player methods
});Siempre espera al evento ready antes de llamar a métodos del reproductor. El reproductor pondrá en cola los mensajes hasta que se dispare ready.
2. Eventos (métodos)
Estos son los métodos que puedes llamar en el reproductor para controlar la reproducción:
Control de reproducción
play() - Iniciar reproducción
player.play();pause() - Pausar reproducción
player.pause();Control de volumen
mute() - Silenciar el reproductor
player.mute();unmute() - Activar el sonido del reproductor
player.unmute();setVolume(volume) - Establecer el volumen (0-100)
player.setVolume(50); // Set to 50%Búsqueda de posición
setCurrentTime(seconds) - Ir a un instante concreto
player.setCurrentTime(30); // Seek to 30 secondsConsultas de estado
getPaused(callback) - Comprobar si el reproductor está en pausa
player.getPaused((paused) => {
console.log('Player is paused:', paused);
});getMuted(callback) - Comprobar si el reproductor está silenciado
player.getMuted((muted) => {
console.log('Player is muted:', muted);
});getVolume(callback) - Obtener el volumen actual (0-100)
player.getVolume((volume) => {
console.log('Current volume:', volume);
});getDuration(callback) - Obtener la duración del video en segundos
player.getDuration((duration) => {
console.log('Video duration:', duration, 'seconds');
});getCurrentTime(callback) - Obtener el tiempo de reproducción actual
player.getCurrentTime((time) => {
console.log('Current time:', time, 'seconds');
});3. Escuchas (eventos)
Estos son los eventos a los que puedes suscribirte para los cambios de estado del reproductor:
Eventos básicos
ready - Se dispara cuando el reproductor está listo para recibir comandos
player.on('ready', () => {
console.log('Player is ready for interaction');
});play - Se dispara cuando comienza la reproducción
player.on('play', () => {
console.log('Playback started');
});pause - Se dispara cuando se pausa la reproducción
player.on('pause', () => {
console.log('Playback paused');
});ended - Se dispara cuando termina la reproducción
player.on('ended', () => {
console.log('Playback finished');
});Eventos de progreso
timeupdate - Se dispara durante la reproducción con datos de tiempo actual y duración
player.on('timeupdate', (data) => {
console.log('Current time:', data.seconds);
console.log('Duration:', data.duration);
// Calculate progress percentage
const progress = (data.seconds / data.duration) * 100;
console.log('Progress:', progress + '%');
});progress - Se dispara durante la carga con datos del progreso del almacenamiento en búfer
player.on('progress', (data) => {
console.log('Buffering progress:', data.percent * 100 + '%');
});Manejo de errores
error - Se dispara cuando ocurre un error
player.on('error', (error) => {
console.error('Player error:', error);
});Ejemplo completo
Aquí tienes un ejemplo completo que muestra cómo configurar y usar la API del reproductor:
// Initialize player
const iframe = document.getElementById('video-player');
const player = new playerjs.Player(iframe);
// Set up event listeners
player.on('ready', () => {
console.log('Player ready!');
// Get initial state
player.getDuration((duration) => {
console.log('Video duration:', duration);
});
player.getVolume((volume) => {
console.log('Current volume:', volume);
});
});
player.on('play', () => {
console.log('Started playing');
});
player.on('pause', () => {
console.log('Paused');
});
player.on('timeupdate', (data) => {
// Update progress bar
const progress = (data.seconds / data.duration) * 100;
document.getElementById('progress-bar').style.width = progress + '%';
});
player.on('ended', () => {
console.log('Video finished');
});
player.on('error', (error) => {
console.error('Error:', error);
});
// Example control functions
function playVideo() {
player.play();
}
function pauseVideo() {
player.pause();
}
function setVolume(volume) {
player.setVolume(volume);
}
function seekTo(seconds) {
player.setCurrentTime(seconds);
}Si tienes varios reproductores en la misma página con el mismo src, puedes encontrar inconsistencias. Para evitarlo, añade un identificador único (UUID o marca de tiempo) al src de cada iframe.