Транспортный поток (TS, TP, MPEG-TS, или M2TS) является протоколом для передачи аудио- и видеоданных, описанным в MPEG2, часть 1. Цель разработки этого стандарта — мультиплексирование аудио- и видеоданных и синхронизация их выхода. Транспортный поток открывает возможности для исправления ошибок транспортных средств, таких как DVB и ATSC.
TS — формат медиаконтейнера, который инкапсулирует пакеты элементарных потоков и других данных.
Структура потока В транспортном потоке можно выделить несколько уровней абстракции, иерархическая структура которых напоминает сетевую модель OSI. Например поток, содержащий видео, можно представить следующим образом: Смесь различных программ. Пакетизированный элементарный поток (Packetized elementary stream, PES) Элементарный поток (Elementary stream, ES) Группа изображений (Group of pictures, GOP) — предоставляет произвольный доступ к картинке Отдельное изображение (кадр) Срез (Slice) — часть кадра, выделенная для предотвращения распространения ошибок квантования Макроблок — в составе — от 6 до 12 DCT-блоков. Элементарный блок кодирования (DCT-блок) размером 8x8 точек
Важные элементы транспортного потока Пакет
Пакет, базовая единица транспортного потока.
Заголовок пакета:
заголовок начинается с «Sync byte» — байта синхронизации с константным значением 4716 (0100 01112). По периодическому повторению этого значения в принимаемых данных каждые 188 байт приемник определяет наличие TS-потока и находит начало пакета. Следующие три битовых флага используются, чтобы указать, как должна быть обработана полезная нагрузка. TEI указывает на транспортную ошибку (Transport Error Indicator). Показывает что пакет поврежден, и его восстановление демодулятором было неудачным. PUSI указывает начало полезной нагрузки (Payload Unit Start Indicator). Данный бит показывает что полезная нагрузка пакета содержит начало нового блока данных в потоке (PSI, PES и т. п.). TP приритетный пакет (Transport Priority), показывает что пакет имеет более высокий приоритет, чем пакеты c тем же PID. PID — идентификатор пакета (Packet IDentifier; 13 бит). Мультиплексор режет медиапотоки и служебные данные на кусочки, упаковывая их в TS-пакеты, назначая каждому потоку уникальный PID и перемешивает их между собой, чтобы данные приходили получателю равномерно. Некоторые значения PID зарезервированы для служебных данных и будущего использования. Значение 1FFF16 — Null Packet, показывает что данный пакет должен игнорироваться (такие пакеты используются для выравнивания и удаления данных из потока). TSC — два бита условного доступа (CAS; Transport Scrambling Control), биты показывают как скремблирована (зашифрована) полезная нагрузка пакета: 002 — данные не зашифрованы 012 — (значение зарезервировано для будущего использования) 102 — данные зашифрованы четным ключом 112 — данные зашифрованы нечетным ключом AFC поле из двух битов AF и PL, показывающее наличие поля адаптации (adaptation field), и полезной нагрузки (payload data), значения: 002 — (зарезервированное значение для будущего использования ISO/IEC) 012 — только полезная нагрузка 102 — только поле адаптации, без полезной нагрузки 112 — поле адаптации, за которым следует полезная нагрузка СС счётчик непрерывности (Continuity Counter; 4 бита) — счетчик уникальный для каждого PID, увеличивающийся с каждым пакетом, содержащим полезную нагрузку (то есть с установленным битом PL). По полю СС контролируется непрерывность потока данных.
Остальная часть пакета состоит из опциональных данных — опционального Аdaptation Field (заданной длины), а также полезной нагрузки (payload) или выравнивания (padding) до конца пакета.
TS-пакеты составляют 188 байт в длине, но среда коммуникации может добавить некоторые байты для устранения ошибок пакета. DVB-ASI использует 204 байта и 208 байтов ATSC как транспортный пакет потока. (DVB t=8 и ATSC t=10 то есть дополнительные байты = 2*t). Передача ATSC добавляет 20 байтов кода Рида — Соломона для коррекции ошибок, чтобы создать пакет, который является 208 байтов длиной.
188-байтовый размер пакета был первоначально выбран передачи по сетям ATM (в четырех пакетах ("ячейках") с полезным объемом 47 байт; 4 × 47 = 188).
Поле адаптации (Adaptation Field)
Заголовок AF:
AF length — байт, длина AF до данных пакета DI (Discontinuity indicator) — устанавливается в 1 если на этом пакете нарушилась непрерывность потока по СС или PCR. RAI (Random Access Indicatior) — устанавливается в пакете, с которого возможно начать декодирование без ошибок Elementary stream priority indicator — устанавливается, для элементарного потока, который должен обрабатываться как «высокоприоритетный» PCR present — устанавливается, если AF содержит поле PCR (Program clock reference, 48 бит) OPCR present — устанавливается, если AF содержит поле OPCR (Original Program clock reference, 48 бит), используется при копировании TS Splicing point flag — устанавливается, если AF содержит поле Splice countdown (8 бит) Transport private data flag — устанавливается, если AF содержит private data (поле длины 8 бит + данные) Adaptation field extension flag — устанавливается, если в пакете присутствует расширение AF (заголовок + данные)
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-файлы Мультиплатформенные FFmpeg MPlayer VideoLAN Медиапроигрыватель VLC ProjectX PS3Muxer
Linux Медиапроигрыватель VLC xine MythTV SMPlayer
Windows Combined Community Codec Pack K-Lite Codec Pack GOM Player Haenlein-Software DVR Studio The KMPlayer Squared 5 MPEG Streamclip VideoReDo VobEdit BSPlayer jetAudio Медиапроигрыватель VLC Light alloy
Mac OS X Squared 5 MPEG Streamclip Movist Медиапроигрыватель VLC
Примечания
Ссылки MPEG-2 Systems FAQ MPEG-4 Systems FAQ MPEG-1 description Powerpoint MPEG-2 Transport Stream introduction Splicing FAQ Freeware TS-Muxer MPEG-2 Transport Stream MPEG-2 Transmission
Категория:MPEG