Fluxo de transporte MPEG - MPEG transport stream

Fluxo de transporte MPEG
Extensão de nome de arquivo
.ts, .tsv, .tsa, .m2t
Tipo de mídia da Internet
vídeo / MP2T
Desenvolvido por MPEG
lançamento inicial 1995 ( 1995 )
Tipo de formato Recipiente de mídia
Recipiente para Áudio, vídeo, dados
Alargado a M2TS , TOD
Padrão ISO / IEC 13818-1, Recomendação ITU-T H.222.0

Fluxo MPEG transporte ( MPEG-TS , MTS ) ou simplesmente fluxo de transporte ( TS ) é um padrão de arquivo recipiente para transmissão e armazenamento de áudio , vídeo e Programa Protocolo de Informação e Sistema de dados (PSIP). É usado em sistemas de transmissão como DVB , ATSC e IPTV .

O fluxo de transporte especifica um formato de contêiner que encapsula fluxos elementares em pacotes , com correção de erros e recursos de padrão de sincronização para manter a integridade da transmissão quando o canal de comunicação que transporta o fluxo está degradado .

Os fluxos de transporte diferem do fluxo de programa MPEG de nome semelhante em várias maneiras importantes: os fluxos de programa são projetados para mídia razoavelmente confiável, como discos (como DVDs ), enquanto os fluxos de transporte são projetados para transmissão menos confiável , ou seja, transmissão terrestre ou via satélite . Além disso, um fluxo de transporte pode transportar vários programas.

O fluxo de transporte é especificado no MPEG-2 Parte 1, Sistemas , formalmente conhecido como padrão ISO / IEC 13818-1 ou Rec. ITU-T. H.222.0 .

Visão geral

Vários programas MPEG são combinados e enviados para uma antena transmissora. O receptor analisa e decodifica um dos fluxos.

Um stream de transporte encapsula uma série de outros substreams, geralmente streams elementares em pacotes (PESs) que, por sua vez, envolvem o stream de dados principal usando o codec MPEG ou qualquer número de codecs não MPEG (como áudio AC3 ou DTS e MJPEG ou JPEG 2000 vídeo), texto e imagens para legendas, tabelas de identificação dos streams e até informações específicas da emissora, como um guia eletrônico de programação . Muitas transmissões são frequentemente misturadas, como vários canais de televisão diferentes ou vários ângulos de um filme.

Cada fluxo é dividido em (no máximo) seções de 188 bytes e intercalados juntos; devido ao pequeno tamanho do pacote, os fluxos podem ser intercalados com menos latência e maior resiliência a erros em comparação com fluxos de programa e outros contêineres comuns, como AVI , MOV / MP4 e MKV , que geralmente envolvem cada quadro em um pacote. Isso é particularmente importante para videoconferência, onde quadros grandes podem apresentar atrasos de áudio inaceitáveis.

Os fluxos de transporte tendem a ser transmitidos como taxa de bits constante (CBR) e preenchidos com bytes de preenchimento quando não existem dados suficientes.

Elementos

Pacote

Um pacote de rede é a unidade básica de dados em um fluxo de transporte, e um fluxo de transporte é meramente uma sequência de pacotes. Cada pacote começa com um byte de sincronização e um cabeçalho , que pode ser seguido por cabeçalhos adicionais opcionais; o resto do pacote consiste em carga útil . Todos os campos de cabeçalho são lidos como big-endian . Os pacotes têm 188 bytes de comprimento, mas o meio de comunicação pode adicionar informações adicionais. O tamanho do pacote de 188 bytes foi originalmente escolhido para compatibilidade com sistemas ATM (Asynchronous Transfer Mode) .

Formato de pacote de fluxo de transporte parcial
Nome Número de bits Bitmask ( big-endian ) Descrição
Cabeçalho de fluxo de transporte de 4 bytes
Byte de sincronização 8 0xff000000 Padrão de bits de 0x47 (ASCII char 'G')
Indicador de erro de transporte (TEI) 1 0x800000 Definido quando um demodulador não pode corrigir erros de dados FEC; indicando que o pacote está corrompido.
Indicador de início da unidade de carga útil (PUSI) 1 0x400000 Definido quando este pacote contém o primeiro byte de uma nova unidade de carga útil. O primeiro byte da carga útil indicará onde esta nova unidade de carga útil começa.

