Ogg - Ogg

Ogg
Rozszerzenie nazwy pliku
.ogg, .ogv, .oga, .ogx, .ogm, .spx, .opus
Rodzaj mediów internetowych
wideo/ogg, audio/ogg, aplikacja/ogg
magiczny numer OggS
Opracowany przez Fundacja Xiph.Org
Rodzaj formatu Format kontenera
Pojemnik na Vorbis , Theora , Speex , Opus , FLAC , Dirac i inne.
Otwarty format ? tak
libogg
Ogg Logo.svg
Deweloper(zy) Fundacja Xiph.Org
Wersja stabilna
1.3.4 / 31 sierpnia 2019 ; 2 lata temu ( 2019-08-31 )
Rodzaj Implementacja referencyjna ( multiplekser / demultiplekser )
Licencja Licencja w stylu BSD
Strona internetowa pliki do pobrania .xiph .org /releases /ogg /

Ogg to darmowy , otwarty format kontenera utrzymywany przez Fundację Xiph.Org . Autorzy formatu Ogg twierdzą, że nie jest on ograniczony patentami na oprogramowanie i został zaprojektowany w celu zapewnienia wydajnego przesyłania strumieniowego i manipulowania wysokiej jakości multimediami cyfrowymi . Jego nazwa wywodzi się od „ogging”, żargonu z gry komputerowej Netrek .

Format kontenera Ogg może multipleksowania wielu niezależnych strumieni dla dźwięku , wideo , tekst (takich jak napisami ) oraz metadanych .

W środowisku multimedialnym Ogg Theora zapewnia stratną warstwę wideo. Warstwa audio jest najczęściej dostarczana przez zorientowany na muzykę format Vorbis lub jego następcę Opus . Formaty bezstratnej kompresji dźwięku obejmują FLAC i OggPCM .

Przed 2007 rokiem rozszerzenie nazwy pliku .ogg było używane dla wszystkich plików, których zawartość używała formatu kontenera Ogg. Od 2007 roku Fundacja Xiph.Org zaleca, aby .ogg było używane tylko do plików audio Ogg Vorbis. Fundacja Xiph.Org postanowiła stworzyć nowy zestaw rozszerzeń plików i typów multimediów, aby opisać różne typy treści, takie jak .oga dla plików tylko audio, .ogv dla wideo z dźwiękiem lub bez (w tym Theora) oraz .ogx dla multipleksowania Ogg.

Od 7 listopada 2017 r. aktualna wersja referencyjnej implementacji Fundacji Xiph.Org to libogg 1.3.3. Inna wersja, libogg2, jest w trakcie opracowywania, ale oczekuje na przepisanie od 2018 roku. Obie biblioteki oprogramowaniawolnym oprogramowaniem , wydanym na nowej licencji BSD . Implementacja referencyjna Ogg została oddzielona od Vorbis 2 września 2000 roku.

Ponieważ format jest wolny, a jego realizacja odniesienia nie podlega ograniczeniom związanym z prawami autorskimi , różne OGG za kodeki zostały włączone do wielu różnych wolnych i własnych odtwarzaczy multimedialnych , zarówno komercyjnych jak i niekomercyjnych, jak i przenośnych odtwarzaczy multimedialnych i Odbiorniki GPS różnych producentów.

Nazewnictwo

Ogg pochodzi od „ogging”, żargonu z gry komputerowej Netrek , co oznaczało robienie czegoś na siłę, być może bez uwzględnienia drenażu przyszłych zasobów. Na samym początku projekt Ogg był uważany za nieco ambitny, biorąc pod uwagę ograniczoną moc sprzętu PC w tamtych czasach. Chociaż czasami zakłada się, że nazwa „Ogg” pochodzi od postaci Niani Ogg z powieści Terry'ego Pratchetta o Świecie Dysku , twórcy formatu twierdzą, że to nieprawda. Cytując jednak ten sam odnośnik: „Vorbis z drugiej strony nosi imię Terry’ego Pratchetta z książki Small Gods ”.

