MPEG-TS

Материал из Википедии — свободной энциклопедии
(перенаправлено с «.m2ts»)
Перейти к навигации Перейти к поиску
Несколько MPEG программ объединяются, а затем отправляются на передающую антенну. В трансляциях цифрового ТВ США ATSC-приёмник декодирует TS и отображает его.

Транспортный поток (TS, TP, MPEG-TS, или M2TS) является протоколом для передачи аудио- и видеоданных, описанным в MPEG2, часть 1[1]. Цель разработки этого стандарта — мультиплексирование аудио- и видеоданных и синхронизация их выхода. Транспортный поток открывает возможности для исправления ошибок транспортных средств, таких как DVB и ATSC.

TS — формат медиаконтейнера, который инкапсулирует пакеты элементарных потоков и других данных.

Структура потока[править | править код]

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

Важные элементы транспортного потока[править | править код]

Пакет[править | править код]

Пакет, базовая единица транспортного потока.

  • заголовок начинается с предопределённого байта синхронизации (8 бит) 0x47 (0100 0111).
  • Следующие три битовых флага используются, чтобы указать, как должна быть обработана полезная нагрузка.
    • 1. Первый флажок указывает на транспортную ошибку.
    • 2. Второй флажок указывает начало полезной нагрузки (payload_unit_start_indicator). Когда полезная нагрузка Transport Stream пакета содержит данные по PSI, payload_unit_start_indicator имеет значение 1. Если Transport Stream пакет не содержит данные по PSI, то значение payload_unit_start_indicator будет 0. Ссылка на разделы 2.4.4.1 и 2.4.4.2 . Это также применяется к приватным потокам с stream_type 5 (ссылка на Таблица 2-29).
    • 3. Третий флажок указывает транспортный приоритетный бит.
  • флажки сопровождаются идентификатором пакета (13 бит) - PID. Используется, чтобы однозначно определить поток, которому принадлежит пакет (например, пакеты PES, соответствующие ES), сгенерированный мультиплексором. PID позволяет получателю дифференцировать поток, которому принадлежит каждый полученный пакет. Некоторые значения PID предопределены и используются, чтобы указать различные потоки информации контроля. От пакета с неизвестным PID, который не требуется получателю, просто отказываются. Специфическое значение PID 0x1FFF зарезервировано, чтобы указать, что пакет — нулевой пакет (и должен быть проигнорирован получателем).
  • два следующих служебных бита используются процедурами условного доступа к зашифрованной полезной нагрузке некоторых пакетов TS:
    • 1. 00 — Не зашифрованный пакет.
    • 2. 01 — ЗАРЕЗЕРВИРОВАННЫЙ для будущего использования.
    • 3. 10 — Пакет зашифрован четным ключом.
    • 4. 11 — Пакет зашифрован нечетным ключом.
  • Два служебных бита поля адаптации, которые могут иметь четыре значения:
    • 1. 01 — без поля адаптации (adaptation_field), только полезная нагрузка (payload_data)
    • 2. 10 — только поля адаптации (adaptation_field), без полезной нагрузки (payload_data)
    • 3. 11 — поля адаптации (adaptation_field) и далее следует полезная нагрузка (payload_data)
    • 4. 00 — ЗАРЕЗЕРВИРОВАННЫЙ ISO/IEC для будущего использования
  • Наконец есть Счётчик Непрерывности (4 бита)

Остальная часть пакета состоит из полезной информации. Пакеты составляют 188 байт в длине, но среда коммуникации может добавить некоторые байты для устранения ошибок пакета. DVB-ASI использует 204 байта и 208 байтов ATSC как транспортный пакет потока. (DVB t=8 и ATSC t=10 то есть дополнительные байты = 2*t). Передача ATSC добавляет 20 байтов Reed-Solomon передовое устранение ошибок, чтобы создать пакет, который является 208 байтов длиной. 188-байтовый размер пакета был первоначально выбран для совместимости с системами ATM.

PID[править | править код]

