Итак, у меня есть Java-приложение, которое я хочу превратить в исполняемый jar-файл. Я использую JMF в этом приложении, и я не могу заставить звуковые файлы работать правильно...
Я создаю банку, используя
jar cvfm jarname.jar manifest.txt *.class *.gif *.wav
Итак, все звуковые файлы помещаются в банку, и в коде я создаю проигрыватели, используя
Player player = Manager.createPlayer(ClassName.class.getResource("song1.wav"));
Банка находится на моем рабочем столе, и когда я пытаюсь ее запустить, возникает это исключение:
javax.media.NoPlayerException: Cannot find a Player for :jar:file:/C:/Users/Pojo/
Desktop/jarname.jar!/song1.wav
... Он не получает IOExceptions, поэтому, по крайней мере, кажется, что сам файл находится в порядке.
Кроме того, до того, как я использовал getResource, у меня было так:
Player player = Manager.createPlayer(new File("song1.wav").toURL());
и он проигрывался нормально, поэтому я знаю, что с самим звуковым файлом все в порядке.
Причина, по которой я пытаюсь переключиться на этот метод вместо метода File, заключается в том, что звуковые файлы могут быть упакованы внутри самой банки и не должны быть ее братьями и сестрами в каталоге.
javax.sound.sampled
API был частью J2SE с версии 1.3. - person Andrew Thompson   schedule 29.11.2011javax.sound.sampled
есть что-нибудь еще, кроме клипа? Потому что я пытался использовать Clip, и он просто не работал для этих файлов, потому что они слишком большие, а Clip отказывается воспроизводить что-либо больше, чем около 1 МБ. - person Pojo   schedule 29.11.2011mp3plugin.jar
JMF, но не весь JMF. C) Реализация OracleClip
может обрабатывать не более 1 секунды 16-битного стереозвука с частотой 44,1 кГц, но есть два других способа обработки большого звука. 1) BigClip 2) Загрузите поток и воспроизведите его фрагмент по чанку. - person Andrew Thompson   schedule 29.11.2011