Как проиграть аудио запись из стриминга?

Рейтинг: 0Ответов: 1Опубликовано: 07.09.2014

Как проиграть аудио запись из стриминга?

Код :

String stringURL = "http://интернетРадио/радио_128"; // Тут рабочая ссылка
InputStream is = new URL(stringURL).openStream();

AudioInputStream sound = null;
try {
    sound = AudioSystem.getAudioInputStream(is);        
    sound.read();

} catch(Exception e) {
        System.out.println("Error: " + e);
    }

Ошибка :

could not get audio input stream from input stream

Ответы

▲ 3

Кто виноват?

Как верно подметил @Nofate ♦, по ссылке стрим в формате MPEG. В AudioSystem есть метод getAudioFileTypes(), который возвращает (кривой вольный перевод документации):

Массив типов файлов, в которых система умеет записывать.

AudioFileFormat.Type[] types = AudioSystem.getAudioFileTypes();
for (AudioFileFormat.Type type : types) {
    System.out.println(type);
}

В моём случае вывод был такой:

WAVE
AU
AIFF

Как видно, поддержки MPEG нет. В этом и причина ошибки.

Если бы автор выписал ошибку полностью

Error: javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input stream

то можно было бы сразу увидеть UnsupportedAudioFileException.


Что делать?

Проиграть MPEG из стриминга можно, например, с помощью библиотеки JLayer следующим образом:

import java.io.InputStream;
import java.net.URL;
import javazoom.jl.player.*;

public class Main {

    public static void main(String[] args) throws Exception {

        String stringURL = "http://89.208.99.16:8088/zvezda_128";
        InputStream is = new URL(stringURL).openStream();

        Player player = new Player(is);
        player.play();
    }
}

Документация - JLayer javadoc