次の方法で共有


MPEG-2 システムの概要

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

このセクションでは、MPEG-2 システム レイヤーの一般的な非技術的な概要について説明します。 MPEG-2 システムは、MPEG-2 でオーディオ ストリームとビデオ ストリームを多重化する方法を定義する標準です。

基本ストリーム

MPEG-2 多重化は、ビデオ、オーディオ、またはその他のデータを含む基本ストリーム (ES) と呼ばれる 1 つ以上のバイト ストリームで始まります。 たとえば、ビデオ ES には、圧縮されたビデオ フレーム、シーケンス ヘッダー、画像グループ (GOP) ヘッダー、およびデコーダーがストリームをデコードするために必要なその他のものが含まれます。 Systems レイヤーでは、ES バイト ストリームの内容は定義されません。

基本ストリームはパケットに分割され、 パケット化された基本ストリーム (PES) が形成されます。 PES パケットの長さは可変です。 パケットの内容は ペイロードと呼ばれます。 各 PES パケットにはヘッダーも含まれます。 マルチプレクサーは、すべての PES に 1 バイトのストリーム ID を割り当てます。個々の PES パケットは、パケット ヘッダーのストリーム ID によって識別されます。 オーディオ ストリームの場合、ストリーム ID の形式は 110xxxxx です。 ビデオの場合、ストリーム ID の形式は 1110yyyy です

MPEG-2 標準では、パケット化された基本ストリーム ( プログラム ストリーム とトランスポート ストリーム) を配信する 2 つの方法が定義 されています

プログラム ストリーム

プログラム ストリームは、ローカル ファイル ストレージなど、比較的エラーのない環境向けに設計されています。 プログラム ストリームでは、PES パケットが多重化され、 パックと呼ばれる単位に編成されます。 プログラム ストリーム内のすべての PES ストリームは、同じクロックに同期されます。

トランスポート ストリーム

トランスポート ストリーム (TS) は、ネットワーク ブロードキャストなどの信頼性の低い環境やエラーが発生しやすい環境向けに設計されています。 また、異なるクロックに同期される複数のプログラムを含めることもできます。 トランスポート ストリームはパケット化の 2 番目の層を追加します。PES ストリームは、パケットあたり 188 バイトの固定サイズのトランスポート ストリーム パケット内にパッケージ化されます。 TS パケットには、次のセクションで説明するプログラム情報ストリームを含めることもできます。

各 TS パケットには、4 バイトのヘッダーと、追加のヘッダー情報を含むオプションの適応フィールドがあります。 マルチプレクサは、各 PES ストリームまたはプログラム情報ストリームにプログラム ID (PID) を割り当てます。 PID は、ストリーム ID が PES パケットを識別する方法と同様に、TS パケットを識別するために使用されます。 (トランスポート ストリームに複数のプログラムが含まれている場合、 ストリーム ID は一意ではない可能性がありますが、PID 割り当てはトランスポート ストリーム内で一意です)。

プログラム固有の情報

トランスポート・ストリームは複数のプログラムを伝送できるため、さまざまな PES パケットをそれらのプログラムに関連付ける方法が必要です。 これは、プログラム ストリームを識別するテーブルを使用して行われます。 このデータは総称して、プログラム固有情報 (PSI) と呼ばれます。 PSI データは、PES データと同様に TS パケットで送信されます。 PSI データには、次のようにさまざまな種類があります。

  • プログラムの関連付けテーブル (PAT)。 PAT は常に PID 0x000に割り当てられます。 PAT の各エントリは、そのプログラムの PMT パケットを識別する PID です (次の項目を参照)。

  • プログラム マップ テーブル (PMT)。 各 PMT は、1 つのプログラムを定義します。 PMT にはストリームの一覧が含まれています。各テーブル エントリは、そのストリームの PID に加えて、ストリームの種類を識別するコードを提供します。 ISO/IEC 13818-1 では、いくつかの標準ストリームの種類が定義されています。省略形の一覧を次の表に示します。

    stream_type 説明
    0x01 MPEG-1 ビデオ
    0x02 MPEG-2 ビデオ
    0x03 MPEG-1 オーディオ
    0x04 MPEG-2 オーディオ
    0x80 - 0xFF ユーザープライベート

     

    ATSC など、MPEG-2 に基づく他の標準では、"ユーザー プライベート" 範囲に追加のストリームの種類を定義できます。 たとえば、ATSC では、0x81を Dolby AC-3 オーディオとして定義します。

  • 条件付きアクセス テーブル (CAT)

  • ネットワーク識別テーブル (NIT)

DirectShow での MPEG-2 のサポート