Decodierung von Mp3-byte[]

Daniel55

Mitglied
Hallo liebe Experten, ich bin noch Schüler und programmiere gerne hobbymäßig in Java. Habe mich nun einige Zeit mit Java auseinadergesetzt und versuche mich gereade an einem Musik-Stremig Projekt über das (wlan)netzwerk.

bisher funktioniert alles hervorragend mit .wav-Datein. bei den Wav-Dateien kam ich ohne externe Bibliotheken aus und konnte die Daten entweder mit:

Java:
Socket serverSocket = new Socket(serverIP, port);
OutputStream outStream = serverSocket.getOutputStream();
outStream.write(data, 0, data.length);
outStream.flush();
ServerSocket.close();

senden und dann abspielen :
Java:
clip = AudioSystem.getClip();
clip.open(audioFormat, musicData, 0, musicData.length);
clip.start();

oder "streamen über":
Java:
int bufferSize = 1024;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte byteBuffer[] = new byte[bufferSize];
for(int i = 0; i != -1; i = CSSocket.getInputStream().read(byteBuffer)) {
    System.out.println("Receiving Byte: " + baos.size());
    baos.write(byteBuffer, 0, byteBuffer.length);
    line.write(byteBuffer, 0, byteBuffer.length);
}

Wie gesagt, hat das sehr gut mit .wav dateien geklappt, beim Versuch eine .mp3 Datei abzuspielen höre ich nur rauschen. Ich habe etwas im Netz gesucht und bin auf javazoom.net auf "JLayer" gestoßen der sehr nützliche fuktionen zum aspielen/decodieren von .mp3 Dateien bietet. Habe es auch hinbekommen mithilfe des JLayers .mp3-Datein abzuspielen, beim streamen komme ich aber leider nicht weiter.

Es wäre natürlich sehr gut, wenn es eine funktion gäbe mit der man den .mp3-byte[] in ein .wav-byte[] umwandeln könnte und den dann per line.write(); abspielen könnte oder noch besser den .map3-byte[] dirket abspielen. Die Convertierung sollte auch bezüglich der Verzögerung keine Probleme machen, denn der buffer ist ledeglich byte[1024] groß.

Mit freundlichen Grüßen, Daniel
 

tagedieb

Top Contributor
Wo liegt den genau das Problem?
Ein MP3 direkt aus einem InputStream abzuspielen funktioniert mit der JLayer Library eigentlich problemlos.

Java:
		InputStream is = ...
		Player p = new Player(is);
		p.play();
 

Daniel55

Mitglied
Wo liegt den genau das Problem?
Ein MP3 direkt aus einem InputStream abzuspielen funktioniert mit der JLayer Library eigentlich problemlos.

Java:
InputStream is = ...
Player p = new Player(is);
p.play();

Dies klappt auch problemlos, ich möchte aber einen "Stream" decodieren und diesen dann an die Audioline schicken zum abspielen, schematisch:

mp3-Datei -> in byte[] laden -> über einen Socket -> zum ServerSocket -> der erhaltene byte[] ist nun am Server, weiter weiß ich nicht. mit .wav datein habe ich es dann so gemacht:
Java:
for(int i = 0; i != -1; i = CSSocket.getInputStream().read(byteBuffer)) {
    //System.out.println("Receiving Byte: " + baos.size());
    line.write(byteBuffer, 0, byteBuffer.length);
}
Dies geht nun nicht, weil die Bytes die angekommen sind, nicht decodiert sind. Meine Frage ist nun, wie ich diese einzelnen (gebufferten) Bytes decodieren und als .wav mit:
Java:
line.write(byteBuffer, 0, byteBuffer.length);
abspielen kann.

Ich bin auf der suche nach etwas wie:
Java:
public byte[] wav_bytes(byte[] mp3_bytes){
return mp3_bytes.toWavBytes();
}
-> wenn das so einfach gehen würde :toll:
 

tagedieb

Top Contributor

Daniel55

Mitglied
Meines Wissens bietet das JDK nur Support fuer WAV, AU, AIF und SND Dateien.

