Projekte > MPEG-1/2 Video > Informationen sammeln

Elementar Video Stream

Die meisten Informationen stecken bereits im Sequenzheader (MPEG-1, MPEG-2). So die für Bildgröße (Höhe und Breite), Bildwiederholfrequenz (Framerate), Seitenverhältnis (Aspect Ratio) und die Videobitrate. Lediglich die Spieldauer kann nicht direkt ausgelesen werden. Dafür könnte man folgende Methoden anwenden:

  • Näherungsweise als Differenz der Time Stamps aus dem ersten und letzten GOP Header mit oder ohne Berücksichtigung der Picture.
  • Differenz der Time Stamps aus dem ersten und letzten GOP Header unter Berücksichtigung des Anteiles der Picture sowie der Picture der letzten GOP.
  • Berechnung über die Bitrate.
  • Zählen aller Picture unter Beachtung der Framerate.

Bei der ersten und zweiten Möglichkeit muss man den letzten GOP-Header suchen. Dazu liest man die Datei von hinten nach vorne und findet dementsprechend auch die Header der Picture der letzten GOP und kann sie zählen. Damit erübrigt sich die erste Möglichkeit.

Für mein Beispielvideo sieht das Ergebnis als MPEG-1 so aus:

Die Datei ist ein MPEG-1 Elementar Video.

Sequenzheader:
=================================================
  Bildbreite               -          720
  Bildhöhe                 -          576
  Framerate                -       25,000 f/s
  Aspect Ratio             - 0.9157 - 4:3, 625 line, PAL, CCIR601
  Bitrate                  -      1700000 b/s

Spieldauer über GOP Time Stamp (1):
=================================================
  Erster GOP Time Stamp    - 00:00:00,000
  Letzter GOP Time Stamp   - 00:05:32,519
  -----------------------------------------------
  Spieldauer (Differenz)   - 00:05:32,519

Spieldauer über GOP Time Stamp (2):
=================================================
  Erster GOP Time Stamp    - 00:00:00,000
  Letzter GOP Time Stamp   - 00:05:32,519
  Picture letzte GOP       -           12 f
  -----------------------------------------------
  Spieldauer (Differenz)   - 00:05:32,999

Spieldauer über Bitrate:
=================================================
  Bitrate                  -      1700000 Bit/s
  Dateigröße               -     70762661 Byte
  -----------------------------------------------
  Spieldauer (BR / DG * 8) - 00:05:33,000

Spieldauer über Frames:
=================================================
  Framerate                -       25,000 f/s
  Anzahl Frames            -         8325
  -----------------------------------------------
  Spieldauer (f / FR)      - 00:05:33,000

Und so als MPEG-2:

Die Datei ist ein MPEG-2 Elementar Video.

Sequenzheader:
=================================================
  Bildbreite               -          720
  Bildhöhe                 -          576
  Framerate                -       25,000 f/s
  Aspect Ratio             -          4:3
  Bitrate                  -      2500000 b/s

Spieldauer über GOP Time Stamp (1):
=================================================
  Erster GOP Time Stamp    - 00:00:00,000
  Letzter GOP Time Stamp   - 00:05:32,519
  -----------------------------------------------
  Spieldauer (Differenz)   - 00:05:32,519

Spieldauer über GOP Time Stamp (2):
=================================================
  Erster GOP Time Stamp    - 00:00:00,000
  Letzter GOP Time Stamp   - 00:05:32,519
  Picture letzte GOP       -           12 f
  -----------------------------------------------
  Spieldauer (Differenz)   - 00:05:32,999

Spieldauer über Bitrate:
=================================================
  Bitrate                  -      2500000 Bit/s
  Dateigröße               -    104073538 Byte
  -----------------------------------------------
  Spieldauer (BR / DG * 8) - 00:05:33,035

Spieldauer über Frames:
=================================================
  Framerate                -       25,000 f/s
  Anzahl Frames            -         8325
  -----------------------------------------------
  Spieldauer (f / FR)      - 00:05:33,000

Für dieses selbst encodete Beispielvideo kommen alle Möglichkeiten in Frage. Das Auszählen nimmt bei größeren Datei erhältnismäßig viel Zeit in Anspruch. Sowie das Video ohne Korrektur der Timestamps geschnitten wurde, liefern die ersten beiden Methoden keine korrekten Ergebnisse mehr. Bei der Methode mit der Bitrate treten kleine Schwankungen auf, sodass sie nicht allzu sicher ist wie das nächste Beispiel zeigt. Dabei handelt es sich um eine mit DVD2SVCD erstellte SVCD.

Die Datei ist ein MPEG-2 Elementar Video.

Sequenzheader:
=================================================
  Bildbreite               -          480
  Bildhöhe                 -          576
  Framerate                -       25,000 f/s
  Aspect Ratio             -         16:9
  Bitrate                  -      1750000 b/s

Spieldauer über GOP Time Stamp:
=================================================
  Erster GOP Time Stamp    - 01:00:02,400
  Letzter GOP Time Stamp   - 02:08:05,680
  Picture letzte GOP       -           15 f
  -----------------------------------------------
  Spieldauer (Differenz)   - 01:08:03,880

Spieldauer über Bitrate:
=================================================
  Bitrate                  -      1750000 Bit/s
  Dateigröße               -    698829616 Byte
  -----------------------------------------------
  Spieldauer (BR / DG * 8) - 00:53:14,650

Spieldauer über Frames:
=================================================
  Framerate                -       25,000 f/s
  Anzahl Frames            -       102097
  -----------------------------------------------
  Spieldauer (f / FR)      - 01:08:03,880

Testprogramm

Mit diesem kleinen Testprogramm wird die oben genannte Auswertung vorgenommen.

MPEG Info 2 (162 kb) - MD5 (1 kb).
Stand: 01. Juni 2009