Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Заголовок страницы OGG

Ogg страница представляет собой блок данных в Ogg битового потока, как правило , между 4 кбайт и 8 кбайт, с размером максимум 65,307 байт. [1]

Цель [ править ]

Одна из целей мультимедийных форматов контейнеров, чтобы позволить несколько кодеков быть мультиплексированы в один файл или поток. Например, чтобы объединить аудио , видео и субтитры в один файл.

Точка зрения, которой придерживается Кристофер Монтгомери , создатель формата Ogg, заключается в том, что единицы мультиплексированных данных кодека должны быть отдельным уровнем абстракции от единиц данных, используемых кодеком, чтобы ограничить объем буферизации, необходимой при декодировании содержащихся данных. . По его мнению, которое поддерживается другими разработчиками, работающими с Xiph.org Foundation , это дает Ogg техническое преимущество перед альтернативными форматами битовых потоков, такими как AVI , QuickTime и MPEG .

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

Структура страницы [ править ]

Каждая страница Ogg начинается с четырехбайтовой магической строки «OggS». Если синхронизация потеряна, декодер может искать следующее вхождение этой последовательности, чтобы снова начать декодирование. За этими четырьмя байтами следует нулевой байт для Ogg версии 0. Поле версии изначально предназначалось для того, чтобы несколько типов страниц Ogg, настроенных для разных полезных данных, сосуществовали в одном потоке. В 2000-х стало ясно, что будет использоваться только одностраничная версия. [2]

Шестой байт каждой страницы определяет флаги типа. Значение 1 указывает, что страница содержит данные пакета, продолженного с предыдущей страницы. Значение 2 указывает, что это первая страница потока, а значение 4 указывает, что это последняя страница потока. Эти значения можно комбинировать с помощью сложения или логического ИЛИ .

Следующие 8 байтов или 64 бита называются абсолютной позицией гранулы, которая представляет собой синтетическое значение, которое кодирует временную метку декодирования, временную метку представления и расстояние до первой необходимой ссылки. Точное кодирование позиции гранулы зависит от конкретного кодека. [2] [3]

Следующие 4 байта - это порядковый номер потока, которому принадлежит эта страница. Каждый логический поток должен иметь уникальный серийный номер в пределах физического потока. Он также предназначен для использования в качестве слабого хэша, поэтому коллизия при мультиплексировании разных потоков очень маловероятна , что устраняет необходимость в постоянном пересчете заголовков страниц на каждом этапе мультиплексирования.

Следующие 4 байта - порядковый номер страницы в потоке. Это счетчик страниц, который позволяет обнаруживать потерянные страницы. По сравнению с другими форматами контейнеров, большое количество битов также позволяет осуществлять прямую одноадресную / многоадресную рассылку UDP с переупорядочиванием и сборкой Ogg. [2]

Следующие 4 байта, начиная с 23-го байта страницы, представляют собой контрольную сумму CRC страницы. Поскольку значение этого поля изменяется, результат проверки вычисляется с этим полем, равным нулю.

Затем 27-й байт каждой страницы определяет количество содержащихся в ней сегментов в диапазоне от 0 до 255. Это также размер следующей таблицы сегментов в байтах. Каждый байт таблицы сегментов обеспечивает длину сегмента.

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

Редактирование со страницами [ править ]

Одним из распространенных способов использования страниц Ogg является разрешение редактирования файлов Ogg без снижения качества или необходимости перекодирования файлов.

Любой серии страниц в потоке могут предшествовать страницы заголовков потока (страницы с абсолютной позицией гранулы, равной 0), и они могут быть правильно декодированы медиаплеерами. Этот метод можно использовать для обрезки медиафайлов без потерь.

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

Ссылки [ править ]

  1. ^ «RFC 3533 - формат инкапсуляции Ogg версии 0» .
  2. ^ a b c Монтгомери, Кристофер (27 апреля 2010 г.). «Монти - в защиту доброго имени Огга» . people.xiph.org/~xiphmont. Архивировано из оригинала на 2010-04-29 . Проверено 2 мая 2010 .
  3. ^ "OGG-мультиплекс" . Проверено 2 марта 2011 .

Внешние ссылки [ править ]

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