Projekt Ogg Vorbis rozpoczął się w 1993 roku. Pierwotnie nosił nazwę „Squish”, ale nazwa ta była już zastrzeżona, więc projekt przeszedł zmianę nazwy. Nowa nazwa, „OggSquish”, była używana do 2001 roku, kiedy to została ponownie zmieniona na „Ogg”. Od tego czasu Ogg zaczął odnosić się do formatu kontenera , który jest teraz częścią większego projektu multimedialnego Xiph.org. Obecnie „Squish” (obecnie znany jako „Vorbis”) odnosi się do konkretnego formatu kodowania dźwięku, zwykle używanego w formacie kontenera Ogg.

Format pliku

Format strumienia bitów „Ogg” , zaprojektowany głównie przez Fundację Xiph.Org, został opracowany w ramach większej inicjatywy mającej na celu wyprodukowanie zestawu komponentów do kodowania i dekodowania plików multimedialnych, które są dostępne bezpłatnie i bezpłatnie. możliwe do ponownego wdrożenia w oprogramowaniu i sprzęcie.

Format składa się z fragmentów danych, z których każdy nazywa się „ stroną Ogg ”. Każda strona zaczyna się od znaków „OggS”, które identyfikują plik w formacie Ogg.

„Numer seryjny” i „numer strony” w nagłówku strony identyfikują każdą stronę jako część serii stron tworzących strumień bitów . Wiele strumieni bitów może być multipleksowanych w pliku, w którym strony z każdego strumienia bitów są uporządkowane według czasu wyszukiwania zawartych danych. Strumienie bitów mogą być również dołączane do istniejących plików w procesie znanym jako „łańcuch”, aby spowodować sekwencyjne dekodowanie strumieni bitów.

BSD-licencjonowany biblioteka, zwany „libvorbis”, jest dostępny do kodowania i dekodowania danych z „Vorbis” strumieni. Niezależne implementacje Ogg są używane w kilku projektach, takich jak RealPlayer i zestaw filtrów DirectShow .

Mogg, "Multi-Track-Single-Logical-Stream Ogg-Vorbis", to wielokanałowy lub wielościeżkowy format pliku Ogg.

Struktura strony

Poniżej przedstawiono układ pola nagłówka strony Ogg:

Układ pola nagłówka strony Ogg
Wzór przechwytywania – 32 bity
Wzorzec przechwytywania lub kod synchronizacji to magiczna liczba używana do zapewnienia synchronizacji podczas analizowania plików Ogg. Każda strona zaczyna się od sekwencji czterech znaków ASCII „OggS”. Pomaga to w ponownej synchronizacji parsera w przypadkach, gdy dane zostały utracone lub uszkodzone, a także stanowi kontrolę poprawności przed rozpoczęciem analizowania struktury strony.
Wersja – 8 bitów
To pole wskazuje wersję formatu strumienia bitów Ogg, aby umożliwić przyszłą rozbudowę. Obecnie ma obowiązek wynosić 0.
Typ nagłówka – 8 bitów
Jest to 8-bitowe pole flag, które wskazuje typ kolejnej strony.
Fragment Wartość Flaga Typ strony
0 0x01 Kontynuacja Pierwszy pakiet na tej stronie jest kontynuacją poprzedniego pakietu w logicznym strumieniu bitów.
1 0x02 BOS Początek strumienia. Ta strona jest pierwszą stroną w logicznym strumieniu bitów. Flaga BOS musi być ustawiona na pierwszej stronie każdego logicznego strumienia bitów i nie może być ustawiona na żadnej innej stronie.
2 0x04 EOS Koniec transmisji. Ta strona jest ostatnią stroną w logicznym strumieniu bitów. Flaga EOS musi być ustawiona na ostatniej stronie każdego logicznego strumienia bitów i nie może być ustawiona na żadnej innej stronie.
Pozycja granulatu – 64 bity
Pozycja granulek to znacznik czasu w plikach Ogg. Jest to wartość abstrakcyjna, której znaczenie określa kodek. Może to być na przykład liczba próbek, liczba ramek lub bardziej złożony schemat.
Numer seryjny strumienia bitów – 32 bity
To pole to numer seryjny, który identyfikuje stronę jako należącą do określonego logicznego strumienia bitów. Każdy logiczny strumień bitów w pliku ma unikalną wartość, a to pole umożliwia implementacjom dostarczanie stron do odpowiedniego dekodera. W typowym pliku Vorbis i Theora jeden strumień to dźwięk (Vorbis), a drugi to wideo (Theora)
Numer sekwencyjny strony – 32 bity
To pole jest monotonicznie rosnącym polem dla każdego logicznego strumienia bitów. Pierwsza strona to 0, druga 1 itd. Pozwala to implementacjom wykryć utratę danych.
Suma kontrolna – 32 bity
To pole zawiera sumę kontrolną CRC32 danych na całej stronie (łącznie z nagłówkiem strony, obliczoną z polem sumy kontrolnej ustawionym na 0). Umożliwia to weryfikację, czy dane nie zostały uszkodzone od czasu ich utworzenia. Strony, które nie zdadzą sumy kontrolnej, należy odrzucić. Suma kontrolna jest generowana przy użyciu wartości wielomianu 0x04C11DB7.
Segmenty strony – 8 bitów
To pole wskazuje liczbę segmentów istniejących na tej stronie. Wskazuje również, ile bajtów znajduje się w tabeli segmentów następującej po tym polu. Na jednej stronie może znajdować się maksymalnie 255 segmentów.
Tabela segmentów
Tablica segmentów to tablica wartości 8-bitowych, z których każda wskazuje długość odpowiedniego segmentu w treści strony. Liczba segmentów jest określana na podstawie poprzedniego pola segmentów strony. Każdy segment ma długość od 0 do 255 bajtów.