Deinen ServerSocketStream kannst du direkt mit JLayer abspielen kannst. Was spricht gegen diese Loesung?
Ansonsten muss du dir ein API suchen, welches MP3 nach konvertiert. https://code.google.com/p/mp3transform/source/browse/trunk/mp3/src/main/org/mp3transform/wav/WavConverter.java

Java:
Player p = new Player(CSSocket.getInputStream());
p.play();

Vielen Dank, ich habe den Wald vor lauter bäumen nicht gesehen... 2 simple Zeilen, klappt wunderbar :toll:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S BASE64 DECODIERUNG Allgemeine Java-Themen 6
D Probleme bei der decodierung von texten Allgemeine Java-Themen 5
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
Encera Größe eines Objektes in Byte berechnen Allgemeine Java-Themen 2
M Optimierung einer Methode (byte-Geraffel) Allgemeine Java-Themen 2
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
Thallius unsigned byte Allgemeine Java-Themen 18
N Byte Array in Java "dekomprimieren" Allgemeine Java-Themen 3
kodela Datentypen byte als unsigned interpretieren Allgemeine Java-Themen 23
W String -> byte[] -> String - Sieht jemand was ich nicht sehe? Allgemeine Java-Themen 10
TheWhiteShadow 2D-Grafik GIF Library mit byte output Allgemeine Java-Themen 10
K Data Konverter - Probleme mit Byte[] Kodierung Allgemeine Java-Themen 3
kodela Byte Order Mark (BOM) bei readLine() ignorieren Allgemeine Java-Themen 5
A Byte zu String Allgemeine Java-Themen 4
RalleYTN Datentypen Unsignierter Byte zum signierten Byte Allgemeine Java-Themen 2
X Datentypen Byte geht nicht höher als 126 auch nicht mit casten? Allgemeine Java-Themen 22
R Byte Array Zeichensuche Allgemeine Java-Themen 6
M Null byte in verschiedenen charsets Allgemeine Java-Themen 2
S Byte Array welches in Laufzeit aufgelöst wird // Objekt Array Allgemeine Java-Themen 3
O Byte-Array zu String Allgemeine Java-Themen 7
A ByteBuffer.get(byte[] dst,int offset,int length) Allgemeine Java-Themen 2
A RandomAccessFile.read(byte[] b) Allgemeine Java-Themen 9
P Datentypen Warum überhaupt Byte ? Allgemeine Java-Themen 12
P Datentypen String-Daten zu Byte-Zahlen konvertieren - Komme nicht weiter nach vielem versuchen :-/ Allgemeine Java-Themen 7
E Byte zu String & umgekehrt Allgemeine Java-Themen 3
B BufferedWriter in InputStream oder Zeichen-Stream in Byte-Stream Allgemeine Java-Themen 5
M Chart per byte[] in JSP anzeigen Allgemeine Java-Themen 4
E int in byte Allgemeine Java-Themen 6
R ArrayList byte[] abspeichern Allgemeine Java-Themen 4
S byte [] in string und zurück konvertieren Allgemeine Java-Themen 2
G byte ? : Allgemeine Java-Themen 7
E Byte-Array to String: Zeichenkaputt Allgemeine Java-Themen 11
R In einem Byte-Array nach einer gewissen Zahlenfolge suchen Allgemeine Java-Themen 7
hdi Speicherbelegung byte, short, int Allgemeine Java-Themen 8
J byte - hex - byte.. casten Allgemeine Java-Themen 8
R byte[] to String Konvertieren Allgemeine Java-Themen 14
A Input/Output Buffered Image zu Byte Array und zurück konvertieren Allgemeine Java-Themen 4
M byte array splitten Allgemeine Java-Themen 3
J Hex-String zu byte transformieren Allgemeine Java-Themen 7
T Zu doof für byte-Umrechnung ... Allgemeine Java-Themen 3
W CRC32 aus byte array Allgemeine Java-Themen 5
F byte[] aus einem BufferedImage Allgemeine Java-Themen 3
L byte -> byte[1] -> byte Allgemeine Java-Themen 2
P Einzelne Bits in einem Byte-Array setzen Allgemeine Java-Themen 2
Kr0e Synchronisieren: boolean,byte,char ? Allgemeine Java-Themen 2
S Überprüfung/Parsen eines Byte-Arrays Allgemeine Java-Themen 9
Semox Byte-Manipulation eines Bildes Allgemeine Java-Themen 7
Meldanor For-Schleifen - byte statt int? Allgemeine Java-Themen 11
C int zu byte cast - verständnis Allgemeine Java-Themen 3
R int to byte[] Array Allgemeine Java-Themen 4
MQue byte[] Array to Integer Allgemeine Java-Themen 4
MQue Byte to Int convertieren Allgemeine Java-Themen 2
R Double Werte aus byte[] auslesen Allgemeine Java-Themen 5
W Verwendung von byte Allgemeine Java-Themen 9
G zu lange Byte code dateien Allgemeine Java-Themen 6
G String in byte- Array Allgemeine Java-Themen 3
E Byte [] nach hex, dann nach dec Allgemeine Java-Themen 2
A Performance: byte[] in byte[][][] konvertieren Allgemeine Java-Themen 2
G 2 x byte zusammenkopieren Allgemeine Java-Themen 7
G byte nach int Allgemeine Java-Themen 3
foobar Object to byte[] ohne Serializable Allgemeine Java-Themen 6
data89 Die Größe eines Strings in Byte berechnen? Allgemeine Java-Themen 12
G Byte- List mit einem Iterator durchlaufen Allgemeine Java-Themen 5
W Konflikt byte->int, in.read->arraycopy Allgemeine Java-Themen 7
T "unsigned" byte[] -> BigInteger Allgemeine Java-Themen 2
F byte in hex-String oder: Wer hat in Mathe aufgepasst Allgemeine Java-Themen 3
T Socket Server Anwendung - Empfang eines Byte-Arrays Allgemeine Java-Themen 7
J NumberFormatException bei String->byte[] Allgemeine Java-Themen 12
ARadauer Blob aus byte Array erstellen? Allgemeine Java-Themen 3
T Object -> byte[] Allgemeine Java-Themen 5
G Byte[] zeichenweise lesen Allgemeine Java-Themen 4
G byte[] mit Strings füllen Allgemeine Java-Themen 2
B int -> byte Allgemeine Java-Themen 2
G file --> byte[] Allgemeine Java-Themen 7
E Problem beim Dateien kodieren ("Byte = Byte +1") Allgemeine Java-Themen 3
I String -> byte[] -> String Allgemeine Java-Themen 2
D byte nach integer? Allgemeine Java-Themen 4
MQue int in byte Allgemeine Java-Themen 18
G Maximalgröße von byte[] buffer Allgemeine Java-Themen 7
E String -> byte[] Allgemeine Java-Themen 6
C Byte[] to String Allgemeine Java-Themen 7
D datei in byte[]-array schreiben Allgemeine Java-Themen 6
D byte[] problem Allgemeine Java-Themen 3
MQue ArrayList in ein byte- Array Allgemeine Java-Themen 7
B ein spezielles Byte-Array sortieren Allgemeine Java-Themen 11
T OutputStream - Event bei Byte-Fluss Allgemeine Java-Themen 5
J byte-Array in Hashmap speichern? Allgemeine Java-Themen 3
S Problem beim Einlesen von byte-werten aus datei Allgemeine Java-Themen 2
J byte-Array als String übers http schicken Allgemeine Java-Themen 8
F List<String> zu byte[] Allgemeine Java-Themen 7
L byte vs. int Allgemeine Java-Themen 6
G Umwandlung Byte in Integer Allgemeine Java-Themen 12
N Byte-Code entschlüsseln (Bitmasks?) Allgemeine Java-Themen 3
R byte - string? Allgemeine Java-Themen 10
R Stream Byte für Byte durchgehen Allgemeine Java-Themen 5
S java.io.InputStream.read(byte[] b) überschreiben Allgemeine Java-Themen 33
B boolean array = byte array (platzverbrauch) Allgemeine Java-Themen 6
L byte[] to int Allgemeine Java-Themen 2
M Vector zu einem byte[] Allgemeine Java-Themen 5
C Byte Array aus Datei erzeugen Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben