stringtranslate.com

Огг

Ogg — это свободный , открытый формат контейнера , поддерживаемый фондом Xiph.Org . Авторы формата Ogg заявляют, что он не ограничен патентами на программное обеспечение [3] и разработан для обеспечения эффективной потоковой передачи и обработки высококачественных цифровых мультимедиа . Его название происходит от «ogging», жаргона из компьютерной игры Netrek . [4]

Формат контейнера Ogg может мультиплексировать несколько независимых потоков для аудио , видео , текста (например, субтитров ) и метаданных .

В мультимедийной среде Ogg Theora предоставляет слой видео с потерями . Звуковой слой чаще всего предоставляется ориентированным на музыку форматом Vorbis или его преемником Opus . Форматы сжатия звука без потерь включают FLAC и OggPCM .

До 2007 года расширение имени файла .ogg использовалось для всех файлов, содержимое которых использовало формат контейнера Ogg. С 2007 года фонд Xiph.Org Foundation рекомендует использовать .ogg только для аудиофайлов Ogg Vorbis. Фонд Xiph.Org Foundation решил создать новый набор расширений файлов и типов носителей для описания различных типов контента, таких как .oga для файлов только с аудио, .ogv для видео со звуком или без него (включая Theora) и .ogx для мультиплексированного Ogg. [5]

По состоянию на 7 ноября 2017 года текущей версией эталонной реализации Xiph.Org Foundation является libogg 1.3.3. [6] Другая версия, libogg2, находится в разработке, но ожидает переписывания по состоянию на 2018 год. [7] Обе программные библиотеки являются свободным программным обеспечением , выпущенным под лицензией New BSD . Эталонная реализация Ogg была отделена от Vorbis 2 сентября 2000 года. [8]

Различные кодеки Ogg были включены в ряд различных бесплатных и фирменных медиаплееров , как коммерческих, так и некоммерческих, а также в портативные медиаплееры и GPS- приемники различных производителей.

Нейминг

Проект Ogg Vorbis стартовал в 1993 году. Первоначально он назывался «Squish», но это название уже было запатентовано, поэтому проект претерпел изменение названия. Новое название «OggSquish» использовалось до 2001 года, когда оно было снова изменено на «Ogg». С тех пор Ogg стало обозначать формат контейнера , который теперь является частью более крупного мультимедийного проекта Xiph.org. Сегодня «Squish» (теперь известный как «Vorbis») относится к определенному формату кодирования звука, обычно используемому с форматом контейнера Ogg.

Ogg происходит от «ogging», жаргона из компьютерной игры Netrek , который стал означать делать что-то с усилием, возможно, без учета истощения будущих ресурсов. [4] [ проверка не удалась ] В начале авторы считали проект Ogg довольно амбициозным, учитывая ограниченную мощность аппаратного обеспечения ПК того времени. Хотя название «Ogg» не связано с персонажем « Няня Огг » из романов Терри Пратчетта о Плоском мире , «Vorbis» назван в честь другого персонажа Терри Пратчетта из книги « Маленькие боги» . [9]

Формат файла

Формат потока битов «Ogg» , разработанный в первую очередь фондом Xiph.Org, был разработан в качестве основы более крупной инициативы, направленной на создание набора компонентов для кодирования и декодирования мультимедийных файлов, которые доступны бесплатно и могут быть свободно повторно реализованы в программном обеспечении и оборудовании.

Формат состоит из фрагментов данных, каждый из которых называется " Ogg page ". Каждая страница начинается с символов "OggS", что позволяет идентифицировать файл как формат Ogg.

«Серийный номер» и «номер страницы» в заголовке страницы идентифицируют каждую страницу как часть серии страниц, составляющих поток битов . Несколько потоков битов могут быть мультиплексированы в файле, где страницы из каждого потока битов упорядочены по времени поиска содержащихся данных. Потоки битов также могут быть добавлены к существующим файлам, процесс, известный как «цепочка», чтобы заставить потоки битов декодироваться последовательно.

Библиотека с лицензией BSD , называемая "libvorbis", доступна для кодирования и декодирования данных из потоков "Vorbis". Независимые реализации Ogg используются в нескольких проектах, таких как RealPlayer и набор фильтров DirectShow . [10]

Mogg (Multi-Track-Single-Logical-Stream Ogg-Vorbis) — многоканальный или многодорожечный формат файла Ogg.

Структура страницы

Ниже приведена структура полей заголовка страницы Ogg:

Макет поля заголовка страницы Ogg
Макет поля заголовка страницы Ogg
Шаблон захвата – 32 бита
Шаблон захвата или код синхронизации — это магическое число , используемое для обеспечения синхронизации при разборе файлов Ogg. Каждая страница начинается с последовательности из четырех символов ASCII, «OggS». Это помогает в повторной синхронизации анализатора в случаях, когда данные были утеряны или повреждены, и является проверкой работоспособности перед началом разбора структуры страницы.
Версия – 8 бит
Это поле указывает версию формата битстрима Ogg, чтобы обеспечить будущее расширение. В настоящее время предписано 0.
Тип заголовка – 8 бит
Это 8-битное поле флагов, которое указывает тип следующей страницы.
Положение гранул – 64 бита
Позиция гранулы — это временной маркер в файлах Ogg. Это абстрактное значение, значение которого определяется кодеком. Это может быть, например, подсчет количества сэмплов, количества кадров или более сложная схема.
Серийный номер битстрима – 32 бита
Это поле представляет собой серийный номер, который идентифицирует страницу как принадлежащую определенному логическому потоку битов. Каждый логический поток битов в файле имеет уникальное значение, и это поле позволяет реализациям доставлять страницы в соответствующий декодер. В типичном файле Vorbis и Theora один поток — это аудио (Vorbis), а другой — видео (Theora)
Порядковый номер страницы – 32 бита
Это поле является монотонно увеличивающимся полем для каждого логического потока битов. Первая страница — 0, вторая — 1 и т. д. Это позволяет реализациям обнаруживать потерю данных.
Контрольная сумма – 32 бита
Это поле содержит контрольную сумму CRC32 данных на всей странице (включая заголовок страницы, рассчитанную с полем контрольной суммы, установленным на 0). Это позволяет проверить, что данные не были повреждены с момента их создания. Страницы, не прошедшие контрольную сумму, следует отбросить. Контрольная сумма генерируется с использованием полиномиального значения 0x04C11DB7.
Сегменты страницы – 8 бит
Это поле указывает количество сегментов, которые существуют на этой странице. Оно также указывает, сколько байтов находится в таблице сегментов, которая следует за этим полем. На любой странице может быть максимум 255 сегментов.
Сегментная таблица
Таблица сегментов представляет собой массив 8-битных значений, каждое из которых указывает длину соответствующего сегмента в теле страницы. Количество сегментов определяется из предыдущего поля сегментов страницы. Длина каждого сегмента составляет от 0 до 255 байт.

Сегменты предоставляют способ группировать сегменты в пакеты, которые являются значимыми единицами данных для декодера. Когда длина сегмента указана как 255, это означает, что следующий сегмент должен быть объединен с этим и является частью того же пакета. Когда длина сегмента составляет 0–254, это означает, что этот сегмент является последним сегментом в этом пакете. Если длина пакета кратна 255, последний сегмент имеет длину 0.

Если последний пакет продолжается на следующей странице, конечное значение сегмента равно 255, а на следующей странице устанавливается флаг продолжения, указывающий, что начало новой страницы является продолжением предыдущей страницы.

Метаданные

VorbisComment — это базовый формат метаданных, изначально созданный для использования с Ogg Vorbis. С тех пор он был принят в спецификациях инкапсуляций Ogg для других кодеков Xiph.Org, включая Theora , Speex , FLAC и Opus . VorbisComment — это самый простой и широко поддерживаемый механизм хранения метаданных с кодеками Xiph.Org. [11]

Примечательно, что [ attribution needed ] один или несколько METADATA_BLOCK_PICTURE=... в VorbisComment для миниатюр и обложек имеют значения Base64 соответствующего FLAC METADATA_BLOCK_PICTURE . Другими словами, FLAC хранит миниатюры и обложки в двоичных блоках — вне тегов FLAC в порядке от младшего к старшему METADATA_BLOCK_VORBIS_COMMENT . [12] [13]

Другие существующие и предлагаемые механизмы: [14]

История

Веб-кнопка Play Ogg

