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?
Detailfragen zu Transport-Streams
-
-
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 01dann 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 BytesDiese 2028 Bytes wirst du fast überall finden, nur in den letzten Videopacks einer GOP oder Subpicturepacks wirst du kürzere Längen finden.
ZitatWenn 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.
-
Danke erstmal, ist den jedes Packet 2048 Byte groß?
in dem Packet ist dann PES enthalten, wenn ich es richtig verstanden habe oder? -
Auf einer Video-DVD sind alle Packets maximal 2048 Bytes groß, denn das ist die Größe eines Sektors (für Nutzdaten).
Auf (S)VCDs war die Sektorgröße 2352 Bytes.
-
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)
Zitatin 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.
-
Die DVD Infos von Mpucoder sind jetzt auch frei zu erreichen
Schau mal dort unter Pack Headers, PES Headers und Audio Substream Headers -
Hallo,
kann mir vielleicht jemand sagen wozu die Adaptationsfeld von einer TS Datei gut ist. Oder besser gesagt wann man es einsetzt und wann nicht? -
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. -
achso, danke.
Also, wenn ich Payload habe und nicht auffüllen muss dann brauche ich ja kein Adaptaionfeld in diesem neu gebildeten Packet. -
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). -
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. -
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. -
88 - 8F sind "digital auszugebende Tonspuren" (auf Video-DVD also normalerweise dts; auch SDDS wäre speziell für Kinos denkbar, wird aber auf DVDs im Handel nicht verwendet).
-
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!