2

У меня проблема с воспроизведением онлайн mp3. Я использую последнюю версию javazoom jlayer и basicplayer. Вот исключение:

Caused by: javazoom.jlgui.basicplayer.BasicPlayerException: java.io.EOFException
    at javazoom.jlgui.basicplayer.BasicPlayer.initAudioInputStream(Unknown Source)
    at javazoom.jlgui.basicplayer.BasicPlayer.open(Unknown Source)
    ... 12 more
Caused by: java.io.EOFException
    at java.io.DataInputStream.readInt(DataInputStream.java:375)
    at com.sun.media.sound.WaveFileReader.getFMT(WaveFileReader.java:244)
    at com.sun.media.sound.WaveFileReader.getAudioFileFormat(WaveFileReader.java:85)
    at javax.sound.sampled.AudioSystem.getAudioFileFormat(AudioSystem.java:985)
    at javazoom.jlgui.basicplayer.BasicPlayer.initAudioInputStream(Unknown Source)
    ... 15 more

Моя Java 1.6.0_16.

Некоторые файлы не могут быть воспроизведены через Интернет. У меня есть набор mp3-файлов, играющих один за другим. Случайно один mp3 не работает, бросая выше исключения. Некоторые mp3-файлы могут быть воспроизведены путем повторного вызова метода play(), если базовый плеер javazoom, но другие никогда не могут быть воспроизведены онлайн.

Мне удалось найти этот пост, но я сомневаюсь, что это действительно относится к моей версии DirectX или что-то.

Мохсен

3 ответа3

0

Если вы используете потоковую передачу по HTTP, кажется, что веб-сервер немедленно закрывает соединение, не доставляя никаких данных. Некоторые серверы, доставляющие MP3 по HTTP, оценивают заголовки запроса, пытаясь предотвратить захват инструментами мультимедийного потока, и, например, доставляют контент только в том случае, если заголовки запроса соответствуют известному медиапроигрывателю. Если у вас есть инструмент для прослушивания сети и вы знаете медиаплеер, который работает с сервером, с которого вы пытаетесь получить контент, вы, конечно, можете установить заголовки HTTP-запросов в вашей Java-программе, чтобы сервер думал, что вы используете обычный медиаплеер.

0

Можете ли вы скачать файл по этому URL?

EOF это "конец файла". Он теряет поток, или там просто нет файла, чтобы получить.

-1

У меня были похожие проблемы, когда потоки ввода или вывода не управлялись должным образом ... Вы упаковываете все в try/catch/finally и правильно закрываете все потоки?

Некоторые могут работать, если вам повезет, и буфер получит весь контент.

Вы также можете попробовать очистить (.flush ()) входной поток.

Надеюсь это поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .