그래서 실행 가능한 jar로 바꾸고 싶은 Java 응용 프로그램이 있습니다. JMF의 클래스 경로에서 미디어 리소스를로드하는 방법
나는jar cvfm jarname.jar manifest.txt *.class *.gif *.wav
그래서 사용하여 항아리를 만들 ...이 응용 프로그램에서 JMF를 사용하고, 나는 사운드 파일이 제대로 작동 얻을 수없는 것, 모든 사운드 파일은 내부에 넣어 얻을 항아리, 및 코드에서, 나는
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
... IOException이 발생하지 않으므로 적어도 파일 자체를 찾는 것으로 보입니다. 나는의 getResource을 사용하기 전에
또한,이 같은 그것을 가지고하는 데 사용 :
Player player = Manager.createPlayer(new File("song1.wav").toURL());
하고 그것을 잘 놀고 있었다, 그래서 나는 아무것도 사운드 파일 자체에 이상이없는 것을 알고있다.
File 메서드 대신이 메서드로 전환하려고하는 이유는 사운드 파일을 jar 파일 자체에 패키지화하고 해당 형제가 될 필요가 없기 때문입니다. song1.wav
응용 프로그램의 런타임 클래스 경로에있는 항아리의 루트에있는 경우 작동
소리에 JMF를 사용하는 이유는 무엇입니까? javax.sound.샘플링 된 'API는 1.3 이후 J2SE의 일부였습니다. –
@Andrew Thompson Clip 외에 javax.sound.sampled에 다른 것이 있습니까? 왜냐하면 나는 Clip을 사용하려고 시도했기 때문에 너무 크고 Clip이 약 1MB보다 큰 것을 거절하기 때문에이 파일들에 대해 작동하지 않을 것입니다. – Pojo
* "Clip은 약 1MB보다 큰 어떤 것도 재생하지 않습니다."* A) You 아마 MP3 형식으로 변환해야 할 것입니다, 그래서 그들은 (일반적으로) WAV보다 작을 것입니다. B) 그렇게하면 JMF의'mp3plugin.jar'가 MP3를 디코딩하는 데 필요하지만 전체 JMF는 디코딩하지 않아도됩니다. C) 오라클의 'Clip'구현은 44.1 KHz 16 비트 스테레오의 최대 1 초를 처리 할 수 있지만 큰 오디오를 처리하는 두 가지 다른 방법이 있습니다. 1) [BigClip] (http://stackoverflow.com/questions/5667454/playing-audio-file-in-java-application/5668510#5668510) 2) 스트림을로드하고 청크로 청크를 재생합니다. –