Este documento proporciona información de referencia del API del reproductor JavaScript de YouTube.
El API de JavaScript permite a los usuarios controlar los reproductores de vídeo insertados de YouTube a través de JavaScript. Las llamadas se pueden realizar para reproducir, detener, buscar un determinado momento de un vídeo, ajustar el volumen, silenciar el reproductor y otras muchas funciones útiles.
El usuario final debe tener instalado Flash Player 8 o superior para una correcta visualización. Debido a este requisito, te sugerimos que utilices SWFObject para insertar el objeto SWF y detectar la versión de Flash Player del usuario.
Nota: Para probar cualquiera de estas llamadas, deberás ejecutar tu archivo en un servidor web, ya que el reproductor Flash restringe las llamadas entre los archivos locales e Internet.
Para habilitar el API de JavaScript, deberás transmitir el parámetro de URL enablejsapi=1 a la URL del reproductor que deseas controlar. Por ejemplo, imagina que deseas utilizar la siguiente URL para insertar el objeto SWF.
http://www.youtube.com/v/VIDEO_ID&enablejsapi=1
Esto activa los gestionadores del API de JavaScript en el reproductor, y además indica al reproductor que avise a la página HTML contenedora a través de una devolución de llamada cuando el reproductor esté cargado y listo para recibir llamadas de JavaScript. Cuando el reproductor esté listo, se ejecutará la función JavaScript onYouTubePlayerReady.
También puede transmitir un parámetro playerapiid, que identificará el reproductor cuando se ejecute la devolución de llamada a onYouTubePlayerReady. Sea cual sea el valor que se trasmita, playerapiid se transmitirá a onYouTubePlayerReady como primer argumento.
http://www.youtube.com/v/VIDEO_ID&enablejsapi=1&playerapiid=ytplayer
Consulta los ejemplos que aparecen a continuación para obtener más información sobre cómo insertar un objeto SWF de reproductor de YouTube en tu página.
Para ejecutar los métodos de API del reproductor, en primer lugar deberás obtener una referencia al objeto de reproductor que deseas controlar. Para ello, ejecuta getElementById() en la etiqueta object o embed que contiene el objeto SWF del reproductor utilizando SWFObject para insertar el objeto SWF del reproductor.
player.playVideo():Voidplayer.pauseVideo():Voidplayer.stopVideo():VoidstopVideo(), un vídeo no se podrá reanudar sin volver a cargar el reproductor o cargar un nuevo vídeo (sólo reproductores sin bordes). Al ejecutar stopVideo(), en primer lugar el reproductor emitirá un evento de finalización (0), seguido de un evento no iniciado (-1).player.clearVideo():VoidstopVideo().player.getVideoBytesLoaded():Numberplayer.getVideoBytesTotal():Numberplayer.getVideoStartBytes():Numberplayer.mute():Voidplayer.unMute():Voidplayer.isMuted():Booleanplayer.setVolume(volume):Voidplayer.getVolume(volume):VoidgetVolume() devolverá el volumen aunque el reproductor esté silenciado.player.seekTo(seconds, allowSeekAhead):VoidallowSeekAhead determina si el reproductor va a realizar una nueva solicitud al servidor si seconds trasciende los datos de vídeo actualmente cargados. Ten en cuenta que seekTo() intentará buscar el fotograma clave más cercano a los segundos (seconds) especificados. Esto significa que a veces el comienzo de la reproducción puede buscar realmente justo antes o justo después del tiempo solicitado, normalmente no más de ~2 segundos.player.getPlayerState():Numberplayer.getCurrentTime():Numberplayer.getDuration():NumbergetDuration() devolverá 0 hasta que se hayan cargado los metadatos del vídeo, lo que normalmente se produce justo después de que comience la reproducción del vídeo.player.addEventListener(event, listener):Voidplayer.getVideoUrl():Stringplayer.getVideoEmbedCode():StringonStateChangeonError100 para "No se ha encontrado el vídeo". Esto se produce si se ha eliminado un vídeo (por cualquier motivo) o si el usuario lo ha marcado como privado o no insertable.onYouTubePlayerReady(playerid)playerapiid al reproductor a través de argumentos URL, a continuación se transmitirá a esta función. Esta función se debe implementar en la página HTML que contenga el reproductor de YouTube.Te recomendamos que utilices SWFObject para insertar cualquier reproductor al que se vaya acceder mediante el API de JavaScript. Esto permite detectar la versión de Flash Player del usuario final (el API de JavaScript requiere Flash Player 8 o superior), y también deshacerse del cuadro "Haga clic para activar este control" cuando utilice Internet Explorer para ver el reproductor.
Para habilitar el API en el objeto SWF, deberá transmitir el parámetro enablejsapi=1.
Consulte más adelante un ejemplo de cómo utilizar las secuencias de comandos para insertar un reproductor de YouTube con el API de JavaScript habilitada, y con un objetoplayerapiid de ytplayer.
<script type="text/javascript" src="swfobject.js"></script>
<div id="ytapiplayer">
You need Flash player 8+ and JavaScript enabled to view this video.
</div>
<script type="text/javascript">
var params = { allowScriptAccess: "always" };
var atts = { id: "myytplayer" };
swfobject.embedSWF("http://www.youtube.com/v/VIDEO_ID&enablejsapi=1&playerapiid=ytplayer",
"ytapiplayer", "425", "356", "8", null, null, params, atts);
</script>
El parámetro allowScriptAccess del código es necesario para permitir que el objeto SWF del reproductor ejecute funciones en la página HTML contenedora, ya que el reproductor se encuentra alojado en un dominio distinto al de la página HTML.
El único atributo que se va a transmitir es la id del objeto insertado, en este caso myytplayer. Esta ID es la que utilizaremos para obtener una referencia al reproductor mediante getElementById().
swfobject.embedSWF cargará el reproductor desde YouTube y lo insertará en tu página.
swfobject.embedSWF(swfUrlStr, replaceElemIdStr, widthStr, heightStr, swfVersionStr, xiSwfUrlStr, flashvarsObj, parObj, attObj)
swfUrlStr: es la URL del objeto SWF. Ten en cuenta que hemos añadido los parámetros enablejsapi y playerapiid a la URL de SWF de YouTube normal para habilitar las llamadas del API de JavaScript.replaceElemIdStr: es la ID del objeto HTML DIV que sustituirá el contenido insertado. En el ejemplo anterior, es ytapiplayer.widthStr: el ancho del reproductor.
heightStr: la altura del reproductor.
swfVersionStr: la versión mínima necesaria para que el usuario vea el contenido. En este caso, es necesaria la versión 8 o superior. Si el usuario no tiene la versión 8 o superior, verá la línea predeterminada de texto en el objeto HTML DIV.
xiSwfUrlStr: (opcional) especifica la URL de tu instalación rápida de SWF. No se ha utilizado en este ejemplo.
flashVarsObj: (opcional) especifica las FlashVars en los pares nombre:valor. No se ha utilizado en este ejemplo.
parObj: (opcional) los parámetros del objeto insertado. En este caso, hemos definido allowScriptAccess.
AttObj: (opcional) los atributos del objeto insertado. En este caso, hemos definido la ID en myytplayer.
Para más información, consulta la documentación de SWFObject.
Una vez que el reproductor esté listo, ejecutará onYouTubePlayerReady.
Para obtener la referencia del reproductor, utiliza getElementById(). Cuando tengas el objeto, podrás comenzar a ejecutar llamadas al API.
function onYouTubePlayerReady(playerId) {
ytplayer = document.getElementById("myytplayer");
}
Ahora podrás ejecutar funciones con la referencia del reproductor. Por ejemplo, si deseas reproducir un vídeo una vez que un usuario ha hecho clic en un enlace, deberías introducir lo siguiente:
function play() {
if (ytplayer) {
ytplayer.playVideo();
}
}
<a href="javascript:void(0);" onclick="play();">Play</a>
O simplemente,
<a href="javascript:ytplayer.playVideo()">Play</a>
Para suscribirse a eventos es necesario añadir una función de escucha de eventos a la referencia del reproductor. Por ejemplo, para recibir una notificación cuando el estado del reproductor cambie, añade una función de escucha de eventos a onStateChange e incluye una función de devolución de llamada.
function onYouTubePlayerReady(playerId) {
ytplayer = document.getElementById("myytplayer");
ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
}
function onytplayerStateChange(newState) {
alert("Player's new state: " + newState);
}
Aquí te mostramos un sencillo ejemplo en el que aparecen muchas de las funciones. Observa la superficie para ver lo que se esconde debajo.