Общие сведения о системах MPEG-2

[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngineи аудио и видеозахват в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует при написании нового кода использовать MediaPlayer, IMFMediaEngine и аудио-видеозахват в Media Foundation, вместо DirectShowпо возможности. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

В этом разделе представлен общий, нетехнический обзор уровня MPEG-2 Systems. MPEG-2 Systems — это стандарт, определяющий, как аудио- и видеопотоки мультиплексируются в MPEG-2.

элементарные потоки

Мультиплексирование MPEG-2 начинается с одного или нескольких байтовых потоков, называемых элементарными потоками (ES), которые содержат видео, аудио или другие данные. Например, видео ES содержит сжатые видеокадры, а также заголовки последовательностей, заголовки GOP и все остальное, необходимое декодеру для декодирования потока. Уровень "Системы" не определяет содержимое потока БАЙТов ES.

Элементарный поток разбивается на пакеты, формируя пакетизованный элементарный поток (PES). Пакеты PES имеют переменную длину. Содержимое пакета называется полезной нагрузкой. Каждый пакет PES также содержит заголовок. Мультиплексер назначает 1-байтовый идентификатор потока каждому PES; отдельные пакеты PES определяются идентификатором потока в заголовке пакета. Для аудиопотоков идентификатор потока имеет форму 110xxxxx. Для видео идентификатор потока имеет форму 1110гггг.

Стандарт MPEG-2 определяет два способа передачи потоков элементарных данных в пакетах: программные потоки и транспортные потоки.

программные потоки

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

транспортных потоков

Транспортные потоки (TS) предназначены для ненадежных или подверженных ошибкам сред, таких как сетевые трансляции. Кроме того, они могут содержать несколько программ, синхронизированных с разными часами. Транспортный поток добавляет второй уровень пакетизации — потоки PES упаковываются в пакеты транспортных потоков, которые имеют фиксированный размер 188 байт на пакет. Пакеты TS также могут содержать потоки сведений о программе, описанные в следующем разделе.

Каждый пакет TS имеет 4-байтовый заголовок, а также необязательное поле адаптации, содержащее дополнительные сведения о заголовке. Мультиплексер назначает идентификатор программы (PID) каждому потоку PES или потоку сведений о программе. Идентификаторы PID используются для идентификации пакетов TS, подобно тому, как идентификаторы потоков идентифицируют пакеты PES. (Если транспортный поток содержит несколько программ, идентификаторы потока могут не быть уникальными, но назначения PID уникальны в транспортном потоке.)

конкретная информация о программе

Так как транспортный поток может содержать несколько программ, необходимо связать различные пакеты PES с программами, к которым они относятся. Это достигается с помощью таблиц, определяющих потоки программы. В совокупности эти данные называются "Сведения о программе" (PSI). Данные PSI передаются в пакеты TS так же, как и данные PES. Существуют различные типы данных PSI, в том числе:

  • Таблица ассоциаций программ (PAT). ПАТ всегда назначается PID 0x000. Каждая запись в PAT — это ИДЕНТИФИКАТОР, определяющий пакеты PMT для этой программы (см. следующий элемент).

  • Таблица программной карты (PMT). Каждый PMT определяет одну программу. PMT содержит список потоков; каждая запись таблицы предоставляет идентификатор потока для этого потока, а также код, определяющий тип потока. ISO/IEC 13818-1 определяет некоторые стандартные типы потоков; Сокращенный список показан в следующей таблице.

    тип_потока Описание
    0x01 Видео MPEG-1
    0x02 Видео MPEG-2
    0x03 Звук MPEG-1
    0x04 Звук MPEG-2
    0x80 - 0xFF Частный пользователь

     

    Другие стандарты, основанные на MPEG-2, например ATSC, могут определять дополнительные типы потоков в диапазоне "частный пользователь". Например, ATSC определяет 0x81 как звук Dolby AC-3.

  • Таблицы условного доступа (CAT)

  • Таблицы идентификации сети (NIT)

поддержка MPEG-2 в DirectShow