MCE-Schnittfunktion

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

MCE-Schnittfunktion

#1 Beitrag von quickmic » Do 22 Jul 2004, 12:30

Hi Leth,

Hab jetzt hier mal einen Thread aufgemacht, um die Diskussion vom Tuxboxforum weiterzuführen. Für alle anderen die vielleicht auch neugierig sind worum es geht, geb ich mal den Link an:
http://forum.tuxbox.org/forum/viewtopic.php?t=32098

mfg
quickmic

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

#2 Beitrag von leth » Do 22 Jul 2004, 13:23

Hy quickmic,

willkommen im Forum zu Jack und seinen Tools :-)

Zuletzt hattest Du geschrieben, dass es knackser während der Aufnahme gibt. Wie hast Du den Ablauf denn nun geändert?

Anbei häng ich dir mal die von mir geschriebene Klasse rein. Ist zwar in VB.NET geschrieben, sollte aber trotzdem verständlich sein. Bei Fragen zum code, einfach den entsprechenden Teil posten, dann kann ich's sicher erklären.

Cu leth
Dateianhänge
Radrec.zip
(2.77 KiB) 147-mal heruntergeladen
This is leth!

Meine Box: Nokia SAT 2xi Avia 500

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

#3 Beitrag von leth » Do 22 Jul 2004, 13:41

Da Fällt mir noch was ein.

Aus der oben geposteten Klasse kannst Du übrigens alles vergessen, was mit MyWriter zu tun hat:

Code: Alles auswählen

    Private MyWriter As StreamWriter

.
.
.

        Dim MyStream As FileStream = New FileStream(BaseName & ".txt", FileMode.Create)

        MyWriter = New StreamWriter(MyStream)
Dieser StreamWriter dient dazu in einer TXT Datei die PES Header sowie die Framelängen mitzuloggen um eventuelle Fehler aufzuspüren. Sowas sieht dann zB so aus:

Code: Alles auswählen

00 00 01 c0 27 1f 82 80 0c 2d a5 45 1a 5b ff ff ff ff ff ff ff 9b 90 ba 7d 10000 10015
00 00 01 c0 27 1f 82 80 0c 2d a5 47 40 3d ff ff ff ff ff ff ff 07 ca a7 6f 10000 10015
00 00 01 c0 27 1f 82 80 0c 2d a5 49 66 1d ff ff ff ff ff ff ff 70 0e a3 4e 10000 10015
00 00 01 c0 27 1f 82 80 0c 2d a5 4b 8b fd ff ff ff ff ff ff ff 6a 14 ed 75 10000 10015
00 00 01 c0 27 1f 82 80 0c 2d a5 4d b1 df ff ff ff ff ff ff ff 69 53 c1 4c 10000 10015
00 00 01 c0 27 1f 82 80 0c 2d a5 4f d7 bf ff ff ff ff ff ff ff 69 1a e4 d4 10000 10015
00 00 01 c0 27 1f 82 80 0c 2d a5 51 fd 9f ff ff ff ff ff ff ff f5 5b 86 40 10000 10015
00 00 01 c0 27 1f 82 80 0c 2d a5 55 23 81 ff ff ff ff ff ff ff 5a 85 09 c2 10000 10015
00 00 01 c0 27 1f 82 80 0c 2d a5 57 49 61 ff ff ff ff ff ff ff 87 7a 8a bd 10000 10015
00 00 01 c0 27 1f 82 80 0c 2d a5 59 6f 41 ff ff ff ff ff ff ff 21 b7 cd d6 10000 10015
00 00 01 c0 27 1f 82 80 0c 2d a5 5b 95 23 ff ff ff ff ff ff ff 8d 3a ed 70 10000 10015
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

#4 Beitrag von quickmic » Do 22 Jul 2004, 13:55

Hatte leider noch keine Zeit deine Sourcen genauer zu betrachten (Bin grad in der Arbeit). Werd mich da aber morgen mal reindenken. Anbei schick ich dir mal meinen VB6-Code. Vielleicht hast du, oder jemand anders Zeit, das kurz anzutesten und dann bescheid zu geben, ob auch bei euch Kanckser drin sind.

Ps. Der Code ist für die Aufnahme von Alternative Rock angepasst und hat noch keine Schnittfunktion drinnen.