Каждая таблица или элементарный поток в транспортном потоке идентифицируется по 13-битовому PID. Демультиплексор извлекает элементарные потоки из общего транспортного потока, объединяя их в потоки с одинаковыми PID. В большинстве приложений планируется использовать временно́е мультиплексирование, чтобы решать, как часто конкретный PID будет появляться в транспортном потоке.

Программы[править | править код]

Транспортный поток использует понятие "программа". Каждая программа описана в Program Map Table (PMT), которая имеет уникальный PID, и элементарные потоки, связанные с этой программой и имеющие свои PID-ы, которые перечислены в PMT. Например, транспортный поток, используемый в цифровом телевидении, может состоять из трёх программ и нести в себе три телевизионных канала. Предположим, каждый канал состоит из одного видеопотока и одного или двух аудиопотоков, и любые необходимые метаданные. Приёмник, желающий декодировать один из каналов, использует для декодирования лишь каналы, имеющие PID-ы, которые связаны с интересующей его программой.

Program Specific Information (PSI)[править | править код]

Специальная информация о программах

  • Program Association Table (PAT),
  • Program Map Table (PMT),
  • Conditional Access Table (CAT),
  • Network Information Table (NIT).

В спецификации MPEG-2 формат CAT и NIT не регламентирован.

PAT[править | править код]

Таблица программ (Program Association Table, PAT) содержит PID-ы всех PMT. Её собственный PID - всегда 0x0.

PMT[править | править код]

Таблица структуры программ (Program Map Table, PMT) содержит PIDы и основные характеристики элементарных потоков конкретной программы — видео, звука, дополнительных данных. Для каждой программы есть свой PMT с собственным PID. Кроме того, PMT содержит сообщения ECM системы условного доступа, если в программе присутствуют зашифрованные элементарные потоки.

PCR[править | править код]

Чтобы декодер мог воспроизводить программы в правильное время, на правильной скорости и с синхронизацией, обычно программы периодически передают Program Clock Reference, или PCR, в одном из потоков программы. Это также называется 'основной источник опорной частоты' (Master Clock). Временные интервалы в MPEG2 рассчитываются по этой частоте. Для примера, временная метка, представления (PTS), соответствует PCR. Первые 33 бита соответствуют опорной частоте в 90 кГц. Расширение последовательности на 9 бит соответствует частоте в 27 МГц.

Null-пакеты (Null packets)[править | править код]

Некоторые протоколы передачи, такие как в стандартах ATSC и DVB, жестко ограничены требованиями к битрейту транспортного потока. Таким образом, чтобы поток данных поддерживал постоянную жестко заданную скорость передачи, Multiplexer должен иметь возможность добавлять в поток дополнительные пакеты. Пакеты с PID 0x1FFF как раз служат для этих целей. Поле полезной нагрузки этих пакетов не содержит какой-либо полезной информации, таким образом ресивер, получая такой пакет, игнорирует его содержимое.

Модификация в транспортном потоке, спецификация случайного доступа к медиа (M2TS)[править | править код]

Timecode[править | править код]

Транспортный поток был создан для кассет и вещания, поэтому потребовались изменения для использования в медиаустройствах со случайным доступом, таких как новое поколение цифровых камер, записывающих на DVD, Blu-ray, жесткие диски или SSD, карты памяти.

Система случайного доступа может хранить пакетные данные в буфере, если устройство хранения не готово (например, пока устройство запускается).

Пакеты записываются не по порядку. Специальный трек хранит их 4-байтный код времени (timecode — TC), добавленный в стандартные 188-байтные пакеты. В результате получается 192-байтный пакет. Все это неофициально называется M2TS-потоком. Blu-ray Disc Association назвала это «BDAV MPEG-2 transport stream». JVC назвала это TOD (возможно, как аббревиатура от «Transport stream on disc») когда использовала его в видекамерах с HDD, таких как GZ-HD7. Транспортный поток M2TS также используется для AVCHD видеофайлов, которые часто имеют расширение MTS.

Программы, поддерживающие M2TS-файлы[править | править код]

Мультиплатформенные[править | править код]

Linux[править | править код]

Windows[править | править код]

Mac OS X[править | править код]

Примечания[править | править код]

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