MCE-Schnittfunktion

MCE Streaming Tool
Nachricht
Autor
leth
Muxxi Dev
Beiträge: 2645
Registriert: Mo 04 Aug 2003, 16:22
Wohnort: Pflach in Tirol :-)
Kontaktdaten:

#16 Beitrag von leth » Do 22 Jul 2004, 18:18

Aber es soll über OpenTV gehen. Leider sagt mir dieser Begriff nicht viel. Ist das so was ähnliches wie MHP, bzw. ist das eine Art EPG das man auch auslesen kann. Da muss ich jetzt echt mal Grundlagen büffeln. Vielleicht einen Tip, wo man sich da informieren kann??
Sorry, davon hab ich noch nie was gehört.
Ich hab ja auch schon ein Tool, dass ein bereits vorhandenes Pes-file nach "FF FF FF FF FF FF FF FF FD A0" (hoffe die Anzahl der "FF" stimmt, weiss die jetzt nicht auswendig) durchsucht. Dann hab ich einfach ein paar bytes vorher abgeschnitten. Eben bei 00 00 C0..
Also das ist kein Problem.
Da musst Du unbedingt aufpassen, wenn du auch andere Sender als die MCE Kanäle aufnehmen möchtest, was kein Problem darstellt, wenn man es von Anfang an berücksichtigt. In dem geposteten Code ist das mit drin. Einfach die Paketlänge beobachten und auch auswerten, ob diese mit den empfangenen Bytes übereinstimmt.

Außerdem musst Du berücksichtigen, dass sowas

00 00 01 c0 27 1f 82 80 0c 2d a6 a9 ae af ff ff ff ff ff ff ff

ca. alle 10.000 Bytes kommt und in eine MP2 Datei nicht hineingehört. Also genügt es nicht nur nach "FF FF FF FF FF FF FF FF FD A0" und 00 00 C0 zu suchen!

Bei der Überprüfung der Stream.mp2 mit einem Hexeditor hab ich festgestellt, dass Frames dabei sind, die zu lange sind. Sprich es stimmt die Länge der empfangenen Bytges nicht mit der gesendeten Framelänge überein. Das könnte daran liegen, dass der Buffer zu schnell abgefragt wird und nicht genügend Daten auf der Box vorhanden sind um diesen Buffer komplett zu füllen. So werden vorher im Buffer befindliche Daten nicht neu überschrieben und gelawerden dadurch erneut in die PES Datei geschrieben. Allerdings muss ich zugeben, dass ich das Winsock Steuerelement nicht kenne.

Das Problem mit zuvielen Daten hatte ich nämlich auch und bei einem kleinen Buffer waren nur wenige Knackser drin. Krass war es erst bei einem größeren Buffer. Da wurden plötzlich Teile wiederholt. War wirklich interessant anzuhören :-)

Das Problem hab ich durch byteweises Befüllen des Buffers gelöst.

Cu leth
This is leth!

Meine Box: Nokia SAT 2xi Avia 500

quickmic
MCE Manager Dev
Beiträge: 28
Registriert: Do 22 Jul 2004, 12:13
Wohnort: Österreich

#17 Beitrag von quickmic » Do 22 Jul 2004, 18:37

Wenn ichs richtig verstanden hab, meinst du, das im Buffer noch "alte" Daten drin sind. Die werden dann fälschlicherweise nochmals geschrieben. Wenn dem so ist, werde ich mal versuchen, den Buffer nach jedem Schreinvorgang zu löschen. Vielleicht hilft das. Sonst werde ich mal deine Methode

Zitat Anfang:
Das Problem hab ich durch byteweises Befüllen des Buffers gelöst
Zitat Ende:

ausprobieren.

Übrigends hat mir "Venus" (Admin im Acces-Musik-db Forum) folgenden Link gegeben: http://www.dvb2k.de/cgi-bin/ultimatebb. ... 6&t=002651

Anscheinend kann man irgendwie diesen Stream mit der 1er Box (vielleicht auch mit der 2er) empfangen. Jedenfalls werde ich mich da weiterhin mit "Venus" kurzschliessen. Der weiss anscheinend mehr darüber.

mfg
quickmic