mfg
quickmic
Dateianhänge
Recording.rar
(3.11 KiB) 140-mal heruntergeladen

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

#5 Beitrag von leth » Do 22 Jul 2004, 13:58

Sorry, bin auch auf der Arbeit und kann RAR-Dateien hier nicht öffnen. ZIP wäre kein Problem. Vielleicht kannst du es noch schnell zippen. Bin nämlich noch bis 20:00 Uhr auf der Arbeit und hab hier im Moment nicht viel zu tun :-)

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

#6 Beitrag von quickmic » Do 22 Jul 2004, 14:07

Ok hier im ZIP-Format. Hast du denn deine Box bei der Arbeit dabei :lol: :lol:

mfg
quickmic
Dateianhänge
Recording.zip
(3.33 KiB) 133-mal heruntergeladen

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

#7 Beitrag von leth » Do 22 Jul 2004, 14:11

Hast du denn deine Box bei der Arbeit dabei
Nein, hab aber auch kein VB6 zu Hause und kann deine Sourcen somit auch nicht kompilieren. Ich versuch einfach mal einen Code durchzulesen, vielleicht fällt mir ja was auf :-)

Cu leth
This is leth!

Meine Box: Nokia SAT 2xi Avia 500

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

#8 Beitrag von leth » Do 22 Jul 2004, 14:17

Knackst es eigentlich nur ab und zu, oder klingt die komplette Datei etwas 'komisch'? Vielleicht kannst Du ja auch mal eine aufgenommene Datei oder die kompilierte EXE posten.

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

#9 Beitrag von quickmic » Do 22 Jul 2004, 14:22

Schick dir noch eine Hörprobe. Übrigends, bitte erwarte von meinem Code nicht allzuviel, da ist wirklich nur das nötigste drinnen.

EDIT://
Übrigends kannst du den VB6-Code in einen .NET-Code konvertieren. Einfach die Project1.vbp in .NET öffnen. Dann geht alles automatisch. Hab das @home getestet.
EDIT://

mfg
quickmic
Dateianhänge
Stream.zip
(311.84 KiB) 144-mal heruntergeladen

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

#10 Beitrag von leth » Do 22 Jul 2004, 14:32

Übrigends kannst du den VB6-Code in einen .NET-Code konvertieren. Einfach die Project1.vbp in .NET öffnen. Dann geht alles automatisch. Hab das @home getestet.
Stimmt, daran hatte ich garnicht gedacht. Benötige ich dafür aber nicht die von dir eingebundene MSWINSCK.OCX?

Egal, werde es zu Hause mal ausprobieren. Übrigens, wenn Du schon .NET hast, dann versuchs doch gleich damit. Anfangs hatte ich damit zwar meine Schwierigkeiten, mittlerweilen möchte ich aber nichts anderes mehr verwenden :-)

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

#11 Beitrag von quickmic » Do 22 Jul 2004, 14:42

Das Problem ist nur, dass ich "MCE-Manager" schon in VB6 geschrieben hab, da ich zu dieser Zeit noch keine .NET Version hatte. Und wenn ich da eine Umkonvertierung durchführe, bekomm ich einen ganzen haufen Fehlermeldungen. z.b. den Befehl "lenb" gibts in .NET nicht mehr und das kann leider auch nicht automatisch konvertiert werden. Aber bei so kleinen Codes ist das normalerweise kein Problem.

zur Erklärung..
Diese Recording-Funktion soll in "MCE-Manager" integriert werden. Früher hab ich den Streamreader für die DBox1, oder das MCE-Plugin für die DVB-S Karte zur Aufnahme verwendet.

mfg
quickmic

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

#12 Beitrag von leth » Do 22 Jul 2004, 14:52

Hab mir die Stream.mp2 mal angehört und auch angesehen. Was sofort auffällt ist, dass Du den ersten Buffer nicht in die Datei schreiben solltest :-)

Das ist nämlich folgendes:
HTTP/1.1 200 OK
Server: d-Box network

Außerdem versuch mal einen größeren Buffer als 1024 Byte. Ein Frame hat aus MCE meist eine länge von 10.000 Bytes, daher verwende ich einen Buffer von 64 Kb größe. So sind auch nicht so viele Schreibvorgänge auf die HD notwendig. Das kann das Knack-Problem schon mal bessern.