Este campo permite que um receptor que começou a ler no meio da transmissão saiba quando pode começar a extrair dados.

Prioridade de transporte 1 0x200000 Definido quando o pacote atual tem uma prioridade mais alta do que outros pacotes com o mesmo PID.
PID 13 0x1fff00 Identificador de pacote, que descreve os dados de carga útil.
Controle de embaralhamento de transporte (TSC) 2 0xc0 '00' = Não embaralhado.

Apenas para DVB-CSA e ATSC DES :
'01' (0x40) = Reservado para uso futuro
'10' (0x80) = Codificado com chave par
'11' (0xC0) = Codificado com chave ímpar

Controle de campo de adaptação 2 0x30 01 - sem campo de adaptação, somente carga útil,

10 - campo de adaptação apenas, sem carga útil,
11 - campo de adaptação seguido de carga útil,
00 - RESERVADO para uso futuro

Contador de continuidade 4 0xf Número de sequência de pacotes de carga útil (0x00 a 0x0F) dentro de cada fluxo (exceto PID 8191)
Incrementado por PID, somente quando um sinalizador de carga útil é definido.
Campos opcionais
Campo de adaptação variável Presente se o controle de campo de adaptação for 10 ou 11. Veja abaixo o formato.
Dados de carga útil variável Presente se o controle do campo de adaptação for 01 ou 11. A carga útil pode ser pacotes PES, informações específicas do programa (abaixo) ou outros dados.
Formato de campo de adaptação
Nome Número de bits Bitmask Descrição
Comprimento do campo de adaptação 8 Número de bytes no campo de adaptação imediatamente após este byte
Indicador de descontinuidade 1 0x80 Definido se o pacote TS atual está em um estado de descontinuidade em relação ao contador de continuidade ou à referência de relógio do programa
Indicador de acesso aleatório 1 0x40 Definido quando o fluxo pode ser decodificado sem erros a partir deste ponto
Indicador de prioridade de fluxo elementar 1 0x20 Defina quando este stream deve ser considerado de "alta prioridade"
Bandeira PCR 1 0x10 Definido quando o campo PCR está presente
Bandeira OPCR 1 0x08 Definido quando o campo OPCR está presente
Sinalizador de ponto de emenda 1 0x04 Definido quando o campo de contagem regressiva de emenda está presente
Sinalizador de transporte de dados privados 1 0x02 Definido quando os dados privados de transporte estão presentes
Sinalizador de extensão de campo de adaptação 1 0x01 Definido quando os dados de extensão de adaptação estão presentes
Campos opcionais
PCR 48 Referência do relógio do programa, armazenada como base de 33 bits, 6 bits reservados, extensão de 9 bits.
O valor é calculado como base * 300 + extensão.
OPCR 48 Referência do relógio do programa original. Ajuda quando um TS é copiado para outro
Contagem regressiva de emenda 8 Indica quantos pacotes TS deste um ponto de emenda ocorre ( complemento de dois assinado; pode ser negativo)
Comprimento de dados privados de transporte 8 O comprimento do seguinte campo
Transporte de dados privados variável Dados privados
Extensão de adaptação variável Veja abaixo
Bytes de enchimento variável Sempre 0xFF
Formato de extensão de adaptação
Nome Número de bits Bitmask Descrição
Comprimento de extensão de adaptação 8 0xff00 O comprimento do cabeçalho
Sinalizador de janela de tempo legal (LTW) 1 0x0080
Bandeira de taxa por partes 1 0x0040
Bandeira de emenda perfeita 1 0x0020
Reservado 5 0x001f
Campos opcionais
Conjunto de sinalizadores LTW (2 bytes)
Sinalizador válido LTW 1 0x8000
Deslocamento LTW 15 0x7fff Informações extras para retransmissores para determinar o estado dos buffers quando os pacotes podem estar faltando.
Conjunto de sinalizadores por partes (3 bytes)
Reservado 2 0xc00000
Taxa por partes 22 0x3fffff A taxa do fluxo, medida em pacotes de 188 bytes, para definir o tempo de término do LTW.
Conjunto de sinalizadores de emenda contínua (5 bytes)
Tipo de emenda 4 0xf000000000 Indica os parâmetros da emenda H.262.
Próxima unidade de acesso DTS 36 0x0efffefffe O PES DTS do ponto de emenda. Divida em campos múltiplos, 1 bit marcador (0x1), 15 bits, 1 bit marcador, 15 bits e 1 bit marcador, para um total de 33 bits de dados.
Formato de carga útil
Nome Número de bits Bitmask Descrição
Ponteiro de carga útil (opcional) 8 0xff Presente apenas se o sinalizador PUSI (Payload Unit Start Indicator) estiver definido.

