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

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

В этом разделе представлен общий нетехнических обзор уровня систем MPEG-2. 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 или потоку сведений о программе. Идентификаторы идентификаторов используются для идентификации пакетов TS аналогично тому, как идентификаторы потоков идентифицируют пакеты PES. (Если транспортный поток содержит несколько программ, идентификаторы потока могут быть не уникальными, но назначения PID являются уникальными в пределах транспортного потока.)

Сведения о программе

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

  • Таблица сопоставлений программ (PAT). PAT всегда назначается 0x000 PID. Каждая запись в PAT является PID, который идентифицирует пакеты PMT для этой программы (см. следующий элемент).

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

    stream_type Описание
    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