Detailfragen zu Transport-Streams

  • Hallo, kann mir jemand sagen wie ich herauskriege, wie groß ein bestimmtes PES Packet einer *.VOB Datei ist. Die Größe des Packetes müsste in vierten und fünften Byte des jeweilligen Packetes stehen. Ist aber nicht der Fall Wo könnte ich es noch suchen?

  • Zitat

    .. Ist aber nicht der Fall Wo könnte ich es noch suchen?

    PES Länge steht in Byte 4 und 5, auch bei VOB Files.
    Erst steht der Startcode Byte 0 bis 2
    00 00 01

    dann StreamID
    Byte 3
    z.b E0 (Video)

    und dann die Länge
    Byte 4 und 5
    z.b 07 EC (2028)

    Du darfst das aber nicht mit einem Pack Header (00 00 01 BA) verwechseln mit dem jedes VOB Pack beginnt. Erst kommt der Pack Header und dann erst der PES Header.
    Vom Pack Anfang stünde die PES Länge in Byte 0x12 und 0x13.
    (übrigens jedes VOB Pack ist 2048 Bytes lang)

  • Danke erstmal,
    ja, ich weiss das da die Packet länge steht aber wenn ich aus dem VOB in Byte 5 und Byte 6 stehende Länge nehme ist in dem Fall fast immmer 2028.
    also: z.B. 00 00 01 E0 07 EC.. ist ja ein Video..
    Wenn ich aber 07 EC = 2028 spielt mir kein Player ab. Aber wenn ich 2048 nehme dann funktioniert es auf ein Mal ich würde gerne wissen woran es liegt.

  • Zitat

    wenn ich aus dem VOB in Byte 5 und Byte 6 stehende Länge nehme ist in dem Fall fast immmer 2028.

    Natürlich
    2048 minus die 20 Bytes aus Pack Header (14 Bytes) + PES Startcode (4 Bytes) + Länge (2 Bytes) ergibt 2028 Bytes

    Diese 2028 Bytes wirst du fast überall finden, nur in den letzten Videopacks einer GOP oder Subpicturepacks wirst du kürzere Längen finden.

    Zitat

    Wenn ich aber 07 EC = 2028 spielt mir kein Player ab.

    ??

  • Ich meinte wenn ich alle Video Packete also 00 00 01 E0 in einem seperaten Datei speichere mit 2048 Byte, dann wird z.B. von VLC die Datei als Videodatei wiedergegeben aber wenn ich nur 2028 in dem seperaten Datei kopiere dann wird es von VLC nicht als Videodatei abgespielt zumindest nicht mit Bild. Ich dachte in Packetlänge ist Kopf und Header mit enthalten

  • Wie war das?

    Ein Paket beginnt mit dem PACK_START_CODE $000001BA. Der folgende Header ist 10 Byte lang. Es folgen eventuell noch ein paar Füllbytes, deren Anzahl im letzten Bytes des Headers angegeben ist. Dann u. a. der VIDEO_START_CODE $000001E0 und zwei Bytes mit der Paketlänge. Die Paketlänge gibt die Länge des Restes (inklusive Header) an. Wobei das dritte Byte des Restes die Länge des noch folgenden Headers inklusive Füllbytes angibt.

    Gruß Frank

  • Zitat

    ist den jedes Packet 2048 Byte groß?

    hab ich doch schon in Post#2 geschrieben

    Zitat

    (übrigens jedes VOB Pack ist 2048 Bytes lang)

    Zitat

    in dem Packet ist dann PES enthalten, wenn ich es richtig verstanden habe oder?


    Ja

  • Danke, stimmt bigotti ich habe es leider nicht wargenommen gehabt, sorry deswegen und auch danke an LighH.
    Ich möchte von *.VOB in*.TS konvertieren brauche ich den den gesamten Packet oder nurden PES also muss ich diePackete ab 00 00 001 BA kopieren oder reicht mir auch wenn ich bei Video ab 00 00 01 E0 anfange.

    Zweite Frage:
    Meine Audospuren sind alle in 00 00 01 BD also Private Stream enthalten. Jetzt habe ich mehrere Audiospuren wie erkenn ich überhaupt das jezt ein Audiospur kommt und welche audiospur es ist

  • Der Private Stream 2 muss dann entsprechend weiter analysiert und für sich noch mal demultiplext werden.

    Eventuell findest du noch meine Pascal-Quelltexte von MPEGWALK hier im Board. Der Demultiplexer arbeitet nicht ganz korrekt, um ihn wirklich zu benutzen - aber zum Nachschlagen für die technischen Details sollte es reichen.

  • Das Adaptionsfeld enthält die PCR Infos die mindestens alle 100 ms im TS Strom vorkommen müssen (bei DVB alle 40 ms).
    Außerdem stellt es sicher dass jedes TS-Pack 188 Bytes groß ist. Wenn das letzte PES Paket nur noch einen Teil des TS-Packs füllen würde (< 184 Bytes) wird mittels Adaption Feld gefüllt (stuffing-bytes).
    Diese Füllbytes sind dann Teil des Adaptionsfelds also vor dem Payload.

  • Also, bei *.TS ist die PID 13 BIT groß also kann die ja 1111111111111= 8191 und einige sind ja auch reserviert. Dann gibt im vierten Byte auch den Continuity Counter also ein zähler der vier Bit werden darf also 1111 = 15 wenn man die null auch zählt 16. Jedes Packet darf ja auch 188Byte lang sein.
    Payload ist aber davob 184 Byte. Wenn man PID also 8191*16 = 131056
    also kann ich 131056 TSPackete haben. Jedes davon kann 188 Byte habn also
    131058 * 188 =24638528 also das wären ca. 25 MB. Aber ich habe schon *.TS Dateien gesehen, die sind über ein GB groß.
    Wo liegt den mein Denk Fehler?

  • Die PID ist ist keine eindeutige Kernnzeichnung eines Paketes sondern definiert nur dessen Inhalt.
    z.b 0x0 ist immer die PAT.
    Zwischen 0x10 bis 0x1FFE sind Netzwerk Streams oder Elementary Streams etc.
    0x1FFF ist reserviert für Nullpakete.
    Der Continuity Counter wird einfach für folgende Pakete gleicher PID hochgezählt und beginnt dann wieder bei 0 (Ausnahme: Adaption Field Only Pakete werden nicht hochgezählt).

    Einmal editiert, zuletzt von bigotti5 (6. November 2009 um 17:07)

  • Ich möchte von *.VOB in*.TS konvertieren brauche ich den den gesamten Packet oder nurden PES also muss ich diePackete ab 00 00 001 BA kopieren oder reicht mir auch wenn ich bei Video ab 00 00 01 E0 anfange.


    Das beste wäre ein Remuxen. Weiß allerdings kein passendes Programm dafür.

    Jetzt habe ich mehrere Audiospuren wie erkenn ich überhaupt das jezt ein Audiospur kommt und welche audiospur es ist


    Auf den Header folgt ein Byte, welches den StreamType und die StreamID enthält. $20 bis $2F sind Untertitel, $80 bis $87 Tonspuren in AC3.

    Gruß Frank

  • Die PID gibt an, welchen Inhalt der Payload enthält.

    • $0000 - Program Association Table.
    • $0001 - Conditional Access Table.
    • $0002 - $000F Reserviert.
    • $0010 - Network Information Table
    • $0011 - Service Description Table (SDT), bouquet
    • $0012 - Information Table (BAT) and Stuffing Table (ST)
    • $0013 - Running Status Table (RST) and Stuffing Table (ST)
    • $0014 - Time/Date Table (TDT), Time Offset Table (TOT) und Stuffing Table (ST)
    • $0015 - $1F - Reserviert für eine spätere Nutzung
    • $0020 - $1FFE - Video / Audio / Private Daten
    • $1FFF - NULL Packete zur Verwendung als Padding.


    Die Größe des TS-Stream ist meines Wissens nur von der Größe des Datenträgers abhängig.

    Gruß Frank

Jetzt mitmachen!

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