Проект Ogg начался с простого пакета сжатия аудио как части более крупного проекта в 1993 году. [9] Первоначально программное обеспечение называлось Squish, но из-за существующей торговой марки оно было переименовано в OggSquish . Это название позже использовалось для всего проекта Ogg. В 1997 году Xiphophorus OggSquish был описан как «попытка как создать гибкий сжатый аудиоформат для современных аудиоприложений, так и предоставить первый аудиоформат, который будет распространен на любой современной компьютерной платформе». [16] В 2000 году OggSquish называли «группой из нескольких связанных проектов в области мультимедиа и обработки сигналов». В 2000 году два проекта находились в активной разработке для запланированного выпуска: формат Ogg Vorbis и libvorbis — эталонная реализация Vorbis. Исследования также включали работу над будущим видео и аудиокодированием без потерь. [9] [17] [18] [19] [20] В 2001 году OggSquish был переименован в Ogg и был описан как «зонтик для группы нескольких связанных проектов в области мультимедиа и обработки сигналов». [21] Ogg стал обозначать формат файла , как часть более крупного проекта Xiph.org по мультимедиа. Squish стал просто названием одного из кодеков Ogg. [9] В 2009 году Ogg был описан как «формат контейнера мультимедиа, а также собственный формат файла и потока для кодеков мультимедиа Xiph.org». [22]

Реализация Ogg была отделена от Vorbis 2 сентября 2000 года. [8]

В мае 2003 года были опубликованы два интернет- RFC, касающихся этого формата. Битовый поток Ogg был определен в RFC 3533 (который классифицируется как «информативный»), а его интернет-тип содержимого ( application/ogg) — в RFC 3534 (который по состоянию на 2006 год является предлагаемым стандартным протоколом). В сентябре 2008 года RFC 3534 был отменен RFC 5334, который добавил типы содержимого video/oggи audio/oggрасширения имен файлов .ogx, .ogv, .oga, .spx.

ОГМ

В 2002 году отсутствие формальной поддержки видео в Ogg привело к разработке формата файла OGM , взлома Ogg, который позволял встраивать видео из фреймворка Microsoft DirectShow в оболочку на основе Ogg. Первоначально OGM поддерживался только закрытыми исходными кодами только для Windows, но впоследствии кодовая база была открыта. Позже поддержка видео (и субтитров) была официально указана для Ogg, но несовместимым с OGM образом. Независимо от этого, формат контейнера Matroska достиг зрелости и предоставил альтернативу для людей, заинтересованных в объединении аудио Vorbis и произвольных видеокодеков. В результате OGM больше не поддерживается и не разрабатывается и официально не рекомендуется Xiph.org. [23] Сегодня видео в Ogg можно найти с расширением файла .ogv, которое официально указано и поддерживается. Программное обеспечение и кодеки, поддерживающие файлы .ogm, доступны бесплатно. [24]

2006

Хотя Ogg и не достиг повсеместного распространения стандартов MPEG [25] (например, MP3 / MP4 ), по состоянию на 2006 год он широко использовался для кодирования свободного контента (такого как бесплатная музыка, мультимедиа в проектах Wikimedia Foundation и файлы Creative Commons ) и начал поддерживаться значительным меньшинством цифровых аудиоплееров . Формат Ogg также поддерживали многие популярные игровые движки, включая 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 и движки Grand Theft Auto , а также аудиофайлы игры на основе Java , Minecraft . Более популярный кодек Vorbis имел встроенную поддержку во многих программных проигрывателях, а для почти всех остальных были доступны расширения.

2007

16 мая 2007 года Free Software Foundation начал кампанию по расширению использования Vorbis «как этически, юридически и технически превосходящей аудиоальтернативы фирменному формату MP3». [26] Людей также призывали поддержать кампанию, добавив кнопку веб на свой веб-сайт или блог . Для тех, кто не хотел загружать и использовать предложенный FSF Ogg-плеер ( VLC ), у Xiph.Org Foundation был официальный кодек [27] для приложений на базе QuickTime в Windows и Mac OS X , таких как плееры iTunes и приложения iMovie ; а пользователи Windows могли установить кодек Windows Media Player Ogg. [28]

2009

К 30 июня 2009 года контейнер Ogg, благодаря использованию Theora и Vorbis, был единственным форматом контейнера, включенным в реализацию HTML5 и элементов веб-браузера Firefox 3.5 . [29] [30] Это соответствовало первоначальной рекомендации, изложенной в проекте спецификации HTML5, но позднее удаленной из него (см. споры об Ogg ). <video><audio>

2010

3 марта 2010 года технический анализ разработчика FFmpeg подверг критике универсальные возможности Ogg как формата мультимедийного контейнера. [31] Автор Ogg позже ответил на эти заявления в своей собственной статье. [32]

Ogg-кодеки

Ogg — это всего лишь формат контейнера. Фактическое аудио или видео, закодированное кодеком, хранится внутри контейнера Ogg. Контейнеры Ogg могут содержать потоки, закодированные несколькими кодеками; например, видеофайл со звуком содержит данные, закодированные как аудиокодеком, так и видеокодеком.