Ele fornece o índice após esse byte no qual a nova unidade de carga útil é iniciada. Qualquer byte de carga útil antes do índice faz parte da unidade de carga útil anterior.

Carga útil real variável O conteúdo da carga útil.

Identificador de pacote (PID)

Cada tabela ou fluxo elementar em um fluxo de transporte é identificado por um identificador de pacote de 13 bits (PID). Um demultiplexador extrai fluxos elementares do fluxo de transporte, em parte procurando por pacotes identificados pelo mesmo PID. Na maioria das aplicações, a multiplexação por divisão de tempo será usada para decidir com que freqüência um PID específico aparece no fluxo de transporte.

Identificadores de pacote em uso
Decimal Hexadecimal Descrição
0 0x0000 Tabela de associação de programa (PAT) contém uma lista de diretório de todas as tabelas de mapa de programa
1 0x0001 A tabela de acesso condicional (CAT) contém uma lista de diretórios de todos os Rec. ITU-T. Fluxos de mensagens de gerenciamento de direitos H.222 usados ​​por tabelas de mapa de programa
2 0x0002 A tabela de descrição do fluxo de transporte (TSDT) contém descritores relacionados ao fluxo de transporte geral
3 0x0003 A tabela de informações de controle IPMP contém uma lista de diretórios de todos os fluxos de controle ISO / IEC 14496-13 usados ​​por tabelas de mapa de programa
4-15 0x0004-0x000F Reservado para uso futuro
16-31 0x0010-0x001F Usado por metadados DVB
  • 0x0010: NIT, ST
  • 0x0011: SDT , BAT, ST
  • 0x0012: EIT, ST, CIT
  • 0x0013: RST, ST
  • 0x0014: TDT, TOT, ST
  • 0x0015: sincronização de rede
  • 0x0016: RNT
  • 0x0017-0x001B: reservado para uso futuro
  • 0x001C: sinalização dentro da banda
  • 0x001D: medição
  • 0x001E: DIT
  • 0x001F: SIT
32-8186 0x0020-0x1FFA Pode ser atribuído conforme necessário para programar tabelas de mapas, fluxos elementares e outras tabelas de dados
8187 0x1FFB Usado por metadados DigiCipher 2 / ATSC MGT
8188-8190 0x1FFC-0x1FFE Pode ser atribuído conforme necessário para programar tabelas de mapas, fluxos elementares e outras tabelas de dados
8191 0x1FFF Pacote Nulo (usado para preenchimento de largura de banda fixa)

Programas

Fluxo de transporte tem um conceito de programas . Cada programa é descrito por uma tabela de mapa de programa (PMT). Os fluxos elementares associados a esse programa têm PIDs listados no PMT. Outro PID está associado ao próprio PMT. Por exemplo, um fluxo de transporte usado na televisão digital pode conter três programas, para representar três canais de televisão. Suponha que cada canal consista em um fluxo de vídeo, um ou dois fluxos de áudio e quaisquer metadados necessários. Um receptor que deseja decodificar um dos três canais precisa apenas decodificar as cargas úteis de cada PID associado ao seu programa. Ele pode descartar o conteúdo de todos os outros PIDs. Um fluxo de transporte com mais de um programa é conhecido como fluxo de transporte multiprograma (MPTS). Um único fluxo de transporte de programa é referido como um fluxo de transporte de programa único (SPTS).

