Compartilhar via


Visão geral dos sistemas MPEG-2

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Esta seção fornece uma visão geral e não técnica da camada sistemas MPEG-2. MpEG-2 Systems é o padrão que define como os fluxos de áudio e vídeo são multiplexados no MPEG-2.

Fluxos elementares

O multiplexação MPEG-2 começa com um ou mais fluxos de bytes, chamados de fluxos elementares (ES), que contêm vídeo, áudio ou outros dados. Por exemplo, um vídeo ES contém quadros de vídeo compactados, mais cabeçalhos de sequência, cabeçalhos GOP (grupo de imagens) e qualquer outra coisa necessária para o decodificador para decodificar o fluxo. A camada Sistemas não define o conteúdo do fluxo de bytes do ES.

Um fluxo elementar é dividido em pacotes, formando um PES ( fluxo elementar empacotado ). Os pacotes PES têm comprimento variável. O conteúdo do pacote é chamado de conteúdo. Cada pacote PES também inclui um cabeçalho. O multiplexador atribui uma ID de fluxo de 1 byte a cada PES; Os pacotes PES individuais são identificados pela ID de fluxo no cabeçalho do pacote. Para fluxos de áudio, a ID de fluxo tem o formulário 110xxxxx. Para vídeo, a ID de fluxo tem o formato 1110aaaa.

O padrão MPEG-2 define duas maneiras de entregar fluxos elementares pacotes: fluxos de programas e fluxos de transporte.

Fluxos de programas

Os fluxos de programas são projetados para ambientes relativamente livres de erros, como o armazenamento de arquivos local. Em um fluxo de programa, os pacotes PES são multiplexados e organizados em unidades chamadas de pacotes. Todos os fluxos PES em um fluxo de programa são sincronizados com o mesmo relógio.

Fluxos de transporte

Os TS (fluxos de transporte) são projetados para ambientes não confiáveis ou propensos a erros, como transmissões de rede. Além disso, eles podem conter vários programas sincronizados com relógios diferentes. Um fluxo de transporte adiciona uma segunda camada de pacotes — os fluxos PES são empacotados dentro de pacotes de fluxo de transporte, que têm um tamanho fixo de 188 bytes por pacote. Os pacotes TS também podem conter fluxos de informações do programa, que são descritos na seção a seguir.

Cada pacote TS tem um cabeçalho de 4 bytes, além de um campo de adaptação opcional que contém informações de cabeçalho adicionais. O multiplexador atribui uma PID (ID do programa) a cada fluxo PES ou fluxo de informações do programa. Os PIDs são usados para identificar os pacotes TS, semelhante à maneira como as IDs de fluxo identificam pacotes PES. (Se um fluxo de transporte contiver vários programas, as IDs de fluxo poderão não ser exclusivas, mas as atribuições de PID serão exclusivas no fluxo de transporte.)

Informações específicas do programa

Como um fluxo de transporte pode transportar vários programas, deve haver uma maneira de associar os vários pacotes PES aos programas aos quais eles pertencem. Isso é feito usando tabelas que identificam os fluxos do programa. Coletivamente, esses dados são chamados de PSI (Informações Específicas do Programa). Os dados da PSI são carregados em pacotes TS, assim como os dados pes. Há vários tipos de dados psi, incluindo:

  • PAT (Tabela de Associação de Programas). O PAT é sempre atribuído ao PID 0x000. Cada entrada no PAT é um PID que identifica os pacotes PMT para esse programa (consulte o próximo item).

  • PMT (Tabela de Mapa do Programa). Cada PMT define um programa. O PMT contém uma lista de fluxos; cada entrada de tabela fornece o PID para esse fluxo, além de um código que identifica o tipo de fluxo. ISO/IEC 13818-1 define alguns tipos de fluxo padrão; uma lista abreviada é mostrada na tabela a seguir.

    stream_type Descrição
    0x01 Vídeo MPEG-1
    0x02 Vídeo MPEG-2
    0x03 Áudio MPEG-1
    0x04 Áudio MPEG-2
    0x80 - 0xFF Usuário privado

     

    Outros padrões baseados no MPEG-2, como o ATSC, podem definir tipos de fluxo adicionais no intervalo "privado do usuário". Por exemplo, o ATSC define 0x81 como áudio Dolby AC-3.

  • CAT (Tabelas de Acesso Condicional)

  • NIT (Tabelas de Identificação de Rede)

Suporte a MPEG-2 no DirectShow