Segmenty umożliwiają grupowanie segmentów w pakiety, które są znaczącymi jednostkami danych dla dekodera. Gdy długość segmentu jest wskazana jako 255, oznacza to, że następny segment ma być połączony z tym segmentem i jest częścią tego samego pakietu. Gdy długość segmentu wynosi 0–254, oznacza to, że segment ten jest ostatnim segmentem w tym pakiecie. Gdy długość pakietu jest wielokrotnością 255, końcowy segment ma długość 0.

Tam, gdzie ostatni pakiet jest kontynuowany na następnej stronie, wartość końcowego segmentu wynosi 255, a flaga kontynuacji jest ustawiana na następnej stronie, aby wskazać, że początek nowej strony jest kontynuacją ostatniej strony.

Metadane

VorbisComment to podstawowy format metadanych, pierwotnie stworzony do użytku z Ogg Vorbis. Od tego czasu został przyjęty w specyfikacjach enkapsulacji Ogg dla innych kodeków Xiph.Org, w tym Theora , Speex , FLAC i Opus . VorbisComment to najprostszy i najszerzej obsługiwany mechanizm przechowywania metadanych za pomocą kodeków Xiph.Org.

Warto zauważyć, że jeden lub więcej METADATA_BLOCK_PICTURE=… w komentarzu Vorbis dla miniatur i okładek ma zakodowane w Base64 wartości odpowiadającego pliku FLAC METADATA_BLOCK_PICTURE . Innymi słowy, FLAC przechowuje miniatury i okładki w blokach binarnych — poza tagami FLAC w little-endian METADATA_BLOCK_VORBIS_COMMENT .

Inne istniejące i proponowane mechanizmy to:

Historia

Zagraj w ogg.png
Play Ogg przycisk internetowych

Projekt Ogg rozpoczął się od prostego pakietu kompresji dźwięku jako części większego projektu w 1993 roku. Oprogramowanie nosiło pierwotnie nazwę Squish, ale ze względu na istniejący znak towarowy zostało przemianowane na OggSquish . Ta nazwa została później użyta w całym projekcie Ogg. W 1997 roku Xiphophorus OggSquish został opisany jako „próba zarówno stworzenia elastycznego skompresowanego formatu audio dla nowoczesnych aplikacji audio, jak i dostarczenia pierwszego formatu audio, który jest powszechny na każdej nowoczesnej platformie komputerowej”. OggSquish był w 2000 roku określany jako „grupa kilku powiązanych projektów multimedialnych i przetwarzania sygnału”. W 2000 roku dwa projekty były aktywnie rozwijane do planowanego wydania: format Ogg Vorbis i libvorbis — referencyjna implementacja Vorbis. Badania obejmowały również prace nad przyszłym kodowaniem wideo i bezstratnym dźwiękiem. W 2001 roku OggSquish został przemianowany na Ogg i został opisany jako „parasol dla grupy kilku powiązanych projektów multimedialnych i przetwarzania sygnału”. Ogg stał się symbolem formatu pliku w ramach większego projektu multimedialnego Xiph.org. Squish stał się tylko nazwą jednego z kodeków Ogg. W 2009 r. Ogg został opisany jako „format kontenera multimedialnego oraz natywny format plików i strumieni dla multimedialnych kodeków Xiph.org”.

