Länge MPEG-1 Paket

  • Ein MPEG-1 Multiplexed Stream ist in Pakete aufgeteilt. Jedes Paket beginnt mit dem Pack Header, welcher 12 Byte lang ist und mit $000001BA beginnt. Dem schliesst sich das eigentliche Paket an.

    Das Paket beginnt mit dem Packet Start Code Prefix $000001 und dem Identifier (zB $E0 für den ersten Videostream). Das sind wiederum 4 Byte. Nun folgen 2 Byte, welche die Länge des folgenden Paketes angeben sollen. Da das gesamte Paket 2048 Byte lang ist sollte hier eine Länge von 2030 hinterlegt sein. Wenn ich mir die Streams von CCEB und TMPGEnc 2.5 ansehe, steht dort fast immer 2023 und damit 7 zu wenig. Wenn ich mich dann an diese Angabe halte, ist der Scan bzw der demuxte Stream fehlerhaft.

    Weiß jemand, wo mein Denkfehler liegt?

    http://www.andrewduncan.ws/MPEG/MPEG-1_Picts.html

    Gruß Frank

  • Zitat


    Wenn ich mir die Streams von CCEB und TMPGEnc 2.5 ansehe, steht dort fast immer 2023 und damit 7 zu wenig



    Kann ich nicht nachvollziehen...
    CCE, TMPGEnc, Procoder, Mainconcept erzeugen bei mir "packet_length 2030" (abgesehen vom System header packet mit 2012 bzw 2015 Bytes)

  • Nach Deinem Post habe ich mein Programm noch einmal durchgesehen. Es werden $7 und $EE ausgelesen. $7EE ist 2030. :hm:

    Mein erster Code:

    Code
    begin  Read(Byte1);  Read(Byte2);  Result := Byte1 * $FF + Byte2;end;


    Der Rückgabewert ist$7E7 = 2023.

    Jetzt geändert:

    Code
    begin
      Read(Byte1);
      Read(Byte2);
      Result := Byte1 shl 8 or Byte2;
    end;


    Der Rückgabewert ist $7EE = 2030.

    :nein: Ich verstehe es zwar nicht, aber jetzt stimmt das Ergebnis. Danke für die Hilfe.

    Gruß Frank

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!