Home | Kontakt | Sitemap

Start

Über mich

Kontakt

Sitemap

Lizenz

Anleitungen

DVD, miniDVD

SVCD

Audio, Audio-CD (CD-DA)

AVI

Software

Von Freunden und Bekannten

Eigene Programme

Programmierung

Delphi

Lazarus

Delphi/Lazarus

Projekte

MPEG-1/2 Video

Optische Laufwerke

Audio-CD (CDDA)

Raspberry Pi Dashcam

Verschiedenes

MPEG 2 Schnitt

Project X

VCD Easy

Hardlinks

Windows

Links

Software

Projekte | MPEG - MPEG-2 Multiplexed Stream - Video/Audio Packet Header

Video/Audio Packet Header

Mehrere Video Pakete wechseln sich mit einem Audio Paket im Verhältnis der Bitrate ab. Der Header ist bei MPEG-2 deutlich komplexer als bei MPEG-1.

Aufbau

Nun folgen einige Flags, welche mit der darauf folgenden Datenstruktur korrespondieren:

Ist das Flag für PTS gesetzt, kommen diese 5 Byte hinzu:

Ist das Flag für DTS gesetzt, kommen diese 5 Byte hinzu:

Ist das Flag für ESCR gesetzt, kommen diese 6 Byte hinzu:

Ist das Flag für ES Rate gesetzt, kommen diese 3 Byte hinzu:

Ist das Flag für DSM Trick Mode gesetzt, kommt dieses Byte hinzu:

Ist das Flag für zusätzliche Copyright Informationen gesetzt, kommt dieses Byte hinzu:

Ist das Flag für CRC gesetzt, kommen diese Byte hinzu:

Ist das Flag für die Extensionen gesetzt, kommt ein Byte mit weiteren Flags hinzu:

Ist das Flag für Private Data gesetzt:

Ist das Flag für den Pack Header gesetzt, kommen diese Bytes hinzu:

Ist das Flag für den Sequence Zähler gesetzt, kommen diese beiden Bytes hinzu:

Ist das Flag für den P-STD Buffer gesetzt, kommen diese beiden Bytes hinzu:

Ist das Flag für die PES Extensionen gesetzt, kommen diese Bytes hinzu:

Als Schema

 76543210
0PACKET_START_CODE_PREFIX
 
$000001
1
2
3Stream ID - Video $E0 - $EF, Audio $C0 - $DF
4Headerlänge
5
610Scrambled ControlPrioritätAusrichtgCopyrigthOriginal
7PTSDTSESCRES RateDSM Trick
Mode
Zusätzl.
Copyright
CRCExtension
Flags
8Länge der anschliessenden Headerdaten auf Grund der Flags inkl. Füllbytes.

Datenblöcke auf Grund der Flags in Byte 7:

PTS - Presentation Time Stamp
 76543210
00010 oder 1PTS Bit 32-30Marker
1Presentation Time Stamp Bit 29-15 ...
2... Presentation Time Stamp Bit 29-15Marker
3Presentation Time Stamp Bit 14-0 ...
4... Presentation Time Stamp Bit 14-0Marker
DTS - Decoding Time Stamp
 76543210
00001DTS Bit 32-30Marker
1Decoding Time Stamp Bit 29-15 ...
2... Decoding Time Stamp Bit 29-15Marker
3Decoding Time Stamp Bit 14-0 ...
4... Decoding Time Stamp Bit 14-0Marker
ESCR - Elementar Stream Clock Reference
 76543210
0ReserviertESCR Bit 32-30MarkerESCR ...
1... Elementar Stream Clock Reference Bit 29-15 ...
2... Elementar Stream Clock ReferenceMarkerESCR ...
3... Elementar Stream Clock Reference Bit 14-0 ...
4... Elementar Stream Clock ReferenceMarkerESCR Ext ...
5... Elementar Stream Clock Reference ExtensionMarker
ES Rate - Elementar Stream Rate
 76543210
0MarkerElementar Stream Rate ...
1... Elementar Stream Rate ...
2... Elementar Stream RateMarker
DSM Trick Mode
 76543210
0Trick Mode ControlField IDSlice
Refresh
Frequency
Truncation
Field Repeat Control
Field IDReserviert
Field IDSlice
Refresh
Frequency
Truncation
Zusätzliche Copyright Informationen
 76543210
0MarkerCopyrigth Informationen
CRC
 76543210
0CRC des vorhergegangenen Packets ...
1... CRC des vorhergegangenen Packets
Extensionen
 76543210
0Private
Data
Pack
Header
Sequence
Zähler
P-STD
Buffer
ReserviertPES
Ext.

Zu den letzten Flags gehören dann:

Private Data
 76543210
0..127PES Private Data
Pack Header
 76543210
0Länge des folgenden Datenpakets
1..xMPEG-1 Pack Header oder MPEG-2 Programm Pack Header
Sequence Zähler
 76543210
0MarkerProgramm Pack Sequence Zähler (einschließlich dieses Packs)
1MarkerLänge des Original MPEG-1 Headers
P-STD Buffer
 76543210
001ScaleP-STD Buffer Größe ...
1... P-STD Buffer Größe
PES Extension
 76543210
0MarkerLänge des folgenden Datenfeldes
1Reserviert

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.

Das ersten Bits nach der Länge der Datenstruktur sind immer auf 10 gesetzt. Crambling 00 ist "payload is scrambled", andere Werte sind Nutzerdefiniert. Ist das Ausrichtungsflag gesetzt, folgt dem Header eine Beschreibung dazu. Copyright und Original treffen zu, wenn die Flags gesetzt sind.

Die Headerlänge ist die Länge der Daten ab dem folgenden Byte bis zum Paketende.

PTS, DTS und ESCR sind in 90 kHz Zyklen, die ESCR Erweiterung in 27 MHz Zyklen und die ES Rate in 50 Byte je Sekunde angegeben.

Die Trick Mode Controls sind:

Die Field IDs sind:

Die Frequency Truncation sind:

Beim P-STD Buffer gibt das Scale Flag wieder an, in welcher Einheit der Wert angegeben ist. 0 ist für Audio mit 128 Byte und 1 für Video mit 1024 Byte.

Den Daten können bis zu 32 Füllbytes folgen.

Testprogramm

Das Testprogramm beinhaltet alles, was oben zu sehen ist. Bei einigen Daten wie Private Data, Pack Header, werden die Datenstrukturen nur übersprungen. Ob ich dies noch ändern werde, muss ich noch sehen. Denn für meine Zwecke ist dies nicht notwendig.

Mit dem folgenden kleinen Testprogramm kann man einen MPEG-2 Stream scannen, die Packs und Streams sowie den Pack Header anzeigen lassen.

MPEG2 Program Test 4 (178 kb) - MD5
Stand: 27. Mai 2009

System Header > Video/Audio Packet > Inhalt der Video/Audio Pakete