sábado, 3 de octubre de 2015

Programando un reproductor de audio en HTML5



La API para medios fue desarrollada tanto para video como para audio. Cada evento, método y propiedad incorporada para video funcionará también con audio. Debido a esto, solo necesitamos reemplazar el elemento <video> por el elemento <audio> en nuestra plantilla e instantáneamente obtenemos un reproductor de audio:

Código 5-13. Plantilla para el reproductor de audio.

<!DOCTYPE html>
<html lang="es">
<head>
<title>Reproductor de Audio</title>
<link rel="stylesheet" href="reproductor.css">
<script src="reproductor.js"></script>
</head>
<body>
<section id="reproductor">
<audio id="medio">
<source src="http://minkbooks.com/content/beach.mp3">
<source src="http://minkbooks.com/content/beach.ogg">
</audio>
<nav>
<div id="botones">
<button type="button" id="reproducir">Reproducir</button>
</div>
<div id="barra">
<div id="progreso"></div>
</div>
<div style="clear: both"></div>
</nav>
</section>
</body>
</html>

En la nueva plantilla del Código 5-13, solo incorporamos un elemento <audio> y sus fuentes correspondientes, dejando el resto del código intacto, incluyendo los archivos externos. No necesitamos cambiar nada más, los eventos, métodos y propiedades son los mismos para los dos medios (audio y video).
Hágalo usted mismo: Cree un nuevo archivo llamado audio.html, copie el Código 5-13 dentro de este archivo y ábralo en su navegador. Use los mismos archivos reproductor.css y reproductor.js creados anteriormente para hacer funcionar su reproductor de audio.

Referencia rápida

Veamos un repaso de este cápitulo 5.
Video y audio son parte esencial de la web. HTML5 incorpora todos los elementos necesarios para aprovechar estas herramientas y utilizarlas en nuestras aplicaciones web.

  • Elementos

HTML5 provee dos nuevos elementos HTML para procesar medios y una API específica para acceder a la librería de medios.
    • <video> :Este elemento nos permite insertar un archivo de video en un documento HTML.
    • <audio> :Este elemento nos permite insertar un archivo de audio en un documento HTML.


  • Atributos
La especificación también provee atributos para los elementos <video> y <audio>:
  • src :Este atributo declara la URL del medio a ser incluido en el documento. Puede usar el elemento <source> para proveer más de una fuente y dejar que el navegador elija cual reproducir.
  • controls :Este atributo, si está presente, activa los controles por defecto. Cada navegador provee sus propias funciones, como botones para reproducir y pausar el medio, así como barra de progreso, entre otras.
  • autoplay ;Este atributo, si está presente, le indicará al navegador que comience a reproducir el medio lo más pronto posible.
  • loop :Este atributo hará que el navegador reproduzca el medio indefinidamente.
  • preload :Este atributo recomienda al navegador qué hacer con el medio. Puede recibir tres valores diferentes: none, metadata y auto. El valor none le dice al navegador que no descargue el archivo hasta que el usuario lo ordene. El valor metadata le recomienda al navegador descargar información básica sobre el medio. El valor auto le dice al navegador que comience a descargar el archivo tan pronto como sea posible.


  • Atributos de video
Existen algunos atributos que son específicos para el elemento <video>:
    • poster Este atributo provee una imagen para mostrarla en lugar del video antes de ser reproducido.
    • width Este atributo determina el tamaño del video en pixeles.
    • height Este atributo determina el tamaño del video en pixeles.


  • Eventos
Los eventos más relevantes para esta API son:
    • progress :Este evento es disparado periódicamente para informar el progreso en la descarga del medio.
    • canplaythrough :Este evento es disparado cuando el medio completo puede ser reproducido sin interrupción.
    • canplay :Este evento es disparado cuando el medio puede ser reproducido. A diferencia del evento previo, éste es disparado cuando solo parte del archivo fue descargado (solo los primeros cuadros de un video, por ejemplo).
    • ended :Este evento es disparado cuando la reproducción llega al final del medio.
    • pause :Este evento es disparado cuando la reproducción es pausada.
    • play :Este evento es disparado cuando el medio comienza a ser reproducido.
    • error :Este evento es disparado cuando ocurre un error. El evento es despachado desde el elemento <source> (si se encuentra presente) correspondiente a la fuente del medio que produjo el error.


  • Métodos
Los métodos más comunes para esta API son:
    • play() :Este método comienza o continúa la reproducción del medio.
    • pause() :Este método pausa la reproducción del medio.
    • load() :Este método descarga el archivo del medio. Es útil en aplicaciones dinámicas.
    • canPlayType(formato) :Este método indica si el formato del archivo que queremos utilizar es soportado por el navegador o no. Retorna una cadena vacía si el navegador no puede reproducir el medio y los textos “maybe” (quizás) o “probably” (probablemente) basado en la confianza que tiene de que el medio pueda ser reproducido o no. 


  • Propiedades
Las propiedades más comunes de esta API son:
    • paused :Esta propiedad retorna true (verdadero) si la reproducción del medio se encuentra pausada o no ha comenzado.
    • ended :Esta propiedad retorna true (verdadero) si la reproducción llegó al final del medio.
    • duration :Esta propiedad retorna la duración del medio en segundos.
    • currentTime :Esta es una propiedad que puede retornar o recibir un valor para informar la posición en la cual el medio se encuentra reproduciendo o establecer una nueva posición donde comenzar a reproducir.
    • error :Esta propiedad retorna el valor del error cuando un error ocurre.
    • buffered :Esta propiedad ofrece información sobre la cantidad del archivo que fue descargado e introducido en el buffer. Retorna un array conteniendo datos sobre cada porción del medio que ha sido descargada. Si el usuario salta a otra parte del medio que no ha sido aún descargada, el navegador comenzará a descargar el medio desde ese punto, generando una nueva porción en el buffer. Los elementos del array son accesibles por medio de los atributos end() y start(). Por ejemplo, el código buffered.end(0) retornará la duración en segundos de la primera porción del medio encontrada en el buffer.


Espero haber ayudado en algo. Hasta la próxima oportunidad!








No hay comentarios:

Publicar un comentario en la entrada