Projekte > MPEG-1/2 Video > MPEG-1 Multiplexed Stream

Video/Audio Packet Header

Mehrere Video Pakete wechseln sich mit einem Audio Paket im Verhältnis der Bitrate ab.

Aufbau

  • 3 Byte: PACKET_START_CODE_PREFIX = $000001
  • 1 Byte: Stream ID - Video $E0 - $EF, Audio $C0 - $CF
  • 2 Byte: Paketlänge
  • 0 - 16 Byte: Füllbytes, auf $FF gesetzt.
  • 2 Byte - nur wenn die ersten beiden Bit auf 01 gesetzt sind.
    • 2 Bit: auf 01 gesetzt.
    • 1 Bit: STD Buffer Scale
    • 13 Bit: STD Buffer Größe
  • 2 Bit: auf 00 gesetzt.
  • 1 Bit: PTS (Presentation Time Stamp)
  • 1 Bit: DTS (Decoding Time Stamp)

Sind die Flags für PTS und DTS nicht gesetzt:

  • 4 Bit: auf 1111 gesetzt.

Sind die Flags für PTS und DTS gesetzt:

  • 3 Bit: Presentation Time Stamp Bit 32-30
  • 1 Bit: Marker
  • 15 Bit: Presentation Time Stamp Bit 29-15
  • 1 Bit: Marker
  • 15 Bit: Presentation Time Stamp Bit 14-0
  • 1 Bit: Marker
  • 4 Bit: Gesetzt auf 0001
  • 3 Bit: Decoding Time Stamp Bit 32-30
  • 1 Bit: Marker
  • 15 Bit: Decoding Time Stamp Bit 29-15
  • 1 Bit: Marker
  • 15 Bit: Decoding Time Stamp Bit 14-0
  • 1 Bit: Marker

Als Schema:

 76543210
0PACKET_START_CODE_PREFIX
 
$000001
1
2
3Stream ID - Video $E0 - $EF, Audio $C0 - $CF
4Paketlänge
5
Optional
 Füllbytes (Stuffing Bytes)
Weiter
x + 101Sind die Bits nicht so gesetzt entfallen diese zwei Bytes
 STD Buffer
Scale
STD Buffer Größe
x + 2noch STD Buffer Größe
x + 300PTSDTSWenn PTS und DTS nicht gesetzt sind: 1111
Flags PTS und DTS gesetzt:
x + 3 PTS Bit 32-30Marker
x + 4Presentation Time Stamp Bit 29-22
x + 5Presentation Time Stamp Bit 21-15Marker
x + 6Presentation Time Stamp Bit 14-7
x + 7Presentation Time Stamp Bit 6-0Marker
x + 80001DTS Bit 32-30Marker
x + 9Decoding Time Stamp Bit 29-22
x + 10Decoding Time Stamp Bit 21-15Marker
x + 11Decoding Time Stamp Bit 14-7
x + 12Decoding Time Stamp Bit 6-0Marker

Erläuterungen

Bei der Stream ID ist das erste Bit immer gesetzt. Für Video ergibt sich 1110 xxxx und für Audio 1100 xxxx.

Es können bis zu 16 Füllbytes vorhanden sein.

Die beiden Bits nach den Füllbytes sind entweder auf 01 oder 00 gesetzt. Bei 01 schließt sich der STD Buffer an, bei 00 kommen sofort die Zeitstempel.

Die STD Buffer Scale (Buffersize für den Zieldecoder) gibt den Faktor für den folgenden Wert an. Für Video wird der Buffer in 1024 Byte-Einheiten angegeben und das Bit auf 1 gesetzt. Für Audio gelten 128 Byte-Einheiten und das Bit ist auf 0 gesetzt.

Die Decoding Time ist die Zeit wann der Inhalt des Packets decodiert und die Presentation Time die Zeit wann der Inhalt angezeigt werden muss. Die Flags für Presentation Time Stamp und Decoding Time Stamp sind immer gleich gesetzt und die Zeitstempel in 90 kHz Zyklen angegeben.

Bei den Audiopacks scheinen STD Buffer und PTS immer angegeben zu werden, wobei das Fehlen des DTS nicht durch Füllbytes ausgeglichen wird. Bei den Videopacks variiert es, wobei anscheinend bei Systemstreams fehlende Angaben immer durch Füllbytes ausgeglichen werden.

Testprogramm

Mit dem folgenden kleinen Testprogramm kann man einen MPEG-1 Stream scannen und System, Audio und Video Header anzeigen lassen.

MPEG1 System Test 4 (167 kb) - MD5
Stand: 13. Oktober 2008.