http://satellite-board.de

Aktuelle Zeit: Sa 28. Dez 2024, 13:40

Alle Zeiten sind UTC




Ein neues Thema erstellen Auf das Thema antworten  [ 110 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5, 6, 7, 8  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do 29. Mär 2001, 20:17 
Offline
Member

Registriert: Fr 23. Mär 2001, 23:00
Beiträge: 75
So, Film ist fertig: Ton ist auch OK. Habe mal ein MPEG gemuxt, der Mediaplayer spielt das einwandfrei ab. Nur kann ich bei 5 sec Filmlänge noch nichts zur Synchronität sagen. Die Timestamps für die Audio-Frames sind da, allerdings vermisse ich die PTS für die Videoframes.

@JSS:

Du hast recht, einige Bits im Datenstrom muß man schon (fast) persönlich kennen, wenn man hier weiterkommen will, macht aber irgendwie mehr Spaß als Fernsehgucken.

Jetzt werde ich mich aber mal kümmern, wo ich günstig so einen Hyundai-Receiver auftreibe, wo ich doch von denen schon kein Auto habe...

Tolles Team hier im Board!

Cu Happy Jack

_________________
Happy Jack


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Do 29. Mär 2001, 21:51 
Offline
Senior Member

Registriert: Do 7. Sep 2000, 22:00
Beiträge: 429
@fsc, nagus, etc Bild

Ich könnte den Linux Port (Console und QT-basierende GUI - wer braucht eine, wenn man die BASH hat) programmieren.
Trotzdem werde ich es dann mal probieren einen fs-modul drauszumachen, habe mir heute nochmal die romfs sources angeschaut, sieht alles machbar aus.

Nette Lib für MPEG Handling (wird auch gerne zum Umwandeln nach DivX benutzt): http://heroinewarrior.com/libmpeg3.php3

Nachtrag: Könne jemand diesen Thread in eine lesbare Textdatei umwandeln ?

[Dieser Beitrag wurde von ravemax am 29. März 2001 um 23:58 Uhr editiert.]


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Do 29. Mär 2001, 22:16 
Offline
registered

Registriert: Di 27. Mär 2001, 22:00
Beiträge: 5
Hi Leute,

zu KIWI´s Frage, wo die Tabelle (FAT) steht:

auf meiner vollständig bespielten 20 er zeigen die Blöcke 1+2 Symptome, als wäre das eine File-Allocation-Table:

je 4 Byte beschreiben einen Video/Audio-Block

die Blöcke sind verkettet über Zeiger

der Inhalt der ersten beiden Byte ist der Zeiger auf den nächsten belegten Block

Beispiel:

Drive: 129 LBA: 1
0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
00000000 0300FDFF 1800FEFF 0400FD02 ................ (Fat-Einträge 0-3)
0500FD03 0600FD04 0700FD05 0800FD06 ................ (Fat-Einträge 4-7)
0900FD07 0A00FD08 0B00FD09 0C00FD0A ................
0D00FD0B 0E00FD0C 0F00FD0D 1000FD0E ................
1100FD0F 1200FD10 1300FD11 1400FD12 ................
1500FD13 1600FD14 1700FD15 1900FD16 ................
2F00FE02 1A00FD17 1B00FD18 1C00FD19 /...............
1D00FD1A 1E00FD1B 1F00FD1C 2000FD1D ............ ...
2100FD1E 2200FD1F 2300FD20 2400FD21 !..."...#.. $..!
2500FD22 2600FD23 2700FD24 2800FD25 %.."&..#'..$(..%
2900FD26 2A00FD27 2B00FD28 2C00FD29 )..&*..'+..(,..)
2D00FD2A 2E00FD2B 3000FD2C FFFFFE03 -..*...+0..,....
3100FD2D 3200FD2E 3300FD2F 3400FD30 1..-2...3../4..0
3500FD31 3600FD32 3700FD33 3800FD34 5..16..27..38..4
3900FD35 3A00FD36 3B00FD37 3C00FD38 9..5:..6;..7<..8
3D00FD39 3E00FD3A 5100FD3B 4100FDFF =..9>..:Q..;A...
5000FEFF 4200FD02 4300FD03 4400FD04 P...B...C...D...
4500FD05 4600FD06 4700FD07 4800FD08 E...F...G...H...
4900FD09 4A00FD0A 4B00FD0B 4C00FD0C I...J...K...L...
4D00FD0D 4E00FD0E 4F00FD0F 8300FD10 M...N...O.......
9000FE02 5200FD3C 5300FD3D 5400FD3E ....R..<S..=T..>
5500FD3F FFFFFD40 5800FDFF 6D00FEFF U..?...@X...m...
5900FD02 5A00FD03 5B00FD04 5C00FD05 Y...Z...[...\...
5D00FD06 5E00FD07 5F00FD08 6000FD09 ]...^..._...`...
6100FD0A 6200FD0B 6300FD0C 6400FD0D a...b...c...d...
6500FD0E 6600FD0F 6700FD10 6800FD11 e...f...g...h...
6900FD12 6A00FD13 6B00FD14 6C00FD15 i...j...k...l...
6E00FD16 FFFFFE02 6F00FD17 7000FD18 n.......o...p...
7100FD19 7200FD1A 7300FD1B 7400FD1C q...r...s...t...
7500FD1D FFFFFD1E 7800FDFF A200FEFF u.......x.......
7900FD02 7A00FD03 7B00FD04 7C00FD05 y...z...{...|...
7D00FD06 7E00FD07 7F00FD08 8000FD09 }...~...........

Drive: 129 LBA: 2
0 1 2 3 4 5 6 7 8 9 A B C D E F 0123456789ABCDEF
8100FD0A 8200FD0B 9900FD0C 8400FD11 ................
8500FD12 8600FD13 8700FD14 8800FD15 ................
8900FD16 8A00FD17 8B00FD18 8C00FD19 ................
8D00FD1A 8E00FD1B 8F00FD1C 9100FD1D ................
FFFFFE03 9200FD1E 9300FD1F 9400FD20 ...............
9500FD21 9600FD22 9700FD23 9800FD24 ...!..."...#...$
FFFFFD25 9A00FD0D 9B00FD0E 9C00FD0F ...%............
9D00FD10 9E00FD11 9F00FD12 A000FD13 ................
A100FD14 A300FD15 FFFFFE02 A400FD16 ................
A500FD17 A600FD18 A700FD19 A800FD1A ................
A900FD1B AA00FD1C AB00FD1D AC00FD1E ................
FFFFFD1F AF00FDFF BE00FEFF B000FD02 ................
B100FD03 B200FD04 B300FD05 B400FD06 ................
B500FD07 B600FD08 B700FD09 B800FD0A ................
B900FD0B BA00FD0C BB00FD0D BC00FD0E ................
BD00FD0F BF00FD10 FFFFFE02 C000FD11 ................
C100FD12 C200FD13 C300FD14 C400FD15 ................
FFFFFD16 00000000 00000000 00000000 ................
00000000 00000000 00000000 00000000 ................
00000000 00000000 00000000 00000000 ................
00000000 00000000 00000000 00000000 ................
00000000 00000000 00000000 00000000 ................
00000000 00000000 00000000 00000000 ................
00000000 00000000 00000000 00000000 ................
00000000 00000000 00000000 00000000 ................
00000000 00000000 00000000 00000000 ................
00000000 00000000 00000000 00000000 ................
00000000 00000000 00000000 00000000 ................
00000000 00000000 00000000 00000000 ................
00000000 00000000 00000000 00000000 ................
00000000 00000000 00000000 00000000 ................
00000000 00000000 00000000 00000000 ................

Das lese ich so:

FAT-Eintrag 0 (erste 4 Byte in Sektor 1) enthält 0000 0000 -> Zeiger auf Block 0 (bedeutet das, der Block ist unbenutzt?)

FAT-Eintrag 1 enthält 0300 FDFF -> Zeiger auf Block 3 (beim Datenlesen geht es weiter mit Block 3)

FAT-Block 2 enthält 1800 FEFF -> Zeiger auf
Block $0018

FAT-Block 3 enthält 0400 FD02 -> Zeiger auf Block $0004 (es geht weiter mit Block 4)

und so weiter.

Ende der jeweiligen Kette: Zeiger auf FFFF (erstmals in FAT-Eintrag $02F (Inhalt FFFF FE03)

Den Sinn der zweiten 2 Byte habe ich noch nicht kapiert.

Was mich irritiert: eine solche FAT-Struktur finde ich noch ein paar mal (Sektoren 8+9, 17d+18d).

Bye, Güfi


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Fr 30. Mär 2001, 08:35 
Offline
Member

Registriert: Mi 20. Dez 2000, 23:00
Beiträge: 83
@Grosser Nagus

Genau das istz das was ich suche. Ich bekomme die Physischen Sectoren unter NT und W2k aber nicht unter Win9x. Ich könnte so die GUI (Delphi) machen. Beim Muxen in eine MPEG Datei brauch ich aber noch Hilfe. Happy Jack?

By
Fsc


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Fr 30. Mär 2001, 09:34 
Offline
Senior Member

Registriert: Do 24. Aug 2000, 22:00
Beiträge: 212
@fsc:

Es bietet sich auf jeden Fall an die physikalischen Plattenzugriffe und vielleicht auch einen Teil der Logik zum Interpretieren der Directory Informationen in einer eigenen Dll/Lib zu kapseln. Nur auf diese Weise hat man später die Chance den ganzen Kram zu portieren. Falls ich das mache, werde ich diesen Teil in jedem Fall in 'C' schreiben. Delphi für die Oberfläche finde ich gut (siehe meinen letzten Beitrag).
Wenn ich mich recht entsinne gibt es auch so etwas Delphi-artiges für Linux (Kylix oder so), vielleicht kann man sogar Teile des GUI Teils für Linux einsetzen...

Physikalische Plattenzugriffe laufen unter NT4/W2K wirklich komplett anders ab als unter W'95/'98/ME. Aber auch das könnte man schön in der eben beschriebenen Dll/Lib verstecken.

Was den eingentlichen Aufbau der MPEG Daten betrifft brauche ich allerdings auch noch ein bischen Nachilfe! Bild

Der Grosse Nagus


[Dieser Beitrag wurde von GrosserNagus am 30. März 2001 um 11:36 Uhr editiert.]


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Fr 30. Mär 2001, 14:18 
Offline
Member

Registriert: Mi 20. Dez 2000, 23:00
Beiträge: 83
Ich konnte es nicht lassen.
Ich hab mal einen Prototyp unter http://dvd.von-morgen.de/ufdripper.zip bereitgestellt. Er analysiert vorerst nur Files, und auch nur das Inhaltverzeichnis. Aber erstmal ein Anfang.
Die Zugriffe hab ich alle erstmal in eine Unit gemacht, alles basiert auf ReadSector, egal ob vom File oder physisch. Ich werde noch den physischen lesekram für NT & W2K einbauen, das ist nicht so aufwändig.
Mit der FAT oder Datenstruktur muss ich nochmal die Beiträge studieren. Vieleicht kann es ja nocheimal jemand zusammenfassen (ich bin nur Informatiker). Die Zugriffs Unit gebe ich gern als Source weiter.
Das ganze ist erstmal ein Test der alle Forschungsergebnisse bestätigt.
@Kiwi Byte 63 ist nicht der Tag von der Länge, der Rest stimmt aber.
BY
fsc


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Fr 30. Mär 2001, 19:49 
Offline
Member

Registriert: Fr 23. Mär 2001, 23:00
Beiträge: 75
Hallo,
habe gerade die PES-Packet-Header im Videostream gefunden, das geht hier doch ein bißchen anders als beim dBox-Streaming. Damit sollte man einen synchronen Start zwischen Bild und Ton hinkriegen.
@fsc: Gemuxt habe ich nie selbst, das mache ich mit bbMPEG. SVCD's kriegt man damit sauber hin, der theoretische Hintergrund ist nicht gerade trivial, Literatur nicht einfach zu kriegen. Für Programmierer sind allerdings die Quellen in C verfügbar. Im Falle Kathrein/Hyundai sollte im ersten Schritt m.E. das Ziel sein, je ein *.m2v und *.m2a-File "ready to mux" softwareunterstützt zu erzeugen. Dann kann man sich in wenigen Minuten seinen MPEG2-Programmstream für VCD, SVCD, DVD und sonstige erzeugen.

Cu Happy Jack

_________________
Happy Jack


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Fr 30. Mär 2001, 20:14 
Offline
Junior Member

Registriert: Di 22. Aug 2000, 22:00
Beiträge: 51
@fsc: Saubere Arbeit !! Keep on running Bild
Btw: Tage hab ich nur angenommen da bei Radioaufnahmen es wirklich Tage werden könnte ....

@HappyJack: Es wäre ganz Klasse wenn du deine Research mal genauer beschreiben könntest, das würde uns allen viel mehr helfen Bild

Erkär doch mal simple z.b. die Geschichte mit den PES Headern ... denn wenn ich mir jetzt Seitenweise den ganzen MPEG Manual reinpfeifen muss dann können wir zum Schluß die Firmware fast selber schreiben .... so hum54k like *g*

l8er dudez

_________________
Regards,

KiWi of StarLighT


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Fr 30. Mär 2001, 22:32 
Offline
Senior Member

Registriert: Do 7. Sep 2000, 22:00
Beiträge: 429
Wenn güfis FAT -Angabe stimmt, dann dürfte auch der Grund gefunden sein, warum sich manche Aufnahmen nicht bzw. nur teilweise abgespielt werden: Die Firm "vergisst" die "Sektoren-liste" zu setzen, sprich kein Abspielen ohne Root-Pointer.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Fr 30. Mär 2001, 23:02 
Offline
Member

Registriert: Fr 23. Mär 2001, 23:00
Beiträge: 75
@kiwi, @alle:
Aber bitte hier nur kurz, das ist sonst einfach zu viel und zu komplex.

MPEG-Video ist in 6 hierarchischen Layern angeordnet, jeder Layer hat einen Header, der im Datenstrom eindeutig erkannt werden kann.

Alle Header beginnen mit 00 00 01 xx, in jedem Header sind für die Decodierung wichtige Daten, meist bitweise angeordnet, enthalten.

Sequence (xx=B3)
GOP (Group of Pictures) (xx=B8)
Picture (xx=00)
Slice (xx=01..AF)

ohne Header : Macroblock, Block

Weiterhin gibt es Sequence-Extensions (xx=B5), Userdata (xx=B2)
und Sequence-error (xx=B4) und die Systemstartcodes (xx=B9..FF)

Im Sequence-Header stehen u.a. Bildhöhe, Breite, Framerate, Bitrate,
im GOP-Header der Time-Code std:min:sec:frame aber nicht für jedes Bild sondern für eine Gruppe von Bildern. Aber Achtung, diese Zeit hat nichts mit den Timestamps zu tun.
Im Picture-Header steht u.a. der Frame-Codingtyp I,P,B

I=Intra coded
P=predictive coded
B=bidirectional predictive coded

Dann kommen die Slices, Makroblock, Motionvektoren ... ist alles für den Decoder

Die Videodaten wurden vom Demultiplexer wie auch Audio aus dem Transportstrom extrahiert, sie stellen einen packetized elementary stream (PES) dar, der hat -na klar- einen Header - den PES-Header. Für uns ist wichtig, daß dieser den PTS und DTS enthält.

PTS - Presentation Time Stamp
DTS - Decoding Time Stamp

Die jeweiligen Systemstartcodes sind
Video: 00 00 01 Ex x = Stream-Nummer -> wir finden E1
Audio: 00 00 01 Cx x = "" -> wir finden C0
-----------------------------------------------------------------
Jetzt holen wir mal beispielhaft den Videostream von der Platte und synchronisieren ihn mit dem Audiostream:

Den Offset kennst Du ja aus der FAT. Die ersten Bytes sind nutzlos, weil es wahrscheinlich mitten in irgendeinem Frame losgeht. Wir überlesen solange Bytes, bis wir einen Sequence-Header finden. Ab hier holen wir uns die Daten - bis zum letzten ganzen Picture.

Ich lasse Extensions usw. weg

Es folgt der GOP, das erste Bild nach dem GOP ist immer ein I-Frame. Es kann zu einem sichtaren Bild decodiert werden, P u. B- Frames stellen nur Differenzen zu I-Frames dar und sind alleine nicht verwertbar.

Der Film wird so gesehen : IBBPBBPBBI
Übertragen wird er aber so : IPBBPBBIBB

Deshalb auch die beiden Zeitstempel.

Das ist nur eine Beispielfolge, meistens kommt im realen Stream aller 12 Frames ein I-Frame, d.h. bei 25f/sec kürzen wir den Film max. 1/2 Sekunde (macht die Box genauso!)

Wir holen uns den PTS des ersten Bildes aus dem PES-Header - jetzt haben die C- oder Asm-Coder leichte Vorteile wegen der hübschen Bitfummelei und erhalten einen 33-Bit-Wert. Das ist die Zahl der Schwingungen eines 90-kHz-Signals und soll 24 Std. ohne Überlauf abdecken. Rechnet nach: 32 Bit reichen nicht aus. Jetzt müssen wir "nur" noch im Audiostream nach einem Frame suchen, der den gleichen PTS hat und alle Frames davor verwerfen. Audio ist übrigens viel einfacher aufgebaut, die Frames haben gleiche Länge - aber nicht jeder Frame hat einen PTS!! Also muß man ggf. interpolieren und den zeitlich dichtesten Frame nehmen.

Erwähnen muß ich noch, daß anschließend die PES-Daten vor allem aus dem Audio-Stream entfernt werden müssen, nicht alle Decoder kommen damit klar (quietschen). Was da genau stört -> noch klären!

Nun ist der Ton absolut synchron zum Bild. In der Set-Top-Box werden PTS/DTS so verwendet, daß eine PLL den Ton synchron zum Bild hält. Das klappt natürlich auch bei der HD-Wiedergabe, weil eigentlich kein Unterschied zum direkten Gucken besteht, die Daten wurden ja nur mal eben auf der Platte geparkt.

Wir können on the fly weder Bild noch Ton auseinanderziehen oder stauchen. Das heißt u.U. daß die Synchronität über den ganzen Film schlechter wird z.B. auf CD.

Aber da gibt es wohl genug Stoff in den Foren...

So, zum Schluß vielen Dank für die nette Frage nach der Research. Das muß auch nicht 100pro so stimmen, ich habe die Specs eher aus Neugier gelesen wie DVB denn so funktioniert und noch lange nicht alles verstanden. Außerdem mache ich beruflich was gaaanz anderes.

Tiefere Zusammenhänge sollten dann im konkreten Projekt geklärt werden, ich bin auch bereit zu helfen, aber vielleicht doch nicht alles hier im Board durchzukauen.

Wer dann keinen Briefkasten hat, geht leer aus...

So gute Nacht und Cu Happy Jack

_________________
Happy Jack


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: Sa 31. Mär 2001, 20:24 
Offline
Member

Registriert: Mi 20. Dez 2000, 23:00
Beiträge: 83
@KIWI

Ich habe mal 16Gb von meiner Platte geholt. Ich denke die Bytes $54..$57 sind 2 Word Werte in Little Endian Notification. Ich komme darauf, weil auf meiner Platte mit 18 Aufnahmen und vielen gelöschten ich auch Werte wie 1A01 1B01 finde. -> 011A 011B.
In den Sendungen sind die Werte auch nicht fortlaufend. Es gibt Lücken (sicher durch Löschen von Aufnahmen).
Ich habe mal den VideoStream aus den 1. 200 MB gezogen. Das ist der Anfang des FIlmes der im Byte $54 auch 0100 0200 hat. Dann hab ich mir mal den Film genommen der dort 0c00 0d00 hat, und habe entsprechen bei 0c00 * 200MB den Videostream gesaugt. War aber komplett der falsche Film.
Meine Vermutung. Die Werte in Byte $54 sind doch Index in einer Tabelle.
Güfi hat ja eine FAT Struktur ausfindig gemacht, die fehlt aber auf der Platte von kiwi.? Eigenartig.
Ich werde mal Weiterforschen.
By
FSC


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: So 1. Apr 2001, 00:23 
Offline
Member

Registriert: Mi 20. Dez 2000, 23:00
Beiträge: 83
Hi!

Ich habe die neue Version des UFDRipper unter http://dvd.von-morgen.de/ufdripper.zip bereitgestellt. Er arbeitet immer noch auf Imagefiles. Als wichtigstes Feature ist die FAT Auswertung hinzugekommen. güfi's Forschungen scheinen sich zu bestätigen.

Ein 4byte Eintrag ab $200 repräsentiert einen 100MB Block ab $20000, die ersten 2 Byte verweisen auf den nächsten 4 byte Eintrag. Bei ffff ist schluss. Ich habe nach dieser Rechnung mal den Anfang von verschiedenen Filmen rausgezogen und habe immer Perfect den Anfang im Video gesehen.
Als nächstes werde ich die beiden Streams abspeichern.

Mir fehlt immer noch der Physische Dateizugriff unter W9x (habe zu Hause leider nur w98). Help!

By
FSC


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: So 1. Apr 2001, 10:13 
Offline
Member

Registriert: Mi 20. Dez 2000, 23:00
Beiträge: 83
Hi!

Neue Version an alter stelle. Speichert jetzt beide Streams. (Sendung in der Listbox auswählen. Arbeitet immer noch vom ImageFile.

By
fsc


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: So 1. Apr 2001, 10:19 
Offline
registered

Registriert: Di 27. Mär 2001, 22:00
Beiträge: 5
Hi!

@FSC: Physischer File-Zugriff unter Win9x(auch mein Problem)

MicroSoft bietet Infos zum physischen Filezugriff: http://support.microsoft.com/support/kb ... 5/7/12.asp

Mein Sohnemann will den Weg über DeviceControl unter C++ testen. Das müsste den Weg zum direkten Lesen der UFD-Festplatte unter Win9x öffnen.

Bye, GüFi.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: So 1. Apr 2001, 13:54 
Offline
Member

Registriert: Fr 23. Mär 2001, 23:00
Beiträge: 75
Hi,
für das Lesen von Sektoren auf phys!! Drives ($80,$81) ist das BIOS zuständig. Das läuft aber im Real Mode. So geht's:

Win9x-Proggie -> DLL(32bit) -> DLL(16bit) -> INT13

BTW, Macht Hexworkshop genauso. Wo soll ich die Source hinschicken?

Happy Jack

[Dieser Beitrag wurde von Happy Jack am 01. April 2001 um 22:22 Uhr editiert.]

_________________
Happy Jack


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 110 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5, 6, 7, 8  Nächste

Alle Zeiten sind UTC


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Deutsche Übersetzung durch phpBB.de