Я хочу получить звуковой файл по URL-адресу, указанному в коде, и воспроизвести его (он находится в формате mp3
). Я просмотрел некоторые вопросы о переполнении стека, связанные с этой проблемой, и все сказали, что получили mp3plugin.jar
, поэтому я это сделал.Не удалось получить поток аудиовхода из потока ввода
В Eclipse я добавил его как внешнюю банку (поскольку он находится внутри папки «Мои загрузки», не уверен, что это лучшее место для него) в разделе «Настроить путь сборки». Я запустил его снова и она по-прежнему дает мне эту ошибку:
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)
Вот код:
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) { }
}
}
}
}
Вы когда-нибудь проверил, что вы читаете? Возможно, вы рассматриваете страницу html error как MP3. – Marged
Когда я ввел этот url в свой Chrome, я увидел 2 строки на вкладке сети. Может понадобиться еще несколько заголовков, чтобы дать вам фактический поток. – Gavriel
. Как я могу получить медиа-часть этого? (В нем говорится документ и средства массовой информации). Я слышал, что jSoup может помочь справиться с обработкой html в java. –