Implementacja referencyjna Ogg została oddzielona od Vorbis 2 września 2000 roku.

W maju 2003 r. opublikowano dwa internetowe RFC dotyczące formatu. Strumień bitów Ogg został zdefiniowany w RFC 3533 (który jest klasyfikowany jako „informacyjny”), a jego typ zawartości internetowej ( application/ogg) w RFC 3534 (który jest od 2006 roku proponowanym standardowym protokołem). We wrześniu 2008, RFC 3534 został zastąpiony przez RFC 5334, który dodaje typy zawartości video/ogg, audio/oggi rozszerzenia nazw plików .ogx, .ogv, .oga, .spx.

OGM

W 2002 r. brak formalnej obsługi wideo w Ogg zaowocował opracowaniem formatu pliku OGM , włamania na Ogg, które umożliwiało osadzanie wideo z platformy Microsoft DirectShow w wrapperze opartym na Ogg. OGM był początkowo obsługiwany tylko przez narzędzia zamkniętego źródła tylko dla systemu Windows, ale później otwarto bazę kodu. Później obsługa wideo (i napisów) została formalnie określona dla Ogg, ale w sposób niezgodny z OGM. Niezależnie format kontenera Matroska osiągnął dojrzałość i stanowił alternatywę dla osób zainteresowanych połączeniem kodeków audio Vorbis z dowolnymi kodekami wideo. W rezultacie OGM nie jest już wspierane ani rozwijane i jest formalnie odradzane przez Xiph.org. Obecnie wideo w Ogg można znaleźć z rozszerzeniem .ogv, które jest formalnie określone i oficjalnie obsługiwane. Oprogramowanie i kodeki obsługujące pliki .ogm są dostępne bezpłatnie.

2006

Chociaż Ogg nie zbliżył się do wszechobecności standardów MPEG (np. MP3 / MP4 ), od 2006 r. był powszechnie używany do kodowania bezpłatnych treści (takich jak bezpłatna muzyka, multimedia w projektach Wikimedia Foundation i pliki Creative Commons ) oraz zaczął być wspierany przez znaczną mniejszość cyfrowych odtwarzaczy audio . Format Ogg wspierało również wiele popularnych silników gier wideo, w tym Doom 3 , Unreal Tournament 2004 , Halo: Combat Evolved , Jets'n'Guns , Mafia: The City of Lost Heaven , Myst IV: Revelation , StepMania , Serious Sam: The Second Encounter , Lineage 2 , Vendetta Online , Battlefield 2 i silniki Grand Theft Auto , a także pliki audio z gry Minecraft opartej na Javie . Bardziej popularny kodek Vorbis miał wbudowaną obsługę wielu odtwarzaczy oprogramowania, a rozszerzenia były dostępne dla prawie wszystkich pozostałych.

2007

16 maja 2007 Fundacja Wolnego Oprogramowania rozpoczęła kampanię mającą na celu zwiększenie wykorzystania Vorbis „jako lepszej pod względem etycznym, prawnym i technicznym alternatywy audio dla zastrzeżonego formatu MP3”. Ludzie byli również zachęcani do wspierania kampanii poprzez dodanie przycisku internetowego na swojej stronie internetowej lub blogu . Dla tych, którzy nie chcieli pobierać i używać sugerowanego przez FSF odtwarzacza Ogg ( VLC ), Fundacja Xiph.Org przygotowała oficjalny kodek dla aplikacji opartych na QuickTime w systemach Windows i Mac OS X , takich jak odtwarzacze iTunes i aplikacje iMovie ; a użytkownicy Windows mogą zainstalować kodek Windows Media Player Ogg.

