Flusso di trasporto MPEG - MPEG transport stream
Estensione nome file |
.ts, .tsv, .tsa, .m2t
|
---|---|
Tipo di media Internet |
video/MP2T |
Sviluppato da | MPEG |
Versione iniziale | 1995 |
Tipo di formato | Contenitore multimediale |
contenitore per | Audio, video, dati |
Esteso a | M2TS , TOD |
Standard | ISO/IEC 13818-1, Raccomandazione ITU-T H.222.0 |
Il flusso di trasporto MPEG ( MPEG-TS , MTS ) o semplicemente il flusso di trasporto ( TS ) è un formato contenitore digitale standard per la trasmissione e l'archiviazione di dati audio , video e PSIP ( Program and System Information Protocol ). Viene utilizzato nei sistemi di trasmissione come DVB , ATSC e IPTV .
Il flusso di trasporto specifica un formato contenitore che incapsula i flussi elementari a pacchetto , con funzioni di correzione degli errori e modello di sincronizzazione per mantenere l'integrità della trasmissione quando il canale di comunicazione che trasporta il flusso è degradato .
I flussi di trasporto differiscono dal flusso di programmi MPEG con lo stesso nome in diversi modi importanti: i flussi di programmi sono progettati per supporti ragionevolmente affidabili, come i dischi (come i DVD ), mentre i flussi di trasporto sono progettati per la trasmissione meno affidabile , ovvero la trasmissione terrestre o satellitare . Inoltre, un flusso di trasporto può trasportare più programmi.
Il flusso di trasporto è specificato in MPEG-2 Parte 1, Sistemi , formalmente noto come standard ISO/IEC 13818-1 o ITU-T Rec. H.222.0 .
Panoramica
Un flusso di trasporto incapsula una serie di altri flussi secondari, spesso flussi elementari a pacchetto (PES) che a loro volta avvolgono il flusso di dati principale utilizzando il codec MPEG o un numero qualsiasi di codec non MPEG (come AC3 o DTS audio e MJPEG o JPEG 2000 video), testo e immagini per i sottotitoli, tabelle che identificano i flussi e persino informazioni specifiche dell'emittente come una guida elettronica ai programmi . Molti flussi sono spesso mischiati insieme, ad esempio diversi canali televisivi o più angolazioni di un film.
Ogni flusso è suddiviso in (al massimo) sezioni di 188 byte e interlacciato insieme; a causa delle dimensioni ridotte del pacchetto, i flussi possono essere interlacciati con una minore latenza e una maggiore resilienza agli errori rispetto ai flussi di programma e ad altri contenitori comuni come AVI , MOV / MP4 e MKV , che generalmente avvolgono ogni frame in un pacchetto. Ciò è particolarmente importante per le videoconferenze, in cui frame di grandi dimensioni possono introdurre ritardi audio inaccettabili.
I flussi di trasporto tendono a essere trasmessi come bitrate costante (CBR) e riempiti con byte di riempimento quando non esistono dati sufficienti.
Elementi
Pacchetto
Un pacchetto di rete è l'unità di base dei dati in un flusso di trasporto e un flusso di trasporto è semplicemente una sequenza di pacchetti. Ogni pacchetto inizia con un byte di sincronizzazione e un'intestazione , che possono essere seguiti da intestazioni aggiuntive opzionali; il resto del pacchetto è costituito da payload . Tutti i campi di intestazione vengono letti come big-endian . I pacchetti sono lunghi 188 byte, ma il mezzo di comunicazione può aggiungere ulteriori informazioni. La dimensione del pacchetto di 188 byte è stata originariamente scelta per la compatibilità con i sistemi in modalità di trasferimento asincrono (ATM) .
Nome | Numero di bit | Maschera di bit ( big-endian ) | Descrizione |
---|---|---|---|
Intestazione del flusso di trasporto a 4 byte | |||
Sincronizza byte | 8 | 0xff000000 | Schema di bit di 0x47 (carattere ASCII 'G') |
Indicatore di errore di trasporto (TEI) | 1 | 0x800000 | Impostato quando un demodulatore non può correggere gli errori dai dati FEC; indicando che il pacchetto è corrotto. |
Indicatore di avvio dell'unità di carico utile (PUSI) | 1 | 0x400000 | Impostato quando questo pacchetto contiene il primo byte di una nuova unità di payload. Il primo byte del payload indicherà dove inizia questa nuova unità di payload.
Questo campo consente a un ricevitore che ha iniziato a leggere a metà della trasmissione di sapere quando può iniziare a estrarre i dati. |
Priorità di trasporto | 1 | 0x200000 | Impostato quando il pacchetto corrente ha una priorità maggiore rispetto ad altri pacchetti con lo stesso PID. |
PID | 13 | 0x1fff00 | Identificatore di pacchetto, che descrive i dati del payload. |
Controllo di rimescolamento del trasporto (TSC) | 2 | 0xc0 | '00' = Non criptato.
Solo per DVB-CSA e ATSC DES : |
Controllo del campo di adattamento | 2 | 0x30 | 01 – nessun campo di adattamento, solo carico utile, 10 – solo campo adattamento, nessun carico utile, |
Contatore di continuità | 4 | 0xf | Numero di sequenza di pacchetti di payload (da 0x00 a 0x0F) all'interno di ogni flusso (eccetto PID 8191) Incrementato per PID, solo quando è impostato un flag di payload. |
Campi opzionali | |||
Campo di adattamento | variabile | Presente se il controllo del campo di adattamento è 10 o 11. Vedi sotto per il formato. | |
Dati sul carico utile | variabile | Presente se il controllo del campo di adattamento è 01 o 11. Il carico utile può essere pacchetti PES, informazioni specifiche del programma (sotto) o altri dati. |
Nome | Numero di bit | Maschera di bit | Descrizione |
---|---|---|---|
Lunghezza del campo di adattamento | 8 | Numero di byte nel campo di adattamento immediatamente successivo a questo byte | |
Indicatore di discontinuità | 1 | 0x80 | Impostato se il pacchetto TS corrente è in uno stato di discontinuità rispetto al contatore di continuità o al riferimento di clock del programma |
Indicatore di accesso casuale | 1 | 0x40 | Imposta quando il flusso può essere decodificato senza errori da questo punto |
Indicatore di priorità del flusso elementare | 1 | 0x20 | Imposta quando questo flusso deve essere considerato "alta priorità" |
Bandiera PCR | 1 | 0x10 | Impostato quando è presente il campo PCR |
bandiera OPCR | 1 | 0x08 | Impostato quando è presente il campo OPCR |
Bandiera del punto di giunzione | 1 | 0x04 | Imposta quando è presente il campo del conto alla rovescia della giunzione |
Contrassegno dati privati di trasporto | 1 | 0x02 | Impostato quando sono presenti i dati privati di trasporto |
Flag di estensione del campo di adattamento | 1 | 0x01 | Impostato quando sono presenti i dati dell'estensione di adattamento |
Campi opzionali | |||
PCR | 48 | Riferimento di clock del programma, memorizzato come base a 33 bit, 6 bit riservati, estensione a 9 bit. Il valore è calcolato come base * 300 + estensione. |
|
OPCR | 48 | Riferimento dell'orologio del programma originale. Aiuta quando un TS viene copiato in un altro | |
Conto alla rovescia della giunzione | 8 | Indica quanti pacchetti TS da questo si verifica un punto di giunzione ( Complemento a due firmato; può essere negativo) | |
Lunghezza dati privati di trasporto | 8 | La lunghezza del seguente campo | |
Trasporto dati privati | variabile | Dati privati | |
Estensione di adattamento | variabile | Vedi sotto | |
Byte di riempimento | variabile | Sempre 0xFF |
Nome | Numero di bit | Maschera di bit | Descrizione |
---|---|---|---|
Lunghezza dell'estensione di adattamento | 8 | 0xff00 | La lunghezza dell'intestazione |
Flag della finestra temporale legale (LTW) | 1 | 0x0080 | |
Bandiera tariffa a tratti | 1 | 0x0040 | |
Bandiera di giunzione senza soluzione di continuità | 1 | 0x0020 | |
Riservato | 5 | 0x001f | |
Campi opzionali | |||
Flag LTW impostato (2 byte) | |||
Bandiera valida LTW | 1 | 0x8000 | |
Offset LTW | 15 | 0x7fff | Informazioni aggiuntive per i ritrasmettitori per determinare lo stato dei buffer quando i pacchetti potrebbero mancare. |
Set di flag a tratti (3 byte) | |||
Riservato | 2 | 0xc00000 | |
Tariffa a tratti | 22 | 0x3fffff | La velocità del flusso, misurata in pacchetti da 188 byte, per definire l'ora di fine del LTW. |
Set di flag di giunzione senza soluzione di continuità (5 byte) | |||
Tipo di giunzione | 4 | 0xf00000000 | Indica i parametri della giunzione H.262. |
DTS prossima unità di accesso | 36 | 0x0efffefffe | Il PES DTS del punto di giunzione. Suddivisi in più campi, 1 bit marker (0x1), 15 bit, 1 bit marker, 15 bit e 1 bit marker, per un totale di 33 bit di dati. |
Nome | Numero di bit | Maschera di bit | Descrizione |
---|---|---|---|
Puntatore carico utile (opzionale) | 8 | 0xff | Presente solo se il flag PUSI (Payload Unit Start Indicator) è impostato.
Fornisce l'indice dopo questo byte da cui inizia la nuova unità di payload. Qualsiasi byte di payload prima dell'indice fa parte dell'unità di payload precedente. |
Carico utile effettivo | variabile | Il contenuto del carico utile. |
Identificatore del pacchetto (PID)
Ogni tabella o flusso elementare in un flusso di trasporto è identificato da un identificatore di pacchetto (PID) a 13 bit. Un demultiplexer estrae i flussi elementari dal flusso di trasporto in parte cercando i pacchetti identificati dallo stesso PID. Nella maggior parte delle applicazioni, il multiplexing a divisione di tempo verrà utilizzato per decidere la frequenza con cui un particolare PID appare nel flusso di trasporto.
Decimale | Esadecimale | Descrizione |
---|---|---|
0 | 0x0000 | La tabella di associazione del programma (PAT) contiene un elenco di directory di tutte le tabelle di mappa del programma |
1 | 0x0001 | La tabella di accesso condizionato (CAT) contiene un elenco di directory di tutti i ITU-T Rec. Flussi di messaggi di gestione delle autorizzazioni H.222 utilizzati dalle tabelle di mappa del programma |
2 | 0x0002 | La tabella di descrizione del flusso di trasporto (TSDT) contiene descrittori relativi al flusso di trasporto complessivo |
3 | 0x0003 | La tabella delle informazioni di controllo IPMP contiene un elenco di directory di tutti i flussi di controllo ISO/IEC 14496-13 utilizzati dalle tabelle delle mappe dei programmi |
4–15 | 0x0004-0x000F | Riservato per uso futuro |
16–31 | 0x0010-0x001F | Utilizzato dai metadati DVB
|
32-8186 | 0x0020-0x1FFA | Può essere assegnato secondo necessità per programmare tabelle di mappa, flussi elementari e altre tabelle di dati |
8187 | 0x1FFB | Utilizzato da DigiCipher 2 / ATSC MGT metadati |
8188-8190 | 0x1FFC-0x1FFE | Può essere assegnato secondo necessità per programmare tabelle di mappa, flussi elementari e altre tabelle di dati |
8191 | 0x1FFF | Pacchetto nullo (utilizzato per il riempimento della larghezza di banda fissa) |
Programmi
Il flusso di trasporto ha un concetto di programmi . Ogni programma è descritto da una tabella di mappatura dei programmi (PMT). I flussi elementari associati a quel programma hanno i PID elencati nel PMT. Un altro PID è associato al PMT stesso. Ad esempio, un flusso di trasporto utilizzato nella televisione digitale potrebbe contenere tre programmi, per rappresentare tre canali televisivi. Supponiamo che ogni canale sia costituito da un flusso video, uno o due flussi audio e tutti i metadati necessari. Un ricevitore che desideri decodificare uno dei tre canali deve semplicemente decodificare i payload di ciascun PID associato al suo programma. Può scartare il contenuto di tutti gli altri PID. Un flusso di trasporto con più di un programma viene indicato come flusso di trasporto multiprogramma (MPTS). Un flusso di trasporto a programma singolo viene definito flusso di trasporto a programma singolo (SPTS).
Informazioni specifiche sul programma
Ci sono 4 tabelle di informazioni specifiche del programma (PSI): associazione del programma (PAT), mappa del programma (PMT), accesso condizionato (CAT) e informazioni di rete (NIT). La specifica MPEG-2 non specifica il formato di CAT e NIT.
PCR
Per consentire a un decodificatore di presentare contenuto sincronizzato, come tracce audio corrispondenti al video associato, almeno una volta ogni 100 ms, viene trasmesso un riferimento di clock di programma (PCR) nel campo di adattamento di un pacchetto di flusso di trasporto MPEG-2. Il PID con la PCR per un programma MPEG-2 è identificato dal valore pcr_pid nel PMT associato. Il valore della PCR, se usato correttamente, viene impiegato per generare un system_timing_clock nel decoder. Il decodificatore dell'orologio di sistema (STC), se implementato correttamente, fornisce una base dei tempi estremamente accurata che viene utilizzata per sincronizzare i flussi elementari audio e video. Il timing in MPEG-2 fa riferimento a questo clock. Ad esempio, il timestamp di presentazione (PTS) deve essere relativo alla PCR. I primi 33 bit sono basati su un clock a 90 kHz. Gli ultimi 9 bit sono basati su un clock a 27 MHz. Il jitter massimo consentito per la PCR è di +/- 500 ns .
Pacchetti nulli
Alcuni schemi di trasmissione, come quelli in ATSC e DVB , impongono rigorosi requisiti di bitrate costanti sul flusso di trasporto. Per garantire che il flusso mantenga un bitrate costante, un multiplexer potrebbe dover inserire alcuni pacchetti aggiuntivi. Il PID 0x1FFF è riservato a questo scopo. Il carico utile dei pacchetti nulli è tutto zero e ci si aspetta che il destinatario ne ignori il contenuto.
Utilizzo nelle videocamere digitali
Transport Stream è stato originariamente progettato per la trasmissione. Successivamente è stato adattato per l'uso con videocamere digitali, registratori e lettori aggiungendo un campo timecode (TC) a 4 byte ai pacchetti standard da 188 byte, risultando in un pacchetto da 192 byte. Questo è ciò che viene chiamato informalmente flusso M2TS . La Blu-ray Disc Association lo chiama " streaming di trasporto BDAV MPEG-2 ". JVC lo ha chiamato TOD quando utilizzato in videocamere basate su HDD come GZ-HD7 . Il timecode consente l'accesso rapido a qualsiasi parte del flusso da un lettore multimediale o da un sistema di editing video non lineare. Viene anche utilizzato per sincronizzare i flussi video da più telecamere in una configurazione a più telecamere .
Utilizzare in Blu-ray
I titoli video Blu-ray Disc creati con supporto menu sono nel formato Blu-ray Disc Movie (BDMV) e contengono audio, video e altri flussi in un contenitore BDAV, che si basa sul formato di flusso di trasporto MPEG-2. I video Blu-ray Disc utilizzano questi flussi di trasporto MPEG-2 modificati, rispetto ai flussi di programma del DVD che non hanno l'overhead di trasporto aggiuntivo.
Esiste anche il formato BDAV (Blu-ray Disc Audio/Visual), l'alternativa orientata al consumatore al formato BDMV utilizzato per le uscite di film. Il formato BDAV viene utilizzato su dischi Blu-ray registrabili per la registrazione audio/video. Blu-ray Disc utilizza il metodo di registrazione del flusso di trasporto MPEG-2. Ciò consente di registrare i flussi di trasporto di una trasmissione digitale convertita in BDAV così come sono con un'alterazione minima dei pacchetti. Consente inoltre una semplice modifica dello stile di taglio del flusso di una trasmissione digitale convertita BDAV che viene registrata così com'è e in cui i dati possono essere modificati semplicemente scartando i pacchetti indesiderati dal flusso. Sebbene sia abbastanza naturale, è integrata una funzione per il recupero ad alta velocità e facile da usare.
Guarda anche
- Trasporto multimediale MPEG (MMT)
- Protocollo di trasporto in tempo reale (RTP)
- Incapsulamento leggero unidirezionale (ULE)
Appunti
Riferimenti
link esterno
- ITU-T H.222.0 | Documenti delle specifiche di sistema ISO/IEC 13818-1
- Ultima copia gratuita delle specifiche, ottobre 2014
- Domande frequenti sui sistemi MPEG-4
- TSDuck – Strumento open source gratuito per manipolare i flussi di trasporto MPEG.