Informações específicas do programa

Existem 4 tabelas de informações específicas do programa (PSI): associação do programa (PAT), mapa do programa (PMT), acesso condicional (CAT) e informações da rede (NIT). A especificação MPEG-2 não especifica o formato do CAT e do NIT.

PCR

Para permitir que um decodificador apresente conteúdo sincronizado, como faixas de áudio correspondentes ao vídeo associado, pelo menos uma vez a cada 100 ms, uma referência de relógio de programa (PCR) é transmitida no campo de adaptação de um pacote de fluxo de transporte MPEG-2. O PID com o PCR para um programa MPEG-2 é identificado pelo valor pcr_pid no PMT associado. O valor do PCR, quando usado corretamente, é empregado para gerar um system_timing_clock no decodificador. O decodificador de relógio de tempo do sistema (STC), quando implementado corretamente, fornece uma base de tempo altamente precisa que é usada para sincronizar fluxos elementares de áudio e vídeo. O sincronismo no MPEG-2 faz referência a esse relógio. Por exemplo, o registro de tempo de apresentação (PTS) se destina a ser relativo ao PCR. Os primeiros 33 bits são baseados em um clock de 90 kHz. Os últimos 9 bits são baseados em um clock de 27 MHz. O jitter máximo permitido para o PCR é +/- 500 ns .

Pacotes nulos

Alguns esquemas de transmissão, como aqueles em ATSC e DVB , impõem requisitos estritos de taxa de bits constante no fluxo de transporte. Para garantir que o fluxo mantenha uma taxa de bits constante, um multiplexador pode precisar inserir alguns pacotes adicionais. O PID 0x1FFF é reservado para este propósito. A carga útil de pacotes nulos é composta de zeros e espera-se que o receptor ignore seu conteúdo.

Use em câmeras de vídeo digital

O Transport Stream foi originalmente projetado para transmissão. Posteriormente, ele foi adaptado para uso com câmeras de vídeo digital, gravadores e reprodutores, adicionando um campo de código de tempo de 4 bytes (TC) aos pacotes padrão de 188 bytes, resultando em um pacote de 192 bytes. Isso é o que é informalmente chamado de fluxo M2TS . A Blu-ray Disc Association o chama de " fluxo de transporte BDAV MPEG-2 ". A JVC o chamou de TOD quando usado em camcorders baseadas em HDD como a GZ-HD7 . O timecode permite acesso rápido a qualquer parte do stream de um reprodutor de mídia ou de um sistema de edição de vídeo não linear. Ele também é usado para sincronizar fluxos de vídeo de várias câmeras em uma configuração de várias câmeras .

Use em Blu-ray

Os títulos de vídeo de disco Blu-ray criados com suporte de menu estão no formato Blu-ray Disc Movie (BDMV) e contêm áudio, vídeo e outros fluxos em um contêiner BDAV, que é baseado no formato de fluxo de transporte MPEG-2. O vídeo do disco Blu-ray usa esses fluxos de transporte MPEG-2 modificados, em comparação com os fluxos de programa de DVD que não têm a sobrecarga de transporte extra.

Há também o formato BDAV (Blu-ray Disc Audio / Visual), a alternativa voltada para o consumidor ao formato BDMV usado para lançamentos de filmes. O formato BDAV é usado em discos Blu-ray graváveis para gravação de áudio / vídeo. O disco Blu-ray utiliza o método de gravação de fluxo de transporte MPEG-2. Isso permite que os fluxos de transporte de uma transmissão digital convertida em BDAV sejam gravados como estão, com o mínimo de alteração dos pacotes. Ele também permite a edição simples do estilo de corte de fluxo de uma transmissão digital convertida em BDAV que é gravada como está e onde os dados podem ser editados apenas descartando pacotes indesejados do fluxo. Embora seja bastante natural, uma função para recuperação em alta velocidade e fácil de usar está embutida.

Veja também

Notas

Referências

links externos