File einlesen, splitten und rausschreiben => Problem (Encoding?)

  • Hi! Um mein Problem kurz zu beschreiben:

    Hab eine Datei, die implizit aus mehreren *.wav Dateien besteht.
    Wenn ich diese Datei nun in Java einlese, an bestimmten Punkten splitte und diese einzelnen Splits als neue *.wav-Dateien rausschreibe, so geht mir ein wenig Information verloren. Die waves hören sich dadurch etwas "scrambled" und nicht klar an. Ich weiß aber nicht woran das liegt :confused:

    Zum Glück hab ich eine (klare) Referenz-Ouput-Wave Datei. Wenn ich diese Datei in einem HEX-Editor öffne und mit dem äquivalenten Output-Pendant meines Programmes im HEX-Editor vergleiche, so stelle ich kleine Unterschiede fest:

    Alle HEX-Blöcke die im guten File "90" sind, sind in meinem Output "BF" (BF = ?)
    Auch alle "89"er im Guten sind in meinem "BF"
    "9B" im Guten ist ebenfalls "BF" bei meinem Output
    Das gilt auch für 91er, vielleicht auch noch für ein paar wenige andere.

    Sonst stimmt die Datei großteils überein, darum kann man sich meine waves ja auch noch anhören, man erkennt sie auch, sie sind halt etwas vermurkst durch diese ungleichen Sektoren.

    Kann mir jemand helfen, woran liegt das?
    Hier noch mein Source, ist nicht wirklich lang:

    Hab auch ein wenig mit Encodings bei der FETT-markierten Stelle rumgespielt, das verschlechtert die Sache aber eher noch.
    :confused: Jemand Rat parat :confused:

    Hätten uns Spiele wie Pac-Man in unserer Jugend beeinflusst, würden wir heute durch dunkle Räume irren, elektronische Musik hören und Pillen fressen.

  • Du solltest nicht das Byte[] in den String konvertieren und wieder zurueck. Alleine der Satz in der Java API Doc sollte alles sagen: The length of the new String is a function of the charset, and hence may not be equal to the length of the byte array.

    Such lieber haendisch nach dem "RIFF4" Pattern. Ne andere Idee haett ich jetzt auch ned.


  • Naja, es gibt ja String-Konstruktoren, bei denen man die Codierung angeben kann, damit kann man spielen. Und dann bei getBytes das selbe Charset angeben nicht vergessen... (Aber ja, rein vom Konzept her ist es inelegant, das mit String zu machen. Gut, es ist schon inelegant, das in Java zu machen...)

    *plantsch*

  • bei getBytes das selbe Charset angeben nicht vergessen...

    Ineleganz hin oder her, DAS war mein Fehler!
    Jetzt klappts :)

    Danke euch!

    Hätten uns Spiele wie Pac-Man in unserer Jugend beeinflusst, würden wir heute durch dunkle Räume irren, elektronische Musik hören und Pillen fressen.

Jetzt mitmachen!

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