Aus deinem Code hab ich gesehen, dass das Winsock Steuerelement immer den kompletten Buffer zurück liefert. Muss mir die Stream.mp2 Datei mal in einem HEX-Editor ansehen, danach kann ich vielleicht mehr sagen.

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

#13 Beitrag von quickmic » Do 22 Jul 2004, 14:59

Da hast du recht, der 1.Buffer gehört eigentlich nicht rein. Das dürfte aber nur Kosmetik sein. Ausserdem muss das Stream-file sowieso beim Liedanfang (FF FD A0) geschnitten werden. Spätestens dann ist der 1.Buffer weg. Das mit dem Buffer (1024) ist aber ein heisser Tip. Den hatte ich nämlich auch im Verdacht. Da werd ich etwas rumexperimentiern.

Ps.: Ist ja wie im Chat :lol:

mfg
quickmic

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

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

Ausserdem muss das Stream-file sowieso beim Liedanfang (FF FD A0) geschnitten werden.
Klar, allerdings darfst Du nicht wild nach dieser Bytefolge suchen, da diese in dem von dir geposteten Stück bereits über 30 Mal vorkommt, aber eigentlich kein neues Lied anfängt. Diese Bytefolge muss daher immer am Anfang eines Frames stehen, also direkt nach dem PES Header.

Weißt Du auch was FF FD A0 bedeutet?

In diesen Bytes steckt

1111 1111 1111 - das Syncword
1 - für MPEG Audio
10 - für Layer II
1 - dass keine Daten öfters vorkommen
1010 - für 192 kbit/s bei Layer II
00 - für 44,1 kHz
0 - für das Padding-Bit
0 - für das Private-Bit

Dir sollte gleich auffallen, dass die Songs mit 44,1 kHz (00) ausgestrahlt werden, wo fast alle anderen Sender 48 kHz (01) verwenden.

Um diese Bytefolge zu finden muss man also erst mal nach einem PES Header suchen. Der erste in deinem Beispiel sieht folgendermaßen aus:

00 00 01 c0 27 1f 82 80 0c 2d b9 81 cb af ff ff ff ff ff ff ff

dabei gibt 00 00 01 c0 den Start des Headers an. Man muss aber aufpassen, dass lt. Norm der Bereich von 1100 0000 bis 1101 1111 für Audio reserviert wurde. So kann ein Header also im Bereich von C0 bis DF liegen.

Danach kommt in diesem Fall 27 1f, was die Packetlänge angibt. Dabei wird bereits an dem auf 27 1f folgenden Byte gezählt. Diese Paketlänge ist sehr wichtig, da man das Ende eines Songs an dieser Länge erkennen kann, da der letzte Frame eines Titels bei MCE immer kürzer als der vorhergehende ist, wobei der darauffolgende mit FF FD A0 beginnen muss. Es können nämlich auch mal längere Frames während eines Liedes vorkommen.

Wichtig ist dann noch 0c, denn dies gibt an, wieviel darauffolgende Bytes noch zum PES Header gehören. Hier ein Beispiel:

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

Um MP2 zu erhalten muss man also nur die Framelänge auslesen, danach an Hand des einzelnen Bytes (c0, cf...) die Restlänge des Headers ermitteln um den Start der ES Daten zu finden.

Cu leth

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

#15 Beitrag von quickmic » Do 22 Jul 2004, 18:00

Die genaue Bedeutung wusste ich ehrlich gesagt nicht. Aber das mir dem Header schon. 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. Das einzige was mir eigentlich noch fehlt, ist eine, "ohne Knackser" funzende, Aufnahme.
Jetzt aber noch was anderes. Hab grad erfahren, das es anscheinend nix wird mit EPG von Sky-Italia, da die anscheinend doch keine Playlisten ausstrahlen (hat mir ein anderer User mitgeteilt). Das ist wirklich fies. :(

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??

Ps.: Das mit dem mp2-Umwandeln (danke für die Infos) kommt "auf meiner Liste" gleich nach einer korrekt funzenden Aufnahme-Funktion.

mfg
quickmic

Antworten