Desidero ottenere il file audio dall'URL fornito nel codice e riprodurlo (È nel formato mp3
). Ho esaminato alcune domande di Stack Overflow relative a questo problema, e tutte hanno detto di prendere mp3plugin.jar
così ho fatto.Impossibile ottenere il flusso di input audio dal flusso di input
In Eclipse, l'ho aggiunto come un jar esterno (poiché si trova all'interno della cartella Download, non è sicuro che sia il posto migliore) in Configure Build Path. Mi sono imbattuto di nuovo ed è ancora mi dà questo errore:
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input stream
at javax.sound.sampled.AudioSystem.getAudioInputStream(Unknown Source)
at Starter.main(Starter.java:21)
Ecco il codice:
public class Starter {
public static void main(String[] args) {
AudioInputStream din = null;
try {
URL url = new URL("http://c5.rbxcdn.com/2e6d33a5b3b1d8f250c395816ff9f145");
HttpURLConnection httpcon = (HttpURLConnection) url.openConnection();
InputStream bufferedIn = new BufferedInputStream(httpcon.getInputStream());
AudioInputStream in = AudioSystem.getAudioInputStream(bufferedIn);
AudioFormat baseFormat = in.getFormat();
AudioFormat decodedFormat = new AudioFormat(
AudioFormat.Encoding.PCM_SIGNED,
baseFormat.getSampleRate(), 16, baseFormat.getChannels(),
baseFormat.getChannels() * 2, baseFormat.getSampleRate(),
false);
din = AudioSystem.getAudioInputStream(decodedFormat, in);
DataLine.Info info = new DataLine.Info(SourceDataLine.class, decodedFormat);
SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
if(line != null) {
line.open(decodedFormat);
byte[] data = new byte[4096];
// Start
line.start();
int nBytesRead;
while ((nBytesRead = din.read(data, 0, data.length)) != -1) {
line.write(data, 0, nBytesRead);
}
// Stop
line.drain();
line.stop();
line.close();
din.close();
}
}
catch(Exception e) {
e.printStackTrace();
}
finally {
if(din != null) {
try { din.close(); } catch(IOException e) { }
}
}
}
}
Avete mai controllato quello che stai leggendo? Si potrebbe trattare una pagina di errore html come MP3. – Marged
Quando ho inserito l'URL sul mio Chrome, ho visto 2 righe nella scheda di rete. Potrebbe essere necessario un numero maggiore di intestazioni per fornire il flusso effettivo – Gavriel
Come faccio a ottenere il supporto multimediale di questo? (Dice documento e media). Ho sentito che jSoup può aiutarti a gestire alcuni comandi HTML in java. –