Ogg
Ogg je projekt, který si klade za cíl vytvořit svobodný software pro digitální multimédia. Datový formát Ogg propagovaný nadací Xiph.org byl vytvořen jako výchozí materiál větší iniciativy, která si klade za cíl vyvinout komponenty pro kódování a dekódování multimediálního obsahu, přičemž tyto komponenty budou svobodně dostupné a svobodně reimplementovatelné v softwaru (BSD licence). Formát Ogg je definován v RFC 3533 a jeho MIME typ application/ogg
v RFC 3534.
Různé části projektu jsou zamýšleny jako alternativy k nesvobodným standardům, jakými jsou formáty MPEG, Real, QuickTime, Windows Media Audio; formáty RIFF – WAV a AVI.
Přípona souboru | .ogg, .opus, .ogv, .oga, .ogx, .spx |
---|---|
Typ internetového média | video/ogg, audio/ogg, application/ogg |
Magické číslo | OggS |
Tvůrce | Xiph.Org Foundation |
Kontejner pro | Vorbis, Opus, Theora, Speex, FLAC, Dirac, Daala a další. |
Otevřený formát | ano |
Ogg jako formát
editovatDatový formát Ogg propagovaný nadací Xiph.org byl vytvořen jako výchozí materiál větší iniciativy, která si klade za cíl vyvinout komponenty pro kódování a dekódování multimediálního obsahu, přičemž tyto komponenty budou svobodně dostupné a svobodně reimplementovatelné v softwaru (BSD licence). Formát Ogg je definován v RFC 3533 a jeho MIME typ application/ogg
v RFC 3534.
Formát se skládá z kusů dat nazývajících se stránka ogg. Každá stránka začíná řetězcem „OggS“ k identifikaci souboru jako Ogg formátu. Sériové číslo a číslo stránky v záhlaví stránky identifikuje každou stránku jako část série stránek tvořících proud bitů (bitstream). Vícenásobný bitstreams může být multiplexní v souboru kde stránky z každého bitstreamu jsou seřazené podle doby hledání obsažených dat. Bitstream může být také připojený k existujícím souborům, proces známý jako spojování, způsobuje, že bitstreamy jsou dekódovány po sekvencích. Knihovna libogg, spadající pod BSD licenci, je k dispozici ke kódování a dekódování dat z Ogg streamů. Nezávislé implementace Ogg jsou užívány v několika projektech jako RealPlayer a sada DirectShow filtrů.
Struktura stránky
editovatNásledující je rozložení pole z hlavičky Ogg stránky:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | zachytávací_zdroj: kouzelné číslo pro začátek stránky "OggS" | 0-3 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | verze | typ_hlavičky | pozice_zrna | 4-7 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | 8-11 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | sériové_číslo bitstreamu | 12-15 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | číslo_sekvence_stránky | 16-19 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | CRC_kontrolní_součet | 20-23 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | segmenty_str.|segment_tabulky | 24-27 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ... | 28- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Zachytávací zdroj – 32bitové
- Zachytávací vzor nebo synchronizační kód je kouzelné číslo užívané pro zajišťování synchronizace při rozebírání Ogg souborů. Každá stránka začíná čtyř bajtovou sekvencí 'OggS'. Toto napomáhá při synchronizaci kontrolujícího programu v případech kde data byla ztracena nebo porušena a je to rozumná kontrola před zahájením rozboru stránkové struktury.
- Verze – 8bitové
- Toto pole ukazuje verzi bitstreamu Ogg formátu k povolení pro budoucí rozšíření. V současné době je nastaveno na 0.
- Hlavičkový typ – 8bitové
- Je to 8bitové pole příznaků, které ukazují typ stránky která následuje. Pravý krajní nebo nejnižší platný bit je považovaný za bit 0 s hodnotou 0x01 a další nejnižší platná číslice je bit 1 s hodnotou 0x02. Třetí je bit 2 s hodnotou 0x04, a tak dále.
Bit | Hodnota | Příznak | Typ stránky |
---|---|---|---|
0 | 0x01 | Pokračující | První paket na této stránce je pokračováním předchozího paketu v logickém bitstreamu. |
1 | 0x02 | BOS | Začátek proudu (Beginning Of Stream). Tato stránka je první stránka logického bitstreamu. BOS příznak musí být nastaven na první stránku každého logického bitstreamu a nesmí být nastaven na jinou stránku. |
2 | 0x04 | EOS | Konec proudu (End Of Stream). Tato stránka je poslední stránka v logickém bitstreamu. EOS příznak musí být nastaven na konec stránky každého logického bitstreamu a nesmí být nastaven na jinou stránku. |
- Pozice zrna – 64bitové
- Pozice zrna je časová značka v Ogg souborech. Je to abstraktní hodnota, jejíž význam je určen kodekem. To může být například součet počtu vzorků, počet rámů nebo větší komplexní schéma.
- Sériové číslo bitstreamu – 32bitové
- Toto pole je sériové číslo, které identifikuje stránku náležící částečnému logickému bitstreamu. Každý logický bitstream v souboru má jedinečnou hodnotu a toto pole povoluje implementace k doručení stránek příslušnému dekodéru. V typickém Vorbis+Theora souboru bude jeden proud audio (Vorbis), a další bude video (Theora).
- Stránkové pořadové číslo – 32bitové
- Toto pole je monotonně rostoucí pole pro každý logický bitstream. První stránka je 0, druhá 1, atd. Dovoluje implementacím zjistit, kdy byla data ztracena.
- Kontrolní součet – 32bitové
- Toto pole poskytuje kontrolní součet dat na celé stránce, pole nastaveno na 0 po vykonaném kontrolním součtu. To povoluje ověření, že data nebyla porušena od vytvoření. Stránky, kterým selže kontrolní součet by měly být vyřazené.
- Segmenty stránky – 8bitové
- Toto pole ukazuje počet segmentů, které existují na této stránce. To také ukazuje kolik bajtů je v segmentu tabulky, které následují toto pole. Tam může být maximálně 255 částí na každé stránce.
- Tabulka segmentů
- Tabulka segmentů je 8bitový vektor hodnot ukazující délku každého segmentů uvnitř těla stránky. Počet segmentů je stanovený z předcházejícího pole segmentů stránky. Každý segment má délku mezi 0 a 255 bajty.
Segmenty poskytují způsob jak seskupit segmenty do paketů, které jsou smysluplnými jednotkami dat pro dekodér. Když délka segmentu ukazuje na 255, to ukazuje, že následující segment je zřetězený do jednoho a je částí stejného paketu. Když délka segmentu je 0–254, ukazuje to, že tento segment je konečný segment v tomto paketu. Kde délka paketu je násobek 255, konečná segment bude délky 0. Kde konečný paket pokračuje na další stránce, konečná hodnota segmentu bude 255 a pokračující příznak bude nastaven na následující stránku aby ukazovala, že začátek nové stránky je pokračováním poslední stránky.
Zdroje
editovatVýchozí prací byl bezeztrátový kodek Squish. Dnes je základem ztrátový zvukový formát Vorbis (16–256 Kb/s na kanál). Dalšími jsou video formát Theora, který vychází z komerčního kodeku VP3 firmy On2 Technologies, zvukový kodek pro mluvenou řeč Speex (8–32 Kb/s na kanál) a bezeztrátový zvukový kodek pro kvalitní přenos zvuku FLAC. Writ je kodek pro vkládání titulků.
Název
editovatLaikové často předpokládají, že název Ogg je odvozen od postavy stařenky Oggové z fantasy série Terryho Pratchetta Zeměplocha. Ve skutečnosti jde o slangový termín pocházející z počítačové hry Netrek. Původně znamenal sebevražedný útok, později získal širší význam vrhat se do něčeho po hlavě –důrazně a možná bez rozmyslu, zejména bez ohledu na možné vyčerpání zdrojů: tak musel být projekt vnímán vzhledem k jeho hardwarovým požadavkům v době vzniku v roce 1994.
Ogg kodeky
editovatOgg je jen kontejnerový formát. Vlastní audio nebo video zakódované kodekem bude uložené uvnitř Ogg kontejneru. Ogg kontejnery mohou obsahovat streamy zakódované s vícenásobnými kodeky, například, audio nebo video soubor může obsahovat data zakódovaná audio kodekem i video kodekem. Formát Ogg může uložit audio a video v různých formátech (jako MPEG-4 , MP3 a jiné), ale obvykle je Ogg používaný s následujícími:
- Audio formáty
- ztrátová komprese
- bezeztrátová komprese
- FLAC: pro archivní a vysoce přesná zvuková data
- Textový kodek
- Video formáty
- Theora: formát, který byl vyvinut nadací Xiph.org jako součást projektu Ogg. Theora by měla konkurovat formátu MPEG-4 a kodekům RealVideo, Windows Media Video.
- Tarkin: experimentální kodek využívající Diskrétní vlnkovou transformaci v třech dimenzích (šířka, výška a čas). To bylo dané na od února 2000, příchodem kodeku Theora jako hlavní ohnisko zakódování videa.
- Dirac: experimentální formát vyvinutý BBC jako základ nového kodeku pro přenos videa přes internet. Projekt Schrödinger chce poskytovat přenosné knihovny, napsané v C obsažené v kodeku Dirac. To také dovoluje vložit Dirac dovnitř kontejnerového formátu Ogg.
- OggUVS: kodek pro ukládání nekomprimovaného videa.
- Daala: videoformát ve vývoji.
- Titulkové struktury
Přípony souborů
editovatDoporučené přípony ogg souborů podle Xiph.org:[1]
Přípona | Obsah |
---|---|
.ogg | Vorbis |
.opus | Opus |
.spx | Speex |
.oga | jiný zvukový formát |
.ogv | video |
.ogx | multiplex jakýchkoli ogg formátů |
Odkazy
editovatReference
editovat- ↑ MIME Types and File Extensions [online]. XiphWiki [cit. 2019-02-06]. Dostupné online. (anglicky)
Externí odkazy
editovat- Obrázky, zvuky či videa k tématu Ogg na Wikimedia Commons
- Nadace Xiph.org
- RFC 3533 – The Ogg Encapsulation Format Version 0
- RFC 3534 – The application/ogg Media Type