leth
Muxxi Dev
Beiträge: 2645
Registriert: Mo 04 Aug 2003, 16:22
Wohnort: Pflach in Tirol :-)
Kontaktdaten:

#18 Beitrag von leth » Do 22 Jul 2004, 18:40

Anscheinend kann man irgendwie diesen Stream mit der 1er Box (vielleicht auch mit der 2er) empfangen. Jedenfalls werde ich mich da weiterhin mit "Venus" kurzschliessen. Der weiss anscheinend mehr darüber.
Wenn Du dazu an Infos kommst, wäre ich dir sehr dankbar, wenn du mich auf dem Laufenden halten könntest. Wer weiß, vielleicht bau ich dann auch wieder was für MCE bzw Radio-Streaming. Vielleicht tun wir uns auch zusammen, wobei ich im Moment leider ziemlich wenig Zeit habe :-(

Cu leth
This is leth!

Meine Box: Nokia SAT 2xi Avia 500

quickmic
MCE Manager Dev
Beiträge: 28
Registriert: Do 22 Jul 2004, 12:13
Wohnort: Österreich

#19 Beitrag von quickmic » Do 22 Jul 2004, 18:46

Mach ich doch gerne. Aber jetzt klemm ich mich mal hinter die Aufnahmefunktion. Das krieg ich schon noch in den Griff.

mfg
quickmic

Venus
Einmal-Streamer
Einmal-Streamer
Beiträge: 1
Registriert: Fr 10 Okt 2003, 0:48

#20 Beitrag von Venus » Do 22 Jul 2004, 21:06

Hallo ihr zwei,
diese Daten sollen nur über 28,2 Ost Sky Digital gesendet werden :( was ich so gehört habe würden die Daten beim Uplink verloren gehen.

Deshalb habe ich mal die Schüssel dahin gedreht und eine 2er Box mir zugelegt ;)

Jetzt muss ich nur noch den Kanal finden, die Daten auslesen und in Playlisten umwandeln ;)

Jetzt noch mal eine Frage zu Record Code. Mit was für einer Basic 6.0 Version ist das geschrieben? Kann bei mir nicht mit der Winsock arbeiten:(

Gruß Venus

quickmic
MCE Manager Dev
Beiträge: 28
Registriert: Do 22 Jul 2004, 12:13
Wohnort: Österreich

#21 Beitrag von quickmic » Fr 23 Jul 2004, 5:54

Hi Venus,

Ich lad dir schnell mal die MSWINSCK.ocx hoch. Die kannst dann einfach miteinbinden und dann gehts (hoffentlich).

mfg
quickmic
Dateianhänge
MSWINSCK.zip
(53.89 KiB) 117-mal heruntergeladen

quickmic
MCE Manager Dev
Beiträge: 28
Registriert: Do 22 Jul 2004, 12:13
Wohnort: Österreich

#22 Beitrag von quickmic » Fr 23 Jul 2004, 16:12

So hab jetzt das "Problem" mit den Knacksern isoliert. Eigentlich wars ganz simpel. Ich hab zuerst mal mit udrec einen pes-stream aufgenommen und da war das ganz gleiche Problem. Dann hab ich mit udrec einen es-stream aufgenommen, und hatte keine Knackser.
Dann hab ich, ohne eine einzige Zeile in meinem Sourcecode zu ändern, wieder einen pes-stream mit meinem Prog aufgenommen und anschliessend die Header, manuell rausgelöscht. Jetzt hab ich keinen einzigen Knackser mehr! :D :!:
Jetzt muss ich nur noch alles ins Prog mitreinnehmen (Header weg, Songs abschneiden), dann hab ichs.

mfg
quickmic

leth
Muxxi Dev
Beiträge: 2645
Registriert: Mo 04 Aug 2003, 16:22
Wohnort: Pflach in Tirol :-)
Kontaktdaten:

#23 Beitrag von leth » Fr 23 Jul 2004, 16:41

Ich hab zuerst mal mit udrec einen pes-stream aufgenommen und da war das ganz gleiche Problem.
Komisch, die kann ich mit dem Media Player Classic immer ohne Knackser abspielen. Mit Winamp hab ich's jetzt nicht probiert, vielleicht liegt es also auch am Player.

Cu leth
This is leth!

Meine Box: Nokia SAT 2xi Avia 500