Будучи форматом-контейнером, Ogg может встраивать аудио и видео в различных форматах [33] [34] (таких как Dirac , MNG , CELT , MPEG-4 , MP3 и других), но Ogg был предназначен и обычно используется со следующими бесплатными кодеками Xiph.org :

Типы носителей

Аудионоситель Ogg зарегистрирован как тип носителя IANA с расширениями файлов , , и . Это собственное подмножество типа видеоносителя Ogg с расширением файла . Другие приложения Ogg используют тип носителя с расширением файла ; это надмножество . [34] Тип носителя Opus с расширением файла был зарегистрирован позже в RFC 7587 и 7845 . audio/ogg.oga.ogg.spxvideo/ogg.ogvapplication/ogg.ogxvideo/oggaudio/opus.opus

Смотрите также

Ссылки

  1. ^ Формат файла Ogg (полный черновик). Устойчивость цифровых форматов. Вашингтон, округ Колумбия: Библиотека Конгресса. 19 февраля 2008 г. Архивировано из оригинала 8 октября 2021 г. Получено 1 декабря 2021 г.
  2. ^ "Образец варианта Xiph.Org лицензии BSD". Фонд Xiph.Org. Архивировано из оригинала 2020-04-11 . Получено 2009-08-29 .
  3. ^ "Vorbis.com: FAQ". Архивировано из оригинала 2005-10-01 . Получено 2010-05-28 .
  4. ^ ab "Ogging 101". Архивировано из оригинала 2017-12-25 . Получено 2016-11-06 . 3.3 Ogging: Это искусство уничтожения носителя или потенциального носителя с помощью самоубийственного забега.
  5. ^ "Типы MIME и расширения файлов". XiphWiki . 2007-09-07. Архивировано из оригинала 2018-11-17 . Получено 2007-09-10 .
  6. ^ Джайлс, Ральф (2017-11-07). "libogg 1.3.3 release". ogg-dev (список рассылки). Архивировано из оригинала 2018-04-04 . Получено 2019-01-14 .
  7. ^ Джайлс, Ральф (05.01.2008). "r14372 - в trunk/theora: . lib/dec lib/enc". xiph-commits (список рассылки). Архивировано из оригинала 03.10.2020 . Получено 14.01.2019 . Эта библиотека никогда не была выпущена и теперь выглядит так, будто ее нужно переделать.
  8. ^ ab Xiph.Org (2002-07-19) Ogg releases - libogg-1.0.tar.gz - ИЗМЕНЕНИЯ Архивировано 14 июня 2017 г. на Wayback Machine . Получено 1 сентября 2009 г.
  9. ^ abcd "Xiph.org: naming". Фонд Xiph.org. 2006-01-07. Архивировано из оригинала 2012-02-27 . Получено 2009-09-02 .
  10. ^ "Фильтры Directshow для Ogg Vorbis". Архивировано из оригинала 2015-02-08 . Получено 2015-02-14 .
  11. ^ "VorbisComment". 26 апреля 2016 г. Архивировано из оригинала 23 октября 2018 г. Получено 23 октября 2018 г.
  12. ^ "METADATA_BLOCK_PICTURE". flac free lossless audio codec . Xiph.Org . 2014. Архивировано из оригинала 2017-03-27 . Получено 2019-12-03 .
  13. ^ "Спецификация формата Ogg Vorbis I: спецификация поля комментария и заголовка". Xiph.Org . 2005. Архивировано из оригинала 2019-12-03 . Получено 2019-12-03 .
  14. ^ "Metadata". Фонд xiph.org . 24 июля 2013 г. Архивировано из оригинала 23 октября 2018 г. Получено 23 октября 2018 г.
  15. ^ "Ogg Skeleton 4". Xiph.Org . 2012. Архивировано из оригинала 2019-08-13 . Получено 2019-12-03 .
  16. ^ Монтгомери, Кристофер (1997). "Ogg 98.9". Компания Xiphophorus. Архивировано из оригинала 2016-04-24 . Получено 2009-09-02 .
  17. ^ Xiph.org (2000-01-18). "Документация по формату кодирования OggSquish Vorbis". Архивировано из оригинала 18 января 2000 года . Получено 2008-09-02 .
  18. ^ Xiph.org (2000-01-18). "Обзор логического и физического потока битов OggSquish". Архивировано из оригинала 18 января 2000 г. Получено 2008-09-02 .
  19. ^ ab Xiphophorus company (2001-04-05). "Домашняя страница проекта Ogg". Архивировано из оригинала 5 апреля 2001 г. Получено 2009-09-02 .
  20. ^ Xiph.org (2001-12-04). "Домашняя страница проекта Ogg". Архивировано из оригинала 4 декабря 2001 года . Получено 2008-09-02 .
  21. ^ Компания Xiphophorus (2001-12-04). "Домашняя страница проекта Ogg". Архивировано из оригинала 4 декабря 2001 года . Получено 2009-09-02 .
  22. ^ "Формат контейнера Ogg". Xiph.Org Foundation. 2006-01-07. Архивировано из оригинала 2000-05-20 . Получено 2009-09-02 .
  23. ^ "OGM не Ogg. Xiph.org не поддерживает OGM". Резервная копия на WayBack Machine. 2004-07-07. Архивировано из оригинала 17 марта 2012 г.{{cite web}}: CS1 maint: неподходящий URL ( ссылка )
  24. ^ "K-Lite Codec Pack: Сравнение возможностей и поддерживаемых форматов файлов". Codec Guide . Архивировано из оригинала 16 марта 2018 года . Получено 16 марта 2018 года .
  25. ^ Хансен, Эван (2007-02-23). ​​"MP3's Loss, Open Source's Gain" . Wired . Архивировано из оригинала 2010-06-05 . Получено 2010-03-04 .
  26. Ли, Мэтт (16 мая 2007 г.). «'Play Ogg': FSF запускает кампанию за бесплатный аудиоформат». Free Software Foundation. Архивировано из оригинала 2011-06-08 . Получено 2010-03-04 .
  27. ^ "Foundation: Ogg QuickTime Components for iTunes and iMovie (Windows и Mac OS X)". Xiph.org. Архивировано из оригинала 2008-10-26 . Получено 2010-03-04 .
  28. ^ "Фильтры Directshow для Ogg Vorbis, Speex, Theora и FLAC". Xiph.org. 2010-02-22. Архивировано из оригинала 2013-01-24 . Получено 2010-03-04 .
  29. ^ "Mozilla Developer Center - HTML - Element - Video". Сентябрь 2009. Архивировано из оригинала 2010-06-27 . Получено 2009-12-28 .
  30. ^ "Mozilla Developer Center - HTML - Element - Audio". Сентябрь 2009. Архивировано из оригинала 2010-06-27 . Получено 2009-12-28 .
  31. ^ Rullgard, Mans (2010-03-03). "Ogg возражения". hardwarebug.org. Архивировано из оригинала 2010-05-09 . Получено 2010-05-02 .
  32. Монтгомери, Кристофер (27.04.2010). «Монти — в защиту доброго имени Огга». people.xiph.org/~xiphmont. Архивировано из оригинала 29.04.2010 . Получено 02.05.2010 .
  33. ^ "Типы MIME и расширения файлов". XiphWiki. 2009-10-04. Архивировано из оригинала 2018-11-17 . Получено 2009-10-24 .
  34. ^ ab I. Goncalves; S. Pfeiffer; C. Montgomery (2008). Ogg Media Types. раздел 10. doi : 10.17487/RFC5334 . RFC 5334.
  35. ^ "OggPCM". XiphWiki. 2020-05-25. Архивировано из оригинала 2020-10-03 . Получено 2020-05-25 .
  36. ^ Ральф Джайлс (19.12.2000) vorbis-dev - Видеокодек Tarkin? Архивировано 24.01.2018 в Wayback Machine , список рассылки Xiph.org vorbis-dev. Получено 06.09.2009.
  37. ^ Джек Моффитт (03.01.2001) vorbis-dev - Наконец-то Таркин Архивировано 30.09.2014 в Wayback Machine , список рассылки Xiph.org vorbis-dev. Получено 06.09.2009.
  38. ^ Крис Монтгомери (2001-02-11) Список рассылки разработчиков Tarkin Архивировано 2014-09-30 на Wayback Machine , получено 2009-09-06
  39. Майкл Смит (29 августа 2005 г.) Таркин Архивировано 3 марта 2016 г. на Wayback Machine . Получено 6 сентября 2009 г.
  40. ^ Спецификация Dirac — интеграция видео, закодированного Dirac, в широко используемые форматы контейнеров. Архивировано 14 июня 2010 г. на Wayback Machine. Получено 5 июля 2009 г.
  41. ^ "OggKate". wiki.xiph.org . 2017. Архивировано из оригинала 2011-07-18 . Получено 2019-12-03 .

Внешние ссылки