Введение
Цифровой видеоформат, используемый для хранения и передачи данных в сети, MPEG транспортный поток (MPEG TS, MTS) или просто транспортный поток (TS) — это стандартный цифровой контейнерный формат для передачи и хранения аудио, видео и данных протокола программной и системной информации (PSIP). Он используется в системах вещания, таких как DVB, ATSC и IPTV. Транспортный поток определяет контейнерный формат, инкапсулирующий пакетизированные элементарные потоки, с функциями коррекции ошибок и синхронизации для поддержания целостности передачи при ухудшении качества канала связи. Транспортные потоки отличаются от аналогично названного потока программ MPEG несколькими важными аспектами: потоки программ предназначены для достаточно надежных носителей, таких как диски (например, DVD), в то время как транспортные потоки предназначены для менее надежной передачи, в частности, наземного или спутникового вещания. Кроме того, транспортный поток может содержать несколько программ. Транспортный поток специфицирован в MPEG 2 Part 1, Systems, официально известном как стандарт ISO/IEC 13818-1 или ITU-T Rec. H.222.0. Формат M2TS добавляет к пакетам 4-байтовый тег авторских прав и временной метки. Размер пакета в 188 байт был изначально выбран для совместимости с системами асинхронной передачи (ATM). + Формат пакета частичного транспортного потока
НазваниеКоличество битМаска (старший байт вперед)Описание
4-байтовый заголовок транспортного потокаSync byte80xff000000Битовый шаблон 0x47 (ASCII символ 'G')
Индикатор ошибки транспорта (TEI)10x800000Устанавливается, если демодулятор не может исправить ошибки из данных FEC, указывая на повреждение пакета.
Индикатор начала блока полезной нагрузки (PUSI)10x400000Устанавливается, когда этот пакет содержит первый байт новой полезной нагрузки. Для пакетов PSI первые байты полезной нагрузки указывают, где начинается новая единица полезной нагрузки. Для пакетов PES новый пакет PES начинается с начала полезной нагрузки. Это поле позволяет приемнику, начавшему чтение в середине передачи, определить, когда можно начать извлечение данных.
Приоритет транспорта10x200000Устанавливается, если текущий пакет имеет более высокий приоритет, чем другие пакеты с тем же PID.
PID130x1fff00Идентификатор пакета, описывающий данные полезной нагрузки.
Контроль шифрования транспорта (TSC)20xc0'00' = Не зашифрован. Только для DVB CSA и ATSC DES:'01' (0x40) = Зарезервировано для будущего использования'10' (0x80) = Зашифровано с использованием четного ключа'11' (0xC0) = Зашифровано с использованием нечетного ключа
Контроль поля адаптации20x3001 – нет поля адаптации, только полезная нагрузка,10 – только поле адаптации, без полезной нагрузки,11 – поле адаптации, за которым следует полезная нагрузка,00 – ЗАРЕЗЕРВИРОВАНО для будущего использования
Счетчик непрерывности40xfПоследовательный номер пакетов полезной нагрузки (0x00 до 0x0F) в каждом потоке (кроме PID 8191). Увеличивается для каждого PID, только если установлен флаг полезной нагрузки.
Необязательные поляПоле адаптациипеременнаяПрисутствует, если элемент управления полем адаптации равен 10 или 11. Формат см. ниже.
Данные полезной нагрузкипеременнаяПрисутствует, если элемент управления полем адаптации равен 01 или 11. Полезной нагрузкой могут быть пакеты PES, специфическая информация о программе (см. ниже) или другие данные. + Формат поля адаптации
НазваниеКоличество битМаскаОписание
Длина поля адаптации8Количество байт в поле адаптации, непосредственно следующем за этим байтом
Индикатор прерывания10x80Устанавливается, если текущий пакет TS находится в состоянии прерывания относительно счетчика непрерывности или опорной частоты программы
Индикатор произвольного доступа10x40Устанавливается, если поток может быть декодирован без ошибок с этой точки
Индикатор приоритета элементарного потока10x20Устанавливается, если этот поток следует считать "высоким приоритетом"
Флаг PCR10x10Устанавливается, если присутствует поле PCR
Флаг OPCR10x08Устанавливается, если присутствует поле OPCR
Флаг точки склейки10x04Устанавливается, если присутствует поле обратного отсчета до точки склейки
Флаг частных данных транспорта10x02Устанавливается, если присутствуют частные данные транспорта
Флаг расширения поля адаптации10x01Устанавливается, если присутствуют данные расширения адаптации
Необязательные поля
PCR48Опорная частота программы, хранящаяся как 33 бита базы, 6 битов зарезервированы, 9 битов расширения. Значение вычисляется как база * 300 + расширение.
OPCR48Исходная опорная частота программы. Помогает при копировании одного TS в другой
Обратный отсчет до точки склейки8Указывает, через сколько пакетов TS от текущего пакета произойдет точка склейки (двухдополнительный знаковый формат; может быть отрицательным)
Длина частных данных транспорта8Длина следующего поля
Частные данные транспортапеременнаяЧастные данные
Расширение адаптациипеременнаяСм. ниже
ЗаполнителипеременнаяВсегда 0xFF
MPEG transport stream (MPEG TS, MTS) or simply transport stream (TS) is a standard digital container format for transmission and storage of audio, video, and Program and System Information Protocol (PSIP) data. It is used in broadcast systems such as DVB, ATSC and IPTV. Transport stream specifies a container format encapsulating packetized elementary streams, with error correction and synchronization pattern features for maintaining transmission integrity when the communication channel carrying the stream is degraded. Transport streams differ from the similarly named MPEG program stream in several important ways: program streams are designed for reasonably reliable media, such as discs (like DVDs), while transport streams are designed for less reliable transmission, namely terrestrial or satellite broadcast. Further, a transport stream may carry multiple programs. Transport stream is specified in MPEG 2 Part 1, Systems, formally known as ISO/IEC standard 13818 1 or ITU T Rec. H.222.0. while the M2TS format prefixes packets with a 4 byte copyright and timestamp tag. The 188 byte packet size was originally chosen for compatibility with Asynchronous Transfer Mode (ATM) systems. + Partial transport stream packet formatNameNumber of bitsBitmask (big endian)Description4 byte Transport Stream HeaderSync byte80xff000000Bit pattern of 0x47 (ASCII char 'G')Transport error indicator (TEI)10x800000Set when a demodulator can't correct errors from FEC data; indicating the packet is corrupt. Payload unit start indicator (PUSI)10x400000Set when this packet contains the first byte of a new payload unit. For PSI packet data, the first byte of the payload will indicate where this new payload unit starts. For PES packet data, the new PES packet shall start at the start of the payload. This field allows a receiver that started reading mid transmission to know when it can start extracting data. Transport priority10x200000Set when the current packet has a higher priority than other packets with the same PID. PID130x1fff00Packet Identifier, describing the payload data. Transport scrambling control (TSC)20xc0 '00' = Not scrambled. For DVB CSA and ATSC DES only:'01' (0x40) = Reserved for future use'10' (0x80) = Scrambled with even key'11' (0xC0) = Scrambled with odd keyAdaptation field control20x3001 – no adaptation field, payload only,
10 – adaptation field only, no payload,
11 – adaptation field followed by payload,
00 – RESERVED for future use Continuity counter40xfSequence number of payload packets (0x00 to 0x0F) within each stream (except PID 8191)Incremented per PID, only when a payload flag is set. Optional fieldsAdaptation fieldvariablePresent if adaptation field control is 10 or 11. See below for format. Payload datavariablePresent if adaptation field control is 01 or 11. Payload may be PES packets, program specific information (below), or other data. + Adaptation field formatNameNumber of bitsBitmaskDescriptionAdaptation field length8 Number of bytes in the adaptation field immediately following this byteDiscontinuity indicator10x80Set if current TS packet is in a discontinuity state with respect to either the continuity counter or the program clock referenceRandom access indicator10x40Set when the stream may be decoded without errors from this pointElementary stream priority indicator10x20Set when this stream should be considered "high priority"PCR flag10x10Set when PCR field is presentOPCR flag10x08Set when OPCR field is presentSplicing point flag10x04Set when splice countdown field is presentTransport private data flag10x02Set when transport private data is presentAdaptation field extension flag10x01Set when adaptation extension data is presentOptional fieldsPCR48 Program clock reference, stored as 33 bits base, 6 bits reserved, 9 bits extension. The value is calculated as base * 300 + extension. OPCR48 Original Program clock reference. Helps when one TS is copied into anotherSplice countdown8 Indicates how many TS packets from this one a splicing point occurs (Two's complement signed; may be negative)Transport private data length8 The length of the following fieldTransport private datavariable Private dataAdaptation extensionvariable See belowStuffing bytesvariableAlways 0xFF
+ Adaptation extension formatNameNumber of bitsBitmaskDescriptionAdaptation extension length80xff00The length of the headerLegal time window (LTW) flag10x0080Piecewise rate flag10x0040Seamless splice flag10x0020Reserved50x001fOptional fieldsLTW flag set (2 bytes)LTW valid flag10x8000LTW offset150x7fffExtra information for rebroadcasters to determine the state of buffers when packets may be missing. Piecewise flag set (3 bytes)Reserved20xc00000Piecewise rate220x3fffffThe rate of the stream, measured in 188 byte packets, to define the end time of the LTW. Seamless splice flag set (5 bytes)Splice type40xf000000000Indicates the parameters of the H.262 splice. DTS next access unit360x0efffefffeThe PES DTS of the splice point. Split up as multiple fields, 1 marker bit (0x1), 15 bits, 1 marker bit, 15 bits, and 1 marker bit, for 33 data bits total. +Payload formatNameNumber of bitsBitmaskDescriptionPayload Pointer (optional)80xffPresent only if the Payload Unit Start Indicator (PUSI) flag is set, and the packet data type is PSI (not PES). It gives the index after this byte at which the new payload unit starts. Any payload byte before the index is part of the previous payload unit. Actual PayloadvariableThe content of the payload.
+ Формат расширения адаптации
НазваниеКоличество битМаскаОписание
Длина расширения адаптации80xff00Длина заголовка
Флаг допустимого временного окна (LTW)10x0080
Флаг кусочной скорости10x0040
Флаг бесшовной склейки10x0020
Зарезервировано50x001f
Необязательные поля
Установлен флаг LTW (2 байта)
Флаг LTW valid10x8000
Смещение LTW150x7fffДополнительная информация для ретрансляторов для определения состояния буферов, когда пакеты могут отсутствовать.
Установлен флаг кусочной скорости (3 байта)
Зарезервировано20xc00000
Кусочная скорость220x3fffffСкорость потока, измеряемая в пакетах по 188 байт, для определения времени окончания LTW.
Установлен флаг бесшовной склейки (5 байт)
Тип склейки40xf000000000Указывает параметры склейки H.262.
DTS следующего блока доступа360x0efffefffePES DTS точки склейки. Разделен на несколько полей, 1 маркерный бит (0x1), 15 бит, 1 маркерный бит, 15 бит и 1 маркерный бит, всего 33 бита данных. + Формат полезной нагрузки
НазваниеКоличество битМаскаОписание
Указатель полезной нагрузки (необязательно)80xffПрисутствует только в том случае, если установлен флаг индикатора начала блока полезной нагрузки (PUSI) и тип данных пакета — PSI (не PES). Он указывает индекс после этого байта, с которого начинается новая единица полезной нагрузки. Любой байт полезной нагрузки перед индексом является частью предыдущей единицы полезной нагрузки.
Фактическая полезная нагрузкапеременнаяСодержимое полезной нагрузки.
MPEG transport stream (MPEG TS, MTS) or simply transport stream (TS) is a standard digital container format for transmission and storage of audio, video, and Program and System Information Protocol (PSIP) data. It is used in broadcast systems such as DVB, ATSC and IPTV. Transport stream specifies a container format encapsulating packetized elementary streams, with error correction and synchronization pattern features for maintaining transmission integrity when the communication channel carrying the stream is degraded. Transport streams differ from the similarly named MPEG program stream in several important ways: program streams are designed for reasonably reliable media, such as discs (like DVDs), while transport streams are designed for less reliable transmission, namely terrestrial or satellite broadcast. Further, a transport stream may carry multiple programs. Transport stream is specified in MPEG 2 Part 1, Systems, formally known as ISO/IEC standard 13818 1 or ITU T Rec. H.222.0. while the M2TS format prefixes packets with a 4 byte copyright and timestamp tag. The 188 byte packet size was originally chosen for compatibility with Asynchronous Transfer Mode (ATM) systems. + Partial transport stream packet formatNameNumber of bitsBitmask (big endian)Description4 byte Transport Stream HeaderSync byte80xff000000Bit pattern of 0x47 (ASCII char 'G')Transport error indicator (TEI)10x800000Set when a demodulator can't correct errors from FEC data; indicating the packet is corrupt. Payload unit start indicator (PUSI)10x400000Set when this packet contains the first byte of a new payload unit. For PSI packet data, the first byte of the payload will indicate where this new payload unit starts. For PES packet data, the new PES packet shall start at the start of the payload. This field allows a receiver that started reading mid transmission to know when it can start extracting data. Transport priority10x200000Set when the current packet has a higher priority than other packets with the same PID. PID130x1fff00Packet Identifier, describing the payload data. Transport scrambling control (TSC)20xc0 '00' = Not scrambled. For DVB CSA and ATSC DES only:'01' (0x40) = Reserved for future use'10' (0x80) = Scrambled with even key'11' (0xC0) = Scrambled with odd keyAdaptation field control20x3001 – no adaptation field, payload only,
10 – adaptation field only, no payload,
11 – adaptation field followed by payload,
00 – RESERVED for future use Continuity counter40xfSequence number of payload packets (0x00 to 0x0F) within each stream (except PID 8191)Incremented per PID, only when a payload flag is set. Optional fieldsAdaptation fieldvariablePresent if adaptation field control is 10 or 11. See below for format. Payload datavariablePresent if adaptation field control is 01 or 11. Payload may be PES packets, program specific information (below), or other data. + Adaptation field formatNameNumber of bitsBitmaskDescriptionAdaptation field length8 Number of bytes in the adaptation field immediately following this byteDiscontinuity indicator10x80Set if current TS packet is in a discontinuity state with respect to either the continuity counter or the program clock referenceRandom access indicator10x40Set when the stream may be decoded without errors from this pointElementary stream priority indicator10x20Set when this stream should be considered "high priority"PCR flag10x10Set when PCR field is presentOPCR flag10x08Set when OPCR field is presentSplicing point flag10x04Set when splice countdown field is presentTransport private data flag10x02Set when transport private data is presentAdaptation field extension flag10x01Set when adaptation extension data is presentOptional fieldsPCR48 Program clock reference, stored as 33 bits base, 6 bits reserved, 9 bits extension. The value is calculated as base * 300 + extension. OPCR48 Original Program clock reference. Helps when one TS is copied into anotherSplice countdown8 Indicates how many TS packets from this one a splicing point occurs (Two's complement signed; may be negative)Transport private data length8 The length of the following fieldTransport private datavariable Private dataAdaptation extensionvariable See belowStuffing bytesvariableAlways 0xFF
+ Adaptation extension formatNameNumber of bitsBitmaskDescriptionAdaptation extension length80xff00The length of the headerLegal time window (LTW) flag10x0080Piecewise rate flag10x0040Seamless splice flag10x0020Reserved50x001fOptional fieldsLTW flag set (2 bytes)LTW valid flag10x8000LTW offset150x7fffExtra information for rebroadcasters to determine the state of buffers when packets may be missing. Piecewise flag set (3 bytes)Reserved20xc00000Piecewise rate220x3fffffThe rate of the stream, measured in 188 byte packets, to define the end time of the LTW. Seamless splice flag set (5 bytes)Splice type40xf000000000Indicates the parameters of the H.262 splice. DTS next access unit360x0efffefffeThe PES DTS of the splice point. Split up as multiple fields, 1 marker bit (0x1), 15 bits, 1 marker bit, 15 bits, and 1 marker bit, for 33 data bits total. +Payload formatNameNumber of bitsBitmaskDescriptionPayload Pointer (optional)80xffPresent only if the Payload Unit Start Indicator (PUSI) flag is set, and the packet data type is PSI (not PES). It gives the index after this byte at which the new payload unit starts. Any payload byte before the index is part of the previous payload unit. Actual PayloadvariableThe content of the payload.
Программы
Транспортный поток оперирует понятием программ. Каждая программа описывается таблицей сопоставления программ (PMT). Элементарные потоки, связанные с данной программой, имеют идентификаторы PID, перечисленные в PMT. Отдельный PID также связан с самой PMT. Например, транспортный поток, используемый в цифровом телевидении, может содержать три программы, представляющие три телевизионных канала. Предположим, каждый канал состоит из одного видеопотока, одного или двух аудиопотоков и любых необходимых метаданных. Приемнику, желающему декодировать один из трех каналов, достаточно декодировать полезные данные каждого PID, связанного с его программой. Он может игнорировать содержимое всех остальных PID. Транспортный поток, содержащий более одной программы, называется многопрограммным транспортным потоком (MPTS). Транспортный поток, содержащий только одну программу, называется однопрограммным транспортным потоком (SPTS).
Конкретная информация о программе
Существует 4 таблицы информации о программе (PSI): таблица ассоциации программ (PAT), таблица отображения программ (PMT), таблица условного доступа (CAT) и таблица сетевой информации (NIT). Спецификация MPEG 2 не определяет формат таблиц CAT и NIT.
ПЦР
Для обеспечения декодеру возможности воспроизводить синхронизированный контент, например, аудиодорожки, соответствующие сопутствующему видео, как минимум один раз в 100 мс, в адаптационном поле пакета транспортного потока MPEG 2 передается эталон тактовой частоты программы (PCR). PID, содержащий PCR для программы MPEG 2, идентифицируется значением pcr pid в соответствующей PMT. Значение PCR, при правильном использовании, применяется для генерации системных часов в декодере. Декодер системных часов (STC), при корректной реализации, обеспечивает высокоточную временную базу, используемую для синхронизации элементарных потоков аудио и видео. Временные отметки в MPEG 2 отсчитываются относительно этих часов. Например, временная метка представления (PTS) предназначена для указания времени относительно PCR. Первые 33 бита основаны на тактовой частоте 90 кГц. Последние 9 битов основаны на тактовой частоте 27 МГц. Максимальный допустимый джиттер для PCR составляет .
Нулевые пакеты
Некоторые схемы передачи, такие как ATSC и DVB, предъявляют строгие требования к постоянной скорости передачи данных в транспортном потоке. Чтобы обеспечить поддержание постоянной скорости передачи данных, мультиплексор может нуждаться во вставке дополнительных пакетов. Для этой цели зарезервирован PID 0x1FFF. Нулевые пакеты содержат полезную нагрузку, заполненную значениями 0xFF, и от приемника ожидается игнорирование их содержимого.
Использование в цифровых видеокамерах
Транспортный поток изначально разрабатывался для вещания. Позже он был адаптирован для использования с цифровыми видеокамерами, записывающими устройствами и проигрывателями путем добавления 4-байтового поля временного кода (TC) к стандартным пакетам размером 188 байт, что привело к созданию пакета размером 192 байта. Это неофициально называют потоком M2TS, который часто встречается в HDV-камерах. Ассоциация Blu-ray Disc называет его "транспортным потоком BDAV MPEG 2". Временной код обеспечивает быстрый доступ к любой части потока как из медиаплеера, так и из нелинейной системы видеомонтажа. Он также используется для синхронизации видеопотоков с нескольких камер в многокамерной конфигурации.
Использование в Blu-ray
Видеозаписи на Blu-ray Disc, созданные с поддержкой меню, имеют формат Blu-ray Disc Movie (BDMV) и содержат аудио-, видео- и другие потоки в контейнере BDAV, который основан на формате транспортного потока MPEG 2. Blu-ray Disc использует эти модифицированные транспортные потоки MPEG 2, в отличие от программных потоков DVD, которые не имеют дополнительной транспортной нагрузки. Существует также формат BDAV (Blu-ray Disc Audio/Visual) – ориентированная на потребителя альтернатива формату BDMV, используемому для выпуска фильмов. Формат BDAV применяется на дисках Blu-ray, предназначенных для записи аудио- и видеоматериалов. Blu-ray Disc использует метод записи на основе транспортного потока MPEG 2, что позволяет записывать транспортные потоки цифрового вещания, преобразованного в BDAV, практически без изменений в пакетах.