Cómo usar la YouTube IFrame Player API en JavaScript cargar y reproducir videos con JavaScript
- 👤 Andrés Cruz
Siguiendo trabajando con las APIs ahora le toca al turno al gigante Google y su plataforma YouTube la cual sirve para mucho más que reproducir música y ver videos de gatos... YouTube cuenta con una API que se encuentra disponible para JavaScript desde la cual podemos tener un gran control sobre los videos de YouTube integrados en nuestra web.
Integrar videos de YouTube en una web es sencillo… hasta que necesitas control absoluto sobre lo que ocurre dentro del reproductor. Ahí es donde entra la YouTube IFrame Player API, una herramienta que descubrí después de trabajar con otras APIs de audio y que me permitió pasar de simples embeds a controlar videos como si fueran míos: reproducir, pausar, detectar estados, automatizar listas y hasta encadenar varios videos sin tocar un iframe manualmente.
En esta guía te llevo desde cero hasta usos avanzados, con ejemplos reales y problemas que yo mismo enfrenté al implementarla.
Qué es la YouTube IFrame Player API y para qué sirve
YouTube ofrece una API que te permite crear reproductores de forma dinámica con JavaScript, en lugar del clásico copiar-pegar un iframe. Esto desbloquea funciones como:
- Reproducir, pausar, adelantar o cambiar volumen
- Detectar cuando un video termina (crucial para playlists automáticas)
- Cambiar un video por otro sin recargar la página
- Cambiar controles, colores, subtítulos, tema, etc.
- Crear listas personalizadas desde tus propios datos
Con la API, es muy simple intervenir el comportamiento del video. Por ejemplo, en uno de mis proyectos tenía una lista de canciones en HTML y necesitaba que al terminar una, cargara la siguiente sin intervención del usuario. Con esta API fue trivial.
Cómo se diferencia de la inserción tradicional de un iframe
La IFrame Player API te da un reproductor programable:
- Método Nivel de control Recomendado para
- Copiar/pegar iframe Muy limitado Blogs, embeds simples
- IFrame Player API Total control Webs interactivas, reproductores personalizados, apps JS
Incluir la API de JavaScript en nuestra web
Lo primero que debemos hacer es incluir dicha API, la cual no es más que un archivo JavaScript:
<script src="http://www.youtube.com/player_api"></script>O
<script src="https://www.youtube.com/iframe_api"></script>Carga síncrona vs carga asíncrona
Recomendación: usa carga asíncrona para no bloquear tu web:
var tag = document.createElement("script");
tag.src = "https://www.youtube.com/iframe_api";
var first = document.getElementsByTagName("script")[0];
first.parentNode.insertBefore(tag, first);Cargando un video de YouTube
Una vez incluida nuestra librería lo siguiente que tenemos que hacer es cargar un video de manera programática con JavaScript empleando el siguiente código JavaScript:
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player("player", {
width: 640,
height: 390,
videoId: "VIDEO_ID_AQUI",
events: {
onReady: onPlayerReady,
onStateChange: onPlayerStateChange,
},
});
}Controlar el reproductor con JavaScript
De una vez definimos dos eventos que se ejecutarán una vez esté preparado y listo el video de YouTube para su reproducción (onPlayerReady) y cuando el video cambie de estatus -por ejemplo- termine la reproducción del mismo (onPlayerStateChange):
function onPlayerReady(event) {
event.target.playVideo();
}
function onPlayerStateChange(event) {
if (event.data === 0) {
//video finalizado
}
}Se activa en eventos clave del reproductor:
- Estado Significado
- -1 no iniciado
- 0 finalizado
- 1 reproduciendo
- 2 en pausa
- 3 buffer
- 5 video preparado (cued)
Cómo reaccionar al terminar un video (estado 0)
Al finalizar el vídeo, usualmente cargamos otro:
function onPlayerStateChange(event) {
if (event.data === 0) {
event.target.loadVideoById({
videoId: siguienteVideoId,
});
}
}Reproduciendo un nuevo video al finalizar la reproducción de un video en YouTube
También necesitaremos incluir el evento que nos indicará cada vez que presente un cambio en el video, en nuestro caso nos interesa saber cuando se terminó la reproducción de un video para cargar otro mediante el método loadVideoById que recibe el identificador de un video en YouTube:
function onPlayerStateChange(event) {
if (event.data === 0) {
event.target.loadVideoById({
videoId: $($('.lista_canciones li')[index]).attr("data-href")
});
}
}Con esto tenemos los elementos básicos para crear nuestra propia lista de reproducción automatizada y personalizada desde nuestra web; puedes consultar la documentación oficial en el siguiente enlace: YouTube Player API Reference for iframe Embeds.
Reproducir, pausar, cambiar volumen y saltar de video
player.playVideo();
player.pauseVideo();
player.seekTo(30);
player.setVolume(50);
player.stopVideo();Métodos esenciales de YT.Player:
- playVideo() → iniciar
- pauseVideo() → pausar
- seekTo(segundos) → saltar
- loadVideoById(id) → cambiar video al vuelo
- cueVideoById(id) → cargar sin reproducir
- getPlayerState() → preguntar el estado
Opciones avanzadas del reproductor (playerVars)
YouTube ofrece un arsenal de parámetros:
- autoplay
- controls
- start / end
- rel
- modestbranding
- playsinline
- playlist
- loop
- color (white/red)
- cc_load_policy
Ejemplo:
playerVars: {
autoplay: 1,
controls: 2,
modestbranding: 1,
rel: 0,
playsinline: 1,
}Usos comunes
- Automatizar reproducción
- Cuando desarrollaba un listado de canciones, necesitaba que al terminar una, iniciara la siguiente. La API lo resolvió con event.data === 0.
- Cargar videos según selección del usuario
- Logré que al hacer clic en un elemento del DOM, cambiara el video sin recargar la página usando loadVideoById.
- Mejorar la UX
- El reproductor me avisaba cuando el video estaba listo (onReady), así que ajusté la UI para mostrar una animación de “cargando”.
Preguntas frecuentes (FAQ)
- ¿Necesito saber mucho JavaScript?
- No. Con funciones básicas y callbacks te manejas bien.
- La IFrame API controla el reproductor.
- La Data API maneja datos (búsquedas, listas, subir videos…).
- ¿Puedo evitar totalmente los videos relacionados?
- No al 100%, pero rel=0 mejora el comportamiento.
Conclusión
La YouTube IFrame Player API es una herramienta potentísima para cualquier sitio que necesite gestionar videos más allá del típico iframe estático, yo lo uso con mi app de Academia para los cursos que cargo desde YouTube.
Con ella puedes:
- Crear reproductores dinámicos
- Detectar estados
- Automatizar listas
- Mejorar la UX
- Integrar videos de forma profesional
Si ya tienes una estructura de UI o listas propias, esta API te permitirá unirlo todo con un reproductor flexible y controlable.
Acepto recibir anuncios de interes sobre este Blog.
Aprende a dominar la API de YouTube IFrame Player con esta guía completa. Controla la reproducción, crea playlists automáticas y personaliza tus videos con JavaScript.