Ogg
Ogg es un formato de contenedor abierto y gratuito mantenido por la Fundación Xiph.Org. Los autores del formato Ogg afirman que no está restringido por patentes de software y está diseñado para proporcionar una transmisión y manipulación eficientes de multimedia digital de alta calidad. Su nombre se deriva de "ogging", la jerga del juego de computadora Netrek.
El formato contenedor Ogg puede multiplexar una cantidad de secuencias independientes para audio, video, texto (como subtítulos) y metadatos.
En el marco multimedia de Ogg, Theora proporciona una capa de video con pérdida. La capa de audio generalmente la proporciona el formato Vorbis orientado a la música o su sucesor Opus. Los formatos de compresión de audio sin pérdida incluyen FLAC y OggPCM.
Antes de 2007, la extensión de nombre de archivo.ogg se usaba para todos los archivos cuyo contenido usaba el formato de contenedor Ogg. Desde 2007, la Fundación Xiph.Org recomienda que.ogg solo se use para archivos de audio Ogg Vorbis. La Fundación Xiph.Org decidió crear un nuevo conjunto de extensiones de archivo y tipos de medios para describir diferentes tipos de contenido, como.oga para archivos de solo audio,.ogv para video con o sin sonido (incluido Theora) y.ogx para multiplexado. Ogg.
A partir del 7 de noviembre de 2017, la versión actual de la implementación de referencia de la Fundación Xiph.Org es libogg 1.3.3. Se ha estado desarrollando otra versión, libogg2, pero está esperando una reescritura a partir de 2018. Ambas bibliotecas de software son software gratuito, publicado bajo la nueva licencia BSD. La implementación de referencia de Ogg se separó de Vorbis el 2 de septiembre de 2000.
Debido a que el formato es gratuito y su implementación de referencia no está sujeta a las restricciones asociadas con los derechos de autor, los diversos códecs de Ogg se han incorporado a varios reproductores de medios gratuitos y propietarios, tanto comerciales como no comerciales. así como reproductores multimedia portátiles y receptores GPS de diferentes fabricantes.
Nombramiento
Ogg se deriva de "ogging", la jerga del juego de computadora Netrek, que llegó a significar hacer algo con fuerza, posiblemente sin tener en cuenta la pérdida de recursos futuros. Al principio, se pensó que el proyecto Ogg era algo ambicioso dada la potencia limitada del hardware de PC de la época. Aunque a veces se asume que el nombre "Ogg" proviene del personaje de Nanny Ogg en las novelas Discworld de Terry Pratchett, los desarrolladores del formato dicen que eso no es cierto. Aún así, para citar la misma referencia: "Vorbis, por otro lado, lleva el nombre del personaje de Terry Pratchett del libro Small Gods".
El proyecto Ogg Vorbis comenzó en 1993. Originalmente se llamaba "Squish" pero ese nombre ya estaba registrado, por lo que el proyecto sufrió un cambio de nombre. El nuevo nombre, "OggSquish", se usó hasta 2001, cuando se cambió nuevamente a "Ogg". Desde entonces, Ogg ha venido a referirse al formato contenedor, que ahora es parte del proyecto multimedia más grande Xiph.org. Hoy, "Squish" (ahora conocido como "Vorbis") se refiere a un formato de codificación de audio particular que se usa típicamente con el formato contenedor Ogg.
Formato de archivo
El "Ogg" El formato bitstream, diseñado principalmente por la Fundación Xiph.Org, se ha desarrollado como el marco de una iniciativa más amplia destinada a producir un conjunto de componentes para la codificación y decodificación de archivos multimedia, que están disponibles de forma gratuita y libremente reimplementables en software y hardware.
El formato consta de fragmentos de datos, cada uno llamado "página Ogg". Cada página comienza con los caracteres "OggS" para identificar el archivo como formato Ogg.
Un "número de serie" y "número de página" en el encabezado de la página identifica cada página como parte de una serie de páginas que forman un flujo de bits. Se pueden multiplexar múltiples flujos de bits en el archivo donde las páginas de cada flujo de bits se ordenan por el tiempo de búsqueda de los datos contenidos. Los flujos de bits también se pueden agregar a los archivos existentes, un proceso conocido como 'encadenamiento', para hacer que los flujos de bits se decodifiquen en secuencia.
Una biblioteca con licencia BSD, llamada "libvorbis", está disponible para codificar y decodificar datos de "Vorbis" arroyos Las implementaciones independientes de Ogg se utilizan en varios proyectos, como RealPlayer y un conjunto de filtros DirectShow.
Mogg, el "Multi-Track-Single-Logical-Stream Ogg-Vorbis", es el formato de archivo Ogg multicanal o multipista.
Estructura de la página
El siguiente es el diseño de campo de un encabezado de página Ogg:
- Patrón de captura – 32 bits
- El patrón de captura o código de sincronización es un número mágico utilizado para asegurar la sincronización cuando se analizan los archivos Ogg. Cada página comienza con la secuencia de cuatro caracteres ASCII, "OggS". Esto ayuda a sincronizar un parser en casos en los que se han perdido los datos o se corrompen, y es un cheque de cordura antes de comenzar a analizar la estructura de la página.
- Versión – 8 bits
- Este campo indica la versión del formato Ogg bitstream, para permitir la futura expansión. Actualmente tiene el mandato de ser 0.
- Tipo de encabezado – 8 bits
- Este es un campo de 8 bits de banderas, que indica el tipo de página que sigue.
Bit Valor Bandera Tipo de página 0 0x01 Continuación El primer paquete en esta página es una continuación del paquete anterior en el bitstream lógico. 1 0x02 BOS Comienzo de la Corriente. Esta página es la primera página en el bitstream lógico. La bandera BOS debe establecerse en la primera página de cada bitstream lógico, y no debe establecerse en ninguna otra página. 2 0x04 EOS Fin de la Corriente. Esta página es la última página en el bitstream lógico. La bandera EOS debe establecerse en la página final de cada bitstream lógico, y no debe establecerse en ninguna otra página.
- Posición de la Granula – 64 bits
- Una posición de gránulo es el marcador de tiempo en los archivos Ogg. Es un valor abstracto, cuyo significado está determinado por el codec. Por ejemplo, puede ser un recuento del número de muestras, el número de marcos o un esquema más complejo.
- Número de serie Bitstream – 32 bits
- Este campo es un número de serie que identifica una página como perteneciente a un bitstream lógico particular. Cada bitstream lógico en un archivo tiene un valor único, y este campo permite las implementaciones para entregar las páginas al decodificador apropiado. En un archivo típico Vorbis y Theora, una secuencia es el audio (Vorbis), y la otra es el video (Theora)
- Número de secuencia de página – 32 bits
- Este campo es un campo monotonicamente creciente para cada bitstream lógico. La primera página es 0, la segunda 1, etc. Esto permite que las implementaciones detecten cuando se han perdido datos.
- Checksum – 32 bits
- Este campo proporciona una comprobación CRC32 de los datos en toda la página (incluyendo el encabezado de la página, calculado con el campo checksum fijado a 0). Esto permite verificar que los datos no han sido dañados desde que fue autorizado. Las páginas que fallan la suma de verificación deben ser descartadas. La suma de comprobación se genera utilizando un valor polinomio de 0x04C11DB7.
- segmentos de página – 8 bits
- Este campo indica el número de segmentos que existen en esta página. También indica cuántos bytes están en la tabla de segmentos que sigue este campo. Puede haber un máximo de 255 segmentos en cualquier página.
- Cuadro de segmentos
- La tabla de segmentos es un conjunto de valores de 8 bits, cada uno indica la longitud del segmento correspondiente dentro del cuerpo de la página. El número de segmentos se determina en el campo de los segmentos de página anteriores. Cada segmento está entre 0 y 255 bytes de longitud.
Los segmentos proporcionan una forma de agrupar segmentos en paquetes, que son unidades de datos significativas para el decodificador. Cuando se indica que la longitud del segmento es 255, esto indica que el segmento siguiente debe concatenarse con este y es parte del mismo paquete. Cuando la longitud del segmento es 0–254, esto indica que este segmento es el segmento final en este paquete. Cuando la longitud de un paquete es un múltiplo de 255, el segmento final tiene una longitud de 0.
Donde el paquete final continúa en la página siguiente, el valor del segmento final es 255 y el indicador de continuación se establece en la página siguiente para indicar que el comienzo de la nueva página es una continuación de la última página.
Metadatos
VorbisComment es un formato de metadatos de nivel básico creado inicialmente para su uso con Ogg Vorbis. Desde entonces, se ha adoptado en las especificaciones de encapsulaciones Ogg para otros códecs Xiph.Org, incluidos Theora, Speex, FLAC y Opus. VorbisComment es el mecanismo más simple y más compatible para almacenar metadatos con códecs Xiph.Org.
Notablemente, uno o más METADATA_BLOCK_PICTURE=... en un VorbisComment para miniaturas y carátulas tienen valores codificados en Base64 del correspondiente FLAC METADATA_BLOCK_PICTURE. En otras palabras, FLAC almacena miniaturas y carátulas en bloques binarios, fuera de las etiquetas FLAC en un METADATA_BLOCK_VORBIS_COMMENT little-endian.
Otros mecanismos existentes y propuestos son:
- Bloqueos de metadatos FLAC
- Ogg Skeleton
- Idioma de marcación de medios continuos (dependido)
Historia
El proyecto Ogg comenzó con un paquete de compresión de audio simple como parte de un proyecto más grande en 1993. El software se llamó originalmente Squish pero debido a una marca comercial existente se le cambió el nombre a OggSquish . Este nombre se usó más tarde para todo el proyecto Ogg. En 1997, Xiphophorus OggSquish se describió como "un intento tanto de crear un formato de audio comprimido flexible para las aplicaciones de audio modernas como de proporcionar el primer formato de audio que es común en todas y cada una de las plataformas informáticas modernas". El OggSquish se denominó en 2000 como "un grupo de varios proyectos de procesamiento de señales y multimedia relacionados". En 2000, dos proyectos estaban en desarrollo activo para su lanzamiento planificado: formato Ogg Vorbis y libvorbis, la implementación de referencia de Vorbis. La investigación también incluyó trabajos sobre la codificación futura de video y audio sin pérdidas. En 2001, OggSquish pasó a llamarse Ogg y se describió como "el paraguas de un grupo de varios proyectos de procesamiento de señales y multimedia relacionados". Ogg ha llegado a representar el formato de archivo, como parte del proyecto multimedia más grande Xiph.org. Squish se convirtió simplemente en el nombre de uno de los códecs de Ogg. En 2009, Ogg se describe como "un formato de contenedor multimedia, y el archivo nativo y el formato de transmisión para los códecs multimedia Xiph.org".
La implementación de referencia de Ogg se separó de Vorbis el 2 de septiembre de 2000.
En mayo de 2003, se publicaron dos RFC de Internet relacionados con el formato. El flujo de bits de Ogg se definió en RFC 3533 (que se clasifica como 'informativo') y su tipo de contenido de Internet (application/ogg
) en RFC 3534 (que, a partir de 2006, es un protocolo estándar propuesto). En septiembre de 2008, RFC 3534 quedó obsoleto por RFC 5334, que agregó tipos de contenido video/ogg
, audio/ogg
y extensiones de nombre de archivo.ogx,.ogv,.oga,. spx.
OGM
En 2002, la falta de soporte formal de video en Ogg resultó en el desarrollo del formato de archivo OGM, un truco en Ogg que permitía incrustar video desde el marco Microsoft DirectShow en un formato basado en Ogg. envoltura. Inicialmente, OGM solo era compatible con herramientas exclusivas de Windows de código cerrado, pero la base de código se abrió posteriormente. Más tarde, se especificó formalmente la compatibilidad con video (y subtítulos) para Ogg, pero de manera incompatible con OGM. Independientemente, el formato de contenedor Matroska alcanzó la madurez y brindó una alternativa para las personas interesadas en combinar códecs de audio y video arbitrarios de Vorbis. Como resultado, OGM ya no es compatible ni desarrollado y Xiph.org lo desaconseja formalmente. Hoy en día, el video en Ogg se encuentra con la extensión de archivo.ogv, que se especifica formalmente y se admite oficialmente. El software y los códecs que admiten archivos.ogm están disponibles sin cargo.
2006
Aunque Ogg no había llegado ni cerca de la ubicuidad de los estándares MPEG (por ejemplo, MP3/MP4), a partir de 2006, se usaba comúnmente para codificar contenido gratuito (como música gratuita, multimedia en proyectos de la Fundación Wikimedia y Creative Commons). archivos) y había comenzado a ser compatible con una minoría significativa de reproductores de audio digital. Muchos motores de videojuegos populares también admitían el formato Ogg, incluidos Doom 3, Unreal Tournament 2004, Halo: Combat Evolved, Jets& #39;n'Guns, Mafia: La ciudad del cielo perdido, Myst IV: Revelation, StepMania, Serious Sam: The Second Encounter, Lineage 2, Vendetta Online, Battlefield 2 y Grand Theft Auto motores, así como los archivos de audio del juego basado en Java, Minecraft. El códec Vorbis más popular tenía soporte incorporado en muchos reproductores de software y había extensiones disponibles para casi todos los demás.
2007
El 16 de mayo de 2007, la Free Software Foundation inició una campaña para aumentar el uso de Vorbis "como una alternativa de audio ética, legal y técnicamente superior al formato propietario MP3". También se alentó a las personas a apoyar la campaña agregando un botón web a su sitio web o blog. Para aquellos que no querían descargar y usar el reproductor Ogg (VLC) sugerido por la FSF, la Fundación Xiph.Org tenía un códec oficial para aplicaciones basadas en QuickTime en Windows y Mac OS X, como reproductores de iTunes e iMovie. aplicaciones; y los usuarios de Windows podrían instalar un códec Ogg de Windows Media Player.
2009
Para el 30 de junio de 2009, el contenedor Ogg, mediante el uso de Theora y Vorbis, era el único formato de contenedor incluido en la implementación del navegador web Firefox 3.5 de HTML5 <video> y
<audio>
. Esto estaba de acuerdo con la recomendación original descrita en, pero luego eliminada, de la especificación del borrador de HTML5 (consulte la controversia de Ogg).
2010
El 3 de marzo de 2010, un análisis técnico realizado por un desarrollador de FFmpeg criticó las capacidades generales de Ogg como formato de contenedor multimedia. El autor de Ogg respondió más tarde a estas afirmaciones en un artículo propio.
Códecs Ogg
Ogg es solo un formato de contenedor. El audio o video real codificado por un códec se almacena dentro de un contenedor Ogg. Los contenedores Ogg pueden contener flujos codificados con múltiples códecs; por ejemplo, un archivo de video con sonido contiene datos codificados por un códec de audio y un códec de video.
Al ser un formato contenedor, Ogg puede incrustar audio y video en varios formatos (como Dirac, MNG, CELT, MPEG-4, MP3 y otros), pero Ogg estaba destinado a usarse, y generalmente se usa, con los siguientes Xiph Códecs gratuitos.org:
- Audio
- Pérdida
- Speex: maneja datos de voz en bitrates bajos (~2.1–32 kbit/s/cannel)
- Vorbis: maneja datos generales de audio a mitad a bitrates variables de alto nivel (Ω16–500 kbit/s por canal)
- Opus: maneja la voz, la música y el audio genérico en bitrates bajos y altos de variable (Ω6–510 kbit/s por canal)
- Pérdida
- FLAC maneja datos de audio de archivo y alta fidelidad.
- OggPCM permite almacenar audio PCM estándar sin compresión en un contenedor Ogg
- Pérdida
- Video
- Pérdida
- Theora: basado en El VP3 de On2 tiene como objetivo competir con el video MPEG-4 (por ejemplo, codificado con DivX o Xvid), RealVideo o Windows Media Video.
- Daala: un formato de codificación de vídeo en desarrollo.
- Tarkin: un códec de vídeo experimental y ahora obsoleto desarrollado en 2000, 2001 y 2002 utilizando onda discreta transforma en las tres dimensiones de ancho, altura y tiempo. Se ha mantenido en espera después de que Theora se convirtió en el foco principal para la codificación de vídeo (en agosto de 2002).
- Dirac: un formato de vídeo libre y abierto desarrollado por la BBC. Usa la codificación de ondas.
- Pérdida
- Dirac: una parte de la especificación de dirac cubre la compresión sin pérdidas.
- Daala: un formato de codificación de vídeo en desarrollo.
- Pérdida
- Texto
- Medios continuos Markup Idioma: un códice de texto/aplicación para metadatos temporizados, captura y formato.
- Annodex: Un conjunto de normas de código libre y abierto desarrollado por CSIRO para anotar e indexar los medios de comunicación en red.
- OggKate: An overlay codec, originalmente diseñado para karaoke y texto, que puede ser multiplexado en Ogg.
Tipos de medios
Los medios de audio Ogg están registrados como tipo de medios de IANA audio/ogg con extensiones de archivo .oga, .ogg y . spx. Es un subconjunto adecuado del tipo de medio de video Ogg video/ogg con extensión de archivo .ogv. Otras aplicaciones de Ogg usan el tipo de medio application/ogg con la extensión de archivo .ogx, este es un superconjunto de video/ogg. El tipo de medio Opus audio/opus con extensión de archivo .opus se registró más tarde en RFC 7587 y 7845.
Contenido relacionado
Protocolo de enrutamiento de puerta de enlace interior
Burbuja Bobble
Dirección de multidifusión