6.4 Inserción de audio y video en HTML5
HTML5 incorpora dos elementos nativos para reproducir contenido multimedia sin necesidad de plugins externos:
- <audio>: para contenido de audio.
- <video>: para contenido de video.
Ambos elementos permiten incluir múltiples fuentes, atributos de control y contenido alternativo para navegadores que no soporten HTML5.
1. Formatos y compatibilidad
No todos los navegadores soportan igual los códecs. Las extensiones más comunes son:
| Formato | Extensión | Contenedor | Códec | Soporte |
|---|---|---|---|---|
| MP3 | .mp3 | – | MPEG Layer 3 | Chrome, Firefox, Safari, Edge |
| Ogg Vorbis | .ogg/.oga | Ogg | Vorbis | Firefox, Chrome, Edge (no Safari) |
| WAV | .wav | WAVE | PCM | Todos |
| H.264/MP4 | .mp4 | MP4 | H.264 | Chrome, Safari, Edge (no Firefox sin plugin) |
| WebM | .webm | WebM | VP8/VP9 | Chrome, Firefox, Edge (no Safari) |
2. El elemento <audio>
Básico para incluir pistas de audio. Sus atributos más importantes:
- controls: muestra barra de reproducción (play/pause, volumen, etc.).
- autoplay: inicia reproducción automáticamente (ojo con el modo mutado en navegadores).
- loop: repite en bucle.
- muted: silencia la pista al cargarla.
- preload: puede ser auto (descarga completa), metadata (sólo metadatos) o none (nada hasta play).
Ejemplo de uso de <audio> con varias fuentes y fallback:
<audio controls preload='metadata'> <source src='audio/pista.mp3' type='audio/mpeg'> <!-- MP3 para Chrome, Safari, Edge --> <source src='audio/pista.ogg' type='audio/ogg'> <!-- Ogg Vorbis para Firefox, Chrome --> <source src='audio/pista.wav' type='audio/wav'> <!-- WAV por compatibilidad --> Tu navegador no soporta el elemento de audio. Descarga la <a href='audio/pista.mp3'>pista MP3</a>. </audio>
3. El elemento <video>
Permite reproducir vídeo nativo. Atributos clave muy parecidos a <audio>:
- width y height: dimensiones del reproductor.
- poster: imagen estática que se muestra antes de pulsar “play”.
- Controles: controls, autoplay, loop, muted, preload.
Ejemplo de <video> con pistas de subtítulos y múltiples fuentes:
<video width='640' height='360' controls poster='video/portada.jpg' preload='metadata'> <source src='video/pelicula.mp4' type='video/mp4'> <!-- H.264/MP4: muy soportado --> <source src='video/pelicula.webm' type='video/webm'> -->VP8/VP9 vorbis <> <track kind='subtitles' srclang='es' label='Español' src='video/subs_es.vtt' default> <track kind='subtitles' srclang='en' label='English' src='video/subs_en.vtt'> Lo sentimos, tu navegador no soporta reproducir video. <a href='video/pelicula.mp4'>Descárgalo aquí</a> </video>
4. Etiqueta <track> para accesibilidad
Con <track> añadimos subtítulos, transcripciones, descripciones de audio o capítulos. Atributos:
- kind: subtitles, captions, descriptions, chapters, metadata.
- srclang: lenguaje (ISO 639-1).
- label: texto que describe la pista.
- src: URL del archivo .vtt (WebVTT).
- default: pista seleccionada por defecto.
5. Atributos detallados
- controls
- Muestra la interfaz de usuario nativa.
- autoplay
- Reproduce automáticamente (alerta: la mayoría de navegadores bloquean audio no muteado).
- muted
- Silencia la reproducción. Obligatorio para autoplay en muchos casos.
- loop
- Vuelve al inicio cuando termina.
- preload
-
- none: no precarga.
- metadata: descarga sólo cabeceras (duración, tamaño).
- auto: precarga todo el archivo.
- poster (sólo video)
- URL de imagen que se muestra antes de reproducir.
6. Medios progresivos vs streaming
Por defecto el audio y vídeo HTML5 funcionan por descarga progresiva: el navegador baja datos a medida que se reproducen. Para streaming adaptativo (HLS, DASH) debes usar extensiones JS (hls.js, dash.js) o etiquetas específicas servidas por CDN.
7. JavaScript y la API de medios
Con JavaScript puedes controlar la reproducción, consultar el estado y reaccionar a eventos:
<video id='miVideo' width='320' height='180' controls>
<source src='video/muestra.mp4' type='video/mp4'>
</video>
<script>
const v = document.getElementById('miVideo');
// Reproducir
v.play().catch(err => console.warn('No autoplay:', err));
// Pausar
// v.pause();
// Volumen al 50%
v.volume = 0.5;
// Eventos
v.addEventListener('ended', () => console.log('Vídeo finalizado'));
v.addEventListener('timeupdate', () => {
console.log(`Tiempo transcurrido: ${v.currentTime.toFixed(1)}s`);
});
</script>
8. Buenas prácticas
- Proporcionar al menos dos formatos de fuente para máxima compatibilidad.
- Incluir texto alternativo o enlaces de descarga para entornos sin soporte.
- Usar <track> para mejorar la accesibilidad a usuarios con discapacidad auditiva.
- No abusar de autoplay (mala experiencia de usuario).
- Optimizar tamaño y calidad de archivos (compresión, bitrate).
Con estos conceptos dominarás la inserción de audio y vídeo en tus páginas HTML5, ofreciendo una experiencia rica, accesible y compatible con la mayoría de navegadores.
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.