|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jun 2004
Messaggi: 8
|
[JAVA]Leggere mp3 da socket
Salve,
sto tentando di leggere un file mp3 da un socket in connessione con un web server. Il file viene ricevuto correttamente, ma certi caratteri "sballano" e il file recuperato suona in modo stranissimo ( effetto "bit wash" ). Confrontando il file originale e la copia create dal mio "HTTP getter" certi caratteri risultano sballati. Sono sicuro che sia un problema di cofidica quindi... ma come fare? Ecco il ciclo di lettura da socket //lettura linea per linea, scrivo linea su file while ((line = rd.readLine()) != null) { buffer = buffer+line; //System.out.println(line); } out.write(buffer); out.close(); System.out.print("DONE!!!"); Avete qualche idea a riguardo? Grazie Ultima modifica di Cesco83 : 15-04-2006 alle 17:55. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Jan 2002
Città: Rimini
Messaggi: 1203
|
Quote:
La dimensione del buffer e' a tua scelta... io generalmente mi trovo bene sui 4096 bytes alla volta.
__________________
Quale parte di NO non hai capito? | MBP Retina Late 2013 - iPhone 6 64GB - iPad Air 64GB Fiero membro del BOFH club (Bastard Operators From Hell) |
|
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Jun 2004
Messaggi: 8
|
ok,
pero il BufferedReader del socket mi da come metodi di lettura solo String ReadLine(), char Read(), char Read(char buff[]), quindi nessun metodo che ritorna array di byte! come faccio? grazie! Francesco |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Sep 2001
Città: de_legato
Messaggi: 792
|
Quote:
__________________
---------------------------------------------- File reality.sys corrupted, Reboot Universe? Y/N ---------------------------------------------- |
|
![]() |
![]() |
![]() |
#5 |
Junior Member
Iscritto dal: Jun 2004
Messaggi: 8
|
Ho provato a usare un ByteBuffer e a leggere lo stream direttamente da socket.getInputStream.read(byte [] buffer), ma ancora niente, anzi - i due file ora sembrano molto piu' diversi visti dal blocco note...
Qualcuno sa come intervenire? Qualche esempio? Grazie. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jun 2001
Città: Alessandria (provincia)
Messaggi: 4772
|
Il BufferedReader lo lascerei perdere, visto che servirebbe per il testo e tu hai un binario
Read text from a character-input stream, buffering characters so as to provide for the efficient reading of characters, arrays, and lines Perché non provi con un semplice read (byte[]) della classe InputStream ?? |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Jul 2000
Città: Amsterdam
Messaggi: 217
|
Quote:
Cya! |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Ti serve la dimensione del buffer di dati da trasferire. Una volta che hai in mano quella, la lettura è piuttosto semplice:
Codice:
//Posta length la dimensione del file mp3 ByteBuffer data = ByteBuffer.allocate(length); ReadableByteChannel in = Channels.newChannel(inputStream); while(data.hasRemaining()) in.read(data); data.rewind(); Se desideri trasferire dati dal web e a meno che tu non deva fare un esercizio sui socket, puoi affidarti ad un oggetto URL: Codice:
URL addr = //un url URLConnection conn = addr.openConnection(); ByteBuffer data = ByteBuffer.allocate(conn.getContentLength()); ReadableByteChannel ch = Channels.newChannel(conn.getInputStream()); while(data.hasRemaining()) ch.read(data); data.rewind(); |
![]() |
![]() |
![]() |
#9 | |
Junior Member
Iscritto dal: Jun 2004
Messaggi: 8
|
Ciao a tutti, risolto!
ora riesco a leggere correttamente i bytes del file mp3. Grazie mille per il prontissimo e utilissimo aiuto! Quote:
Grazie mille a tutti! |
|
![]() |
![]() |
![]() |
#10 |
Junior Member
Iscritto dal: Mar 2009
Messaggi: 1
|
Grazie!
Ringrazioe PGI-BIS per la soluzione indicata che mi piace molto! Complimenti!
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:00.