View on GitHub

lenguaje-html

Apuntes de HTML

Vídeo en html

En HTML5 se introduce la interesante posibilidad de mostrar videos directamente desde nuestro navegador. De hecho, si arrastramos un video a la ventana del navegador, veremos que comienza a reproducirse en él. Para poder insertar videos en nuestras páginas HTML tenemos que utilizar la etiqueta <video>, que junto a la etiqueta <source> podremos utilizar estas capacidades multimedia de HTML5.

Ojo: Si lo que quieres es insertar videos desde Youtube, Vimeo u otro servicio alternativo, debes utilizar la etiqueta HTML iframe en lugar de la etiqueta <video>.

Video (modo básico)

La etiqueta <video> tiene varios atributos a nuestra disposición:

Atributo Valor Descripción

Sin embargo, esto mostrará el primer fotograma del video, con un tamaño de 640x480, pero se verá como una imagen, ya que no muestra los controles del video y tampoco tiene la autoreproducción activada. Podríamos solucionarlo indicando los atributos controls o autoplay.

Otro ejemplos básicos para colocar videos en nuestra página:
En este caso cargamos un video, pero que no se mostrará porque se ha indicado que se utilice una imagen de presentación que se mostrará hasta que el usuario pulse en el botón de reproducir de los controles. En el segundo ejemplo, tenemos un video que se reproduce automáticamente al cargar la página, en silencio y en bucle, iniciándose una y otra vez.

Desde 2017, Chrome, Firefox y otros navegadores establecieron un cambio de políticas con el atributo de reproducción automática autoplay, por lo que no funcionará salvo que el usuario haya interactuado antes en la página.

## Formatos de video 
Antes de continuar con el modo avanzado de etiquetas de video, debemos conocer una serie de conceptos básicos y los diferentes formatos de video que existen actualmente. En primer lugar, debemos saber que un archivo de video tiene dos partes principales: el formato contenedor, que es el formato del video en sí, mientras que en su interior puede tener múltiples componentes codificados con diferentes codecs.

![Formato contenedor de video](/lenguaje-html/images/formato-contenedor-video.png)

De hecho, un video básico suele tener, como mínimo, un componente de video y otro de audio, pero puede tener muchos más (subtítulos, imágenes, etc...). Estos detalles son muy importantes, ya que dependiendo del formato y/o codec de un video, puede que sea factible utilizarlo para web o no, así que hay que conocer un poco sobre estos conceptos.

A continuación tenemos un listado de los formatos/codecs más conocidos y utilizados:

* MP4	x264, DivX H264	Alta calidad. Codec x264 libre.	Sí, buen soporte
* WebM	VP8, VP9	Alternativa libre a MP4 de Google.	Sí, soporte medio
* AV1	Basado en VP10, Daala y Thor	Compite con HEVC/H.265	No, soporte bajo
* HEVC	x265, DivX HEVC	Futura evolución de MP4.	No, poco soporte
* OGV	Theora	Alternativa libre a MP4.	Con precaución
* MKV	Matroska	Buena compresión. Potente.	No, alto consumo CPU
* AVI	XviD, DivX 3/5	Menor compresión que MP4.	No, anticuado

Otros formatos como MOV, FLV, 3GP, MPG, RMVB o ASF/WMV no se recomiendan para su utilización en web ya que son anticuados, propietarios o poco eficientes. Si te interesa saber más sobre estos temas, aconsejo la lectura del artículo Formatos de video: Todo lo que deberías saber.

# Video (modo avanzado) 
Sin embargo, aún con toda esta información, no hemos visto ni la mitad de posibilidades multimedia que tenemos con HTML5. La etiqueta ``<video>`` también puede actuar como etiqueta contenedora e incluir varias etiquetas HTML para dotar de mayor compatibilidad, o capacidades adicionales.


* ``<source>``	src, type	Establece un archivo de video o lo añade como alternativa.
* ``<track>``	src, srclang, label, kind, default	Establece un archivo de subtítulos o lo añade como alternativa.
## Videos alternativos 
Si utilizamos la etiqueta ``<video>`` como etiqueta contenedora, podemos incluir etiquetas ``<source>`` en su interior para proporcionar formatos alternativos y tener mayor compatibilidad con otros navegadores y navegadores antiguos que no soporten HTML5:
````html
<video width="640" height="480">
  <source src="video.mp4" type="video/mp4" />
  <source src="video.webm" type="video/webm" />
  <source src="video.ogv" type="video/ogg" />
  <img src="imagen.png" alt="Video no soportado" />
  Su navegador no soporta contenido multimedia.
</video>

En este ejemplo, los navegadores no mostrarán todos los contenidos a la vez, sino que seguirán el siguiente procedimiento:

De esta forma tenemos soporte completo para todo tipo de dispositivos.

Acceso a segundos concretos

Utilizando los fragmentos multimedia se pueden conseguir algunas acciones interesantes, como por ejemplo especificar el momento concreto del video (o audio) en el que se quiere empezar a reproducir o terminar de reproducir. Veamos unos ejemplos:

<!-- Ejemplo 1 -->
<video autoplay controls src="video.mp4#t=15"></video>

<!-- Ejemplo 2 -->
<video autoplay controls src="video.mp4#t=25,45"></video>

En el primer caso, reproducimos el video a partir del segundo 15 del mismo, mientras que en el segundo caso, reproducimos el video a partir del segundo 25 y terminará de reproducirse en el segundo 45.