dash_doc

0
2 года назад
README.md

dash_doc

Структура контейнера DASH (Dynamic Adaptive Streaming over HTTP) можно представить в виде таблицы, описывающей ключевые компоненты и их назначение.

Вот таблица с описанием структуры контейнера DASH:

КомпонентОписание
MPD (Media Presentation Description)Основной манифест, описывающий структуру и содержимое потока, включая информацию о периодах, адаптационных наборах, представлениях и сегментах.
PeriodОтдельный временной интервал в MPD, содержащий один или несколько адаптационных наборов.
Adaptation SetНабор представлений одного типа контента (например, видео или аудио), предназначенных для адаптивного потока.
RepresentationКонкретное представление контента в адаптационном наборе, включающее параметры, такие как кодек, разрешение и битрейт.
Segment TemplateШаблон для формирования URL сегментов, содержащий информацию о формате сегментов и их именах.
Initialization SegmentНачальный сегмент, содержащий информацию для декодирования последующих медиа-сегментов (например, заголовки кодека).
Media SegmentОсновные сегменты медиа данных, содержащие видео, аудио или другие медиа данные.
Index SegmentСегмент, содержащий индексную информацию для доступа к медиа-сегментам (например, sidx box).
Bitstream Switching SegmentСегмент, позволяющий плавно переключаться между различными битрейтами в адаптивном потоке.

Описание ключевых элементов

  • MPD:

    • Содержит метаданные о контенте, такие как длительность, доступные адаптационные наборы и представления.
  • Period:

    • Определяет временные интервалы, может содержать рекламу или дополнительные видео фрагменты.
  • Adaptation Set:

    • Группирует представления одного типа, может содержать несколько кодеков или разрешений.
  • Representation:

    • Конкретный вариант медиа контента с определенными характеристиками, такими как битрейт и разрешение.
  • Segment Template:

    • Используется для генерации URL для сегментов, упрощая их адресацию и доступ.
  • Initialization Segment:

    • Включает информацию, необходимую для начала воспроизведения, например, заголовки кодека.
  • Media Segment:

    • Основные сегменты, содержащие данные для воспроизведения медиа контента.
  • Index Segment:

    • Содержит информацию об офсетах и длительностях медиа-сегментов, что облегчает их поиск и доступ.
  • Bitstream Switching Segment:

    • Позволяет менять битрейт без прерывания воспроизведения, поддерживая адаптивное потоковое вещание.

Эта структура обеспечивает гибкость и масштабируемость DASH, позволяя адаптивно изменять качество потока в зависимости от условий сети и устройства пользователя.

Для связи структуры контейнера DASH с исходным кодом библиотеки

universal-dash-transmuxer
, нужно рассмотреть, как ключевые компоненты DASH обрабатываются в коде. Ниже приведена таблица с основными компонентами DASH и соответствующими частями исходного кода.

Таблица: Соответствие компонентов DASH исходному коду библиотеки

КомпонентОписаниеИсходный код (файл)
MPD (Media Presentation Description)Основной манифест, описывающий структуру и содержимое потока, включая информацию о периодах, адаптационных наборах, представлениях и сегментах.
library/tools/OSX/ToolsMpdParser.h
и
library/tools/OSX/ToolsMpdParser.mm
PeriodОтдельный временной интервал в MPD, содержащий один или несколько адаптационных наборов.
library/tools/OSX/ToolsMpdParser.mm
(часть обработки MPD)
Adaptation SetНабор представлений одного типа контента (например, видео или аудио), предназначенных для адаптивного потока.
library/tools/OSX/ToolsMpdParser.mm
(часть обработки MPD)
RepresentationКонкретное представление контента в адаптационном наборе, включающее параметры, такие как кодек, разрешение и битрейт.
library/tools/OSX/ToolsMpdParser.mm
(часть обработки MPD)
Segment TemplateШаблон для формирования URL сегментов, содержащий информацию о формате сегментов и их именах.
library/tools/OSX/ToolsMpdParser.mm
(часть обработки MPD)
Initialization SegmentНачальный сегмент, содержащий информацию для декодирования последующих медиа-сегментов (например, заголовки кодека).
library/dash/avcc_contents.h
,
library/dash/avcc_contents.cc
,
library/dash/box.h
(парсинг box'ов)
Media SegmentОсновные сегменты медиа данных, содержащие видео, аудио или другие медиа данные.
library/dash/mdat_contents.h
,
library/dash/mdat_contents.cc
Index SegmentСегмент, содержащий индексную информацию для доступа к медиа-сегментам (например, sidx box).
library/dash/sidx_contents.h
,
library/dash/sidx_contents.cc
Bitstream Switching SegmentСегмент, позволяющий плавно переключаться между различными битрейтами в адаптивном потоке.
library/dash_to_hls_api.cc
(общая обработка переключения битрейтов)

Описание соответствий

  1. MPD (Media Presentation Description):

    • Исходный код: Парсинг MPD осуществляется в файлах
      ToolsMpdParser.h
      и
      ToolsMpdParser.mm
      . Эти файлы содержат функции для обработки и разбора MPD-файлов, извлекая информацию о периодах, адаптационных наборах и представлениях.
  2. Period, Adaptation Set, Representation, Segment Template:

    • Исходный код: Эти компоненты также обрабатываются в файлах
      ToolsMpdParser.h
      и
      ToolsMpdParser.mm
      , так как они являются частью структуры MPD. Эти файлы отвечают за извлечение и обработку информации о каждом из этих компонентов.
  3. Initialization Segment:

    • Исходный код: Файлы
      avcc_contents.h
      ,
      avcc_contents.cc
      , и
      box.h
      обрабатывают начальные сегменты, такие как avcC box, который содержит информацию, необходимую для декодирования последующих медиа-сегментов.
  4. Media Segment:

    • Исходный код: Файлы
      mdat_contents.h
      и
      mdat_contents.cc
      обрабатывают основные медиа-сегменты, содержащие аудио или видео данные.
  5. Index Segment:

    • Исходный код: Файлы
      sidx_contents.h
      и
      sidx_contents.cc
      обрабатывают индексные сегменты, которые содержат информацию для доступа к медиа-сегментам.
  6. Bitstream Switching Segment:

    • Исходный код: Файл
      dash_to_hls_api.cc
      содержит функции для общей обработки и преобразования DASH в HLS, включая обработку переключения битрейтов.