2010-05-07 5 views
5

In meiner Anwendung erben wir eine javastreamingaudio-Klasse aus dem freeTTS-Paket und umgehen dann die write-Methode, die ein Array von Bytes an die SourceDataLine zur Audioverarbeitung sendet. Anstatt in die Datenleitung zu schreiben, schreibe ich diese und nachfolgende Byte-Arrays in einen Puffer, den ich dann in meine Klasse bringe und versuche, in Ton zu verarbeiten. Meine Anwendungsprozesse klingen als Float-Arrays, also konvertiere ich in Float und versuche zu verarbeiten, bekomme aber immer statischen Sound zurück.Konvertieren von Rohbytes in Audioton

Ich bin sicher, das ist der Weg zu gehen, aber ich vermisse etwas auf dem Weg. Ich weiß, dass Sound als Frames verarbeitet wird und jeder Frame eine Gruppe von Bytes ist, also muss ich in meiner Anwendung die Bytes irgendwie in Frames verarbeiten. Betrachte ich das richtig? Vielen Dank im Voraus für jede Hilfe.

Antwort

12

Zuerst möchten Sie Ihr Byte-Array in einen InputStream konvertieren. Dann erstellen Sie einen AudioInputStream aus diesem Inputstream mit Ihrem AudioSystem. Sobald Sie Ihren Audio-Stream haben, haben Sie im Wesentlichen Audio und Sie können es in die Datei schreiben oder tun, was auch immer Sie möchten.

ByteArrayInputStream oInstream = new ByteArrayInputStream(ayAudioData); 
AudioInputStream oAIS = AudioSystem.getAudioInputStream(oInstream); 
+2

Hatte bereits herausgefunden, aber danke für Ihre Lösung, wie es ist, was ich getan habe. Hoffentlich wird es jemandem irgendwann einmal helfen. –