# WebM

WebM es un formato multimedia abierto y libre desarrollado por Google y orientado para usarse con HTML5. Es un proyecto de software libre, bajo una licencia permisiva similar a la licencia BSD. Inicialmente pensado para ser utilizado con códec de vídeo VP8 (desarrollado originalmente por On2 Technologies) y el códec de audio Vorbis dentro de un contenedor multimedia Matroska.
Desde julio de 2013, el formato WebM es capaz de integrar los respectivos sucesores de video y audio de VP8 y Vorbis, que son VP9 y Opus.
Actualmente también soporta el códec de video AV1.
Fue anunciado bajo el marco de la conferencia Google I/O en mayo de 2010 y cuenta con contribuciones y apoyo oficial de empresas como «Mozilla, Opera, Google, además de otros 40 editores y fabricantes de software y hardware» en un esfuerzo combinado para utilizar VP8 como el formato multimedia estándar en el lenguaje web HTML5. Microsoft anunció que su más reciente versión de navegador Internet Explorer 9 también será capaz de soportar los archivos WebM si el códec VP8 está instalado en el equipo. El códec se puede usar en la versión de YouTube HTML5, activada por defecto. Además, Adobe realizó declaraciones enfatizando que su software Flash Player recibirá una actualización para añadir soporte al nuevo formato.

## Nombrado

* Nombre del contenedor del formato: WebM
* Extensión de archivo: .webm
* Tipo MIME: video/webm
* Tipo MIME solo para el audio: audio/webm
* Nombre del Códec de Vídeo: VP8
* Nombre del Códec de Audio: Vorbis
* Directrices para el desarrollo de WebM

## Directrices para WebM

Estas directrices se han creado actualmente para transmisiones de archivos sobre una conexión HTTP, e indican las áreas en las que WebM es estricta, en comparación con la especificación más permisiva de Matroska.

### Directrices para el multiplexador y demultiplexador

* El tipo de documento debe de ser "WebM".
* El códec de vídeo debe de ser VP8.
** El códec ID debe ser "V_VP8".
** No hay datos para CodecPrivate para VP8.
* El códec de audio debe ser Vorbis.
** El proyecto desarrollará una orientación específica sobre cómo Vorbis debe ser desplegado en WebM (perfil, el bitrate, canales)
* La versión inicial de WebM no soporta subtítulos.
** WHATWG / W3C RFC proporcionará orientación acerca de los subtítulos HTML5 <video> en un futuro próximo. WebM tiene la intención de seguir esa orientación.
* DocReadTypeVersion debe seguir la especificación Matroska.

### Directrices para el multiplexor

Estas directrices tienen el objetivo de fomentar la coherencia a través de archivos WebM en el mundo real.
* WebM debe contener el elemento SeekHead.
** Motivo: Permite al cliente saber si el archivo contiene un elemento Cues, un elemento que aglutina otra serie de elementos para hacer la búsqueda más rápida.
* Los archivos WebM deben incluir un único elemento Cues de fotogramas.
** El elemento Cues debe de contener únicamente fotogramas de vídeo, para disminuir el tamaño de la cabecera del archivo.
** Se recomienda que Cues se encuentre antes que las agrupaciones, para que el cliente pueda acceder a un punto en los datos que aún no se ha descargado en una sola operación de búsqueda.
* Todos los códigos de tiempo absolutos (bloque + agrupación) deben ser estrictamente crecientes.
** Todos los códigos de tiempo se asocian a la hora de inicio del bloque.
* El elemento TimecodeScale se debe establecer en un valor predeterminado de 1.000.000 nanosegundos.
** Motivo: Permite que cada agrupación tenga bloques con valores positivos de hasta 32.767 segundos.
* Los fotogramas clave se deben colocar al principio de las agrupaciones.
** Habiendo fotogramas clave en el inicio de las agrupaciones se hace la búsqueda más rápida y fácil para el cliente.
* Los bloques de audio que contienen el código de tiempo del fotograma clave deben encontrarse en la misma agrupación que el bloque de fotogramas clave de vídeo.
* Los bloques de audio que contienen el mismo código de tiempo absoluto que los bloques de vídeo deben ser escritos antes de los bloques de vídeo.
* Los Archivos WebM solo deben soportar píxeles del elemento DisplayUnit.
* Los fotogramas en VP8 deben ser multiplexados en un elemento SimpleBlock.

### Directrices para el demultiplexor

* El demultiplexor sólo debe abrir los archivos de tipo WebM.
* Una vez que el demultiplexor valide la cabecera y los metadatos del archivo WebM y el reproductor comience la reproducción del archivo, el demultiplexor debe hacer todo lo posible para analizar el archivo, de forma que la reproducción se pueda producir lo más correctamente posible.
* La búsqueda se desactivará si el archivo WebM no tiene un elemento fotograma clave de pista.
** El proyecto está contemplando el soporte a la búsqueda sin un elemento de pista.