quickmic
MCE Manager Dev
Beiträge: 28
Registriert: Do 22 Jul 2004, 12:13
Wohnort: Österreich

#24 Beitrag von quickmic » Sa 24 Jul 2004, 9:17

Ja muss anscheinend am Player liegen. Ich hab mit Winamp getestet. Aber egal, Hauptsache es funktioniert. Übrigends, kannst du bestätigen, das die MCE-Header immer gleich ausschauen?? 00 00 01 C0... Dann müsste ich nämlich nicht die länge des Headers auslesen, da die ja dann konstant wären. Mir ist eigentlich noch nie ein anderer Header bei MCE untergekommen. Dann würde ich nämlich die "Abkürzung" nehmen. Andere Sender kommen für mich momentan eh nicht in Frage, da es nunmal nur für MCE Playlisten gibt/geben wird.

mfg
quickmic

leth
Muxxi Dev
Beiträge: 2645
Registriert: Mo 04 Aug 2003, 16:22
Wohnort: Pflach in Tirol :-)
Kontaktdaten:

#25 Beitrag von leth » Sa 24 Jul 2004, 10:23

Übrigends, kannst du bestätigen, das die MCE-Header immer gleich ausschauen?? 00 00 01 C0... Dann müsste ich nämlich nicht die länge des Headers auslesen, da die ja dann konstant wären. Mir ist eigentlich noch nie ein anderer Header bei MCE untergekommen. Dann würde ich nämlich die "Abkürzung" nehmen. Andere Sender kommen für mich momentan eh nicht in Frage, da es nunmal nur für MCE Playlisten gibt/geben wird.
Die Antwort steht auf Seite eins diese Threads:
00 00 01 c0 27 1f 82 80 0c 2d a6 a9 ae af ff ff ff ff ff ff ff
00 00 01 c0 27 1f 82 80 0f 2d a6 ab d4 8f ff ff ff ff ff ff ff ff ff ff
00 00 01 c0 27 1f 82 80 0c 2d a6 ad e8 13 ff ff ff ff ff ff ff
Sehen also nicht immer gleich aus, ausßerdem musst Du die Framelänge auswerten. Schau dir einfach meinen Code an, da ist schon alles drin.

Cu leth
This is leth!

Meine Box: Nokia SAT 2xi Avia 500

quickmic
MCE Manager Dev
Beiträge: 28
Registriert: Do 22 Jul 2004, 12:13
Wohnort: Österreich

#26 Beitrag von quickmic » Sa 24 Jul 2004, 11:48

Ok, da hab ich wohl nicht genau genug gelesen. Na dann muss ich doch die Headerlängen mitauswerten. Die Framelängen hätte ich sowieso ausgewertet. Wäre halt fein gewesen, wenn der konstant bliebe, da ich nämlich immer gerne den Weg des geringsten Widerstandes gehe. :D
Deinen Code hab, ich schon mal ein wenig durchgeschaut. Leider kann ich da nicht viel übernehmen, da VB6 und .Net doch recht unterschiedlich sind. Aber dein System, wie du schneidest, hab ich schon durchschaut. :lol:

mfg
quickmic

quickmic
MCE Manager Dev
Beiträge: 28
Registriert: Do 22 Jul 2004, 12:13
Wohnort: Österreich

#27 Beitrag von quickmic » Sa 24 Jul 2004, 22:20

Jetzt hab ich noch eine programmiertechnische Frage. Will eine Variable als String definieren. Die String-Variablen vertragen aber leider nur 8192 Zeichen/Byte. Weisst du vielleicht, wie man dieses Limit aushebelt??

mfg
quickmic

leth
Muxxi Dev
Beiträge: 2645
Registriert: Mo 04 Aug 2003, 16:22
Wohnort: Pflach in Tirol :-)
Kontaktdaten:

#28 Beitrag von leth » So 25 Jul 2004, 9:11

Jetzt hab ich noch eine programmiertechnische Frage. Will eine Variable als String definieren. Die String-Variablen vertragen aber leider nur 8192 Zeichen/Byte. Weisst du vielleicht, wie man dieses Limit aushebelt??
Wofür benötigst Du einen solangen String? Vielleicht ist ein Char Array besser geeignet?

Cu leth
This is leth!

