O que é MPEG-TS?

MPEG-TS (fluxo de transporte MPEG-2) é um contêiner organizado em pacotes que multiplexa os fluxos de vídeo, áudio e dados de um ou mais programas junto com as tabelas que os descrevem; os arquivos que o contêm costumam usar a extensão .ts. Ele foi projetado para ambientes propensos a erros, como a radiodifusão.

Como o MPEG-TS funciona

Um fluxo de transporte MPEG divide fluxos elementares e tabelas de sinalização em pacotes de tamanho fixo de 188 bytes, cada um marcado com um identificador de pacote (PID) de 13 bits. Um receptor lê a tabela de associação de programas no PID 0, segue suas referências até a tabela de mapa de programa de cada programa e descobre nela quais PIDs contêm o vídeo, o áudio e os dados do programa. Um contador de continuidade em cada PID, exceto o PID de pacotes nulos, ajuda a detectar pacotes perdidos, e um bit indicador de erro de transporte no cabeçalho de cada pacote, quando ativado, sinaliza pelo menos um erro de bit incorrigível nesse pacote. As referências de relógio do programa são as marcas de tempo das quais se deriva a temporização do decodificador. Um fluxo multiplexado pode conter vários programas com bases de tempo independentes. Como um receptor pode começar a receber um fluxo no meio, as tabelas normalmente são retransmitidas periodicamente; a norma recomenda isso sem fixar uma frequência.

Informações essenciais

  1. Um pacote de fluxo de transporte sempre tem 188 bytes e começa com o byte de sincronização 0x47; 4 desses bytes compõem o cabeçalho, portanto a estruturação em pacotes tem um custo de pelo menos 2,1%, antes dos campos de adaptação, cabeçalhos PES ou preenchimento. Alguns sistemas encapsulam cada pacote em bytes extras: a transmissão DVB por satélite acrescenta 16 bytes de paridade Reed-Solomon ao pacote, totalizando 204, e o demultiplexador do FFmpeg também tenta detectar uma variante de 192 bytes, portanto um analisador que pressupõe um intervalo fixo de 188 bytes perde a sincronização nessas capturas.
  2. A tabela de associação de programas no PID 0x0000 lista cada programa e o PID de sua tabela de mapa de programa, que, por sua vez, lista os PIDs dos fluxos elementares desse programa. O HLS restringe isso: cada segmento de fluxo de transporte precisa conter um único programa e incluir uma PAT e uma PMT, que deveriam ser seus dois primeiros pacotes, a menos que um EXT-X-MAP as forneça. As marcas de tempo e os contadores de continuidade também precisam manter a continuidade de um segmento para o seguinte, a menos que a playlist indique uma descontinuidade. Portanto, uma captura de radiodifusão com vários programas precisa ser reduzida a um programa antes de poder servir como segmentos HLS.
  3. O contador de continuidade é um valor de 4 bits por PID que avança em um, retornando a zero após 15, a cada pacote que contém carga útil. Ele se repete legitimamente em pacotes que contêm apenas um campo de adaptação e em uma única duplicata repetida imediatamente, pode saltar onde o fluxo ativa o indicador de descontinuidade e é indefinido em pacotes nulos. Qualquer outro valor é um erro de continuidade, cujas causas a RFC 6990 lista como um pacote perdido, ordem incorreta dos pacotes ou um pacote que ocorre mais de duas vezes. Quando a causa é a perda, o tamanho do salto informa o número de pacotes ausentes com carga útil apenas em módulo 16, portanto perder exatamente 16, ou qualquer múltiplo de 16, não deixa lacuna.
  4. A remultiplexação pode extrair um único programa de um fluxo com vários programas e inserir ou excluir pacotes nulos para alterar a taxa de bits de transporte, sem recomprimir o áudio ou o vídeo. O remultiplexador pode precisar corrigir os valores das referências de relógio do programa, pois suas posições no fluxo mudam. A extração por si só não deixa um programa pronto para HLS: a RFC 8216 recomenda que cada segmento H.264 contenha um quadro IDR, e a especificação de autoria HLS da Apple aceita apenas vídeo H.264, HEVC, Dolby Vision ou AV1, exige fMP4 em vez de fluxos de transporte para HEVC, exige que cada segmento de vídeo comece com um quadro IDR e exige que todo conteúdo de origem entrelaçado seja desentrelaçado. Um programa de radiodifusão cujo codec não é aceito pelos reprodutores de destino, ou cujos quadros-chave não coincidem com limites de segmento utilizáveis, precisa ser recodificado, assim como o vídeo de radiodifusão entrelaçado que precisa atender à especificação da Apple.

Quando o MPEG-TS é importante

Escolha MPEG-TS para radiodifusão, IPTV, fluxos de contribuição ou distribuição tradicional de segmentos HLS. Sua resiliência e seu suporte à multiplexação acrescentam sobrecarga em comparação com contêineres otimizados para armazenamento confiável de arquivos.

Como a Transloadit ajuda com MPEG-TS

Os Robots da Transloadit baseados em FFmpeg listam MPEG-TS entre os formatos que podem ler e gravar. /video/encode tem uma opção segment que divide sua saída em partes para HTTP Live Streaming, nomeadas por segment_prefix (o prefixo segment_ gera segment_0.ts, segment_1.ts e assim por diante), e /video/adaptive empacota variantes para HLS, MPEG-DASH ou CMAF e grava a playlist ou o manifesto.

Explore os formatos de arquivo e os recursos de compressão da Transloadit

Fontes

Transforme conhecimento sobre mídia em um pipeline funcional

Conecte uploads, processamento, IA, armazenamento e entrega por meio de uma única API declarativa, com o stack de codificação, o ajuste de escala e as constantes mudanças de formatos gerenciados para você.

Experimente a Transloadit gratuitamente