2009

Do 30 czerwca 2009 kontener Ogg, dzięki wykorzystaniu Theora i Vorbis, był jedynym formatem kontenera zawartym w implementacji HTML5 i elementów przeglądarki Firefox 3.5 . Było to zgodne z pierwotnym zaleceniem przedstawionym w, ale później usuniętym ze szkicu specyfikacji HTML5 (patrz Kontrowersje Ogg ). <video><audio>

2010

W dniu 3 marca 2010 r. analiza techniczna przeprowadzona przez programistę FFmpeg krytycznie oceniła ogólne możliwości Ogg jako formatu kontenera multimedialnego. Autor Ogg później odpowiedział na te twierdzenia we własnym artykule.

Kodeki Ogg

Ogg to tylko format kontenera. Rzeczywisty dźwięk lub obraz zakodowany przez kodek jest przechowywany w kontenerze Ogg. Kontenery Ogg mogą zawierać strumienie zakodowane za pomocą wielu kodeków; na przykład plik wideo z dźwiękiem zawiera dane zakodowane zarówno przez kodek audio, jak i kodek wideo.

Będąc formatem kontenera, Ogg może osadzać audio i wideo w różnych formatach (takich jak Dirac , MNG , CELT , MPEG-4 , MP3 i inne), ale Ogg miał być i zwykle jest używany z następującym Xiph.org free kodeki:

  • Audio
    • Stratna
      • Speex : obsługuje dane głosowe przy niskich przepływnościach (~2,1–32 kbit/s/kanał)
      • Vorbis : obsługuje ogólne dane audio ze zmienną szybkością transmisji bitów od średniego do wysokiego (≈16–500 kbit/s na kanał)
      • Opus : obsługuje głos, muzykę i ogólny dźwięk przy niskich i wysokich zmiennych przepływnościach (≈6–510 kbit/s na kanał)
    • Bezstratny
      • FLAC obsługuje archiwalne dane audio o wysokiej wierności.
      • OggPCM umożliwia przechowywanie standardowego nieskompresowanego dźwięku PCM w kontenerze Ogg
  • Wideo
    • Stratna
      • Theora : oparty na On2 „s VP3 , jest on skierowany do konkurowania z MPEG-4 wideo (na przykład zakodowane DivX lub Xvid ), RealVideo lub Windows Media Video .
      • Daala : format kodowania wideo w trakcie opracowywania.
      • Tarkin: eksperymentalny i obecnie przestarzały kodek wideo opracowany w latach 2000, 2001 i 2002 wykorzystujący dyskretne transformaty falkowe w trzech wymiarach szerokości, wysokości i czasu. Został zawieszony po tym, jak Theora stała się głównym celem kodowania wideo (w sierpniu 2002 r.).
      • Dirac : darmowy i otwarty format wideo opracowany przez BBC . Używa kodowania falkowego.
    • Bezstratny
      • Dirac : część specyfikacji diraca obejmuje kompresję bezstratną.
      • Daala : format kodowania wideo w trakcie opracowywania.
  • Tekst
    • Continuous Media Markup Language : kodek tekstowy/aplikacyjny dla metadanych czasowych, podpisów i formatowania.
    • Annodex : Darmowy i otwarty zestaw standardów opracowany przez CSIRO do opisywania i indeksowania mediów sieciowych.
    • OggKate: nakładkowy kodek, pierwotnie zaprojektowany do karaoke i tekstu, który może być multipleksowany w Ogg.

Rodzaje mediów

Nośniki dźwięku Ogg jest zarejestrowany jako IANA rodzaju nośnika audio/ogg z rozszerzeń plików .oga, .oggi .spx. Jest to właściwy podzbiór typu nośnika wideo Ogg video/oggz rozszerzeniem pliku .ogv. Inne aplikacje Ogg używają typu nośnika application/oggz rozszerzeniem pliku .ogx, jest to nadzbiór video/ogg. Opus typ nośnika audio/opusz rozszerzeniem .opuszostała zarejestrowana później w RFC 7587 i 7845 .

Zobacz też

Bibliografia

Zewnętrzne linki