Meine Box: Nokia SAT 2xi Avia 500

quickmic
MCE Manager Dev
Beiträge: 28
Registriert: Do 22 Jul 2004, 12:13
Wohnort: Österreich

#29 Beitrag von quickmic » So 25 Jul 2004, 11:13

Folgendes:
Ich bekomm ja meine Daten in die "inbuf-String-Variable" geliefert. Jetzt hab ich bereits eine Abfrage auf den Header drin. Wenn gefunden, dann Header analysieren. Soweit auch ok. Jetzt hab ich die Paketlänge herrausgefunden.
Dann Vergleich ich die Länge des "inbuf" ab dem Header, mit der Audio-Paketlänge. Wenn noch zu wenig Daten, vorhanden sind, soll er noch auf weitere "inbuf-Daten" warten und dann erst rausschreiben. Natürlich muss er dann eben den "alten inbuf" zwischenspeichern. Wollte eigentlich "buffer=buffer+inbuf" machen. Aber dann geht eben die Grösse des buffers über die 8192 hinaus, und er versaut mir alles. Mit einem Array hab ichs auch schon probiert.

ReDim b(0 To arraylen + l + 1)
Call CopyMemory(b(arraylen), ByVal inBuf, arraylen + l + 1)

Der call Befehl, zerlegt mir die Daten des "inbuf-strings" in ein array. Soweit so gut. Beim nächsten Durchlauf, soll er mir mein Array redimensionieren, dabei aber die alten Daten nicht löschen. Das geht auch noch, aber wenn ich dann wieder zum call-Befehl komme, krieg ich einen Speicherfehler und VB stürzt ab.

Dann hab ich noch eine 3.Variante probiert. Wenn Audio-Paket noch nicht vollständig, dann gleich auf Datei schreiben. Dabei die Anzahl der fehlenden Daten merken, und beim nächsten Durchlauf den Rest rausschreiben. Das ist aber die komplizierteste Varinate, die hast du aber in dem Code verwendet, wenn ichs richtig rausgelesen hab.

Was meinst du, welche der dieser Varianten die beste ist??
Was noch komisch ist, ich hab ja bereits ein Programm, mit dem er ein z.b. 30mb grosses Pes-file bereits einliest und richtig schneidet und die Header raus nimmt.

Das hat eben auf der Varinate mit dem "String" basiert, und dort ist es ohne Probleme möglich, einen grossen String zu bekommen.

Open "c:\1.hex" For Binary As #1
filesize = LOF(1)
ReDim arrByte(1 To filesize)
Get #1, , arrByte
Close 1

mpstring = StrConv(arrByte, vbUnicode)

Das 1.hex ist mein 30mb-pes-file. Das wird in das arrbyte gelegt. Dann wird das gesamte array in den mpstring konvertiert. Hier geht alles ohne Probleme, obwohl der String dann wirklich riesig ist.

Der eigentliche Grund, warum ich einen String haben will ist, dass ich einen String mit
temposition = InStr(schleife, mpstring, Chr(0) + Chr(0) + Chr(1))
auf "00 00 01" extrem schnell durchsuchen kann. Bei einem Array dauert dass viel viel länger.

mfg
quickmic

quickmic
MCE Manager Dev
Beiträge: 28
Registriert: Do 22 Jul 2004, 12:13
Wohnort: Österreich

#30 Beitrag von quickmic » So 25 Jul 2004, 16:18

Hat sich erledigt. Habe eine Datei als Buffer verwendet. Das funzt jetzt super :D

So häng noch den fertigen Code mit der Schnittfunktion an. Aber der sieht noch ziehmlich "hässlich" aus. Aber das ist mein nicht optimierter Test-Sourcecode. Aber der macht keinerlei Probleme. Ebenfalls ist die CPU-Auslastung extrem gering, aber es sind eben noch eine Menge Schönheitsfehler drin.

Da ich jetzt alles hab, was ich benötige, will ich mich abschliessend noch bei allen bedanken, die mir geholfen haben. Besonderen Dank vor allem an Leth :!:

Ps.:
Jetzt häng ich mich mal voll in die Playlisten rein :D

mfg
quickmic
Dateianhänge
Recording_Schneiden.zip
(3.78 KiB) 142-mal heruntergeladen

Antworten