2013-03-27 54 views
4

只有一个Media -class的构造函数:public Media(java.lang.String source)看到http://docs.oracle.com/javafx/2/api/javafx/scene/media/Media.html#Media%28java.lang.String%29媒体:播放WAV文件内部的JAR

此构造得到一个URI作为字符串。我有一个JavaFX项目,并在该项目中放置了一个WAV文件。当我将项目部署为JAR时,我可以看到(例如使用7-Zip),WAV文件也被导出。这是没有问题得到与

MyApplicationClass.class.getResourceAsStream("/resources/test.wav"). 

但内容什么是正确的URI指部署的JAR这里面WAV文件的Media构造?该URI

new Media("jar:.!/resources/test.wav") 

不工作。 URI "jar:resources/test.wav"也失败(因为没有对JAR文件的引用)。

有没有人有关于正确的URI的想法?

回答

7

试试这个

new Media(MyApplicationClass.class.getResource("/resources/test.wav").toURI().toString()) 

媒体接受罐子的URI所以它应该工作正常

+1

谢谢! 'ViMu.class.getResource(“/ audio/click_track_a.wav”)toURI()。toString()'给出了一个正确的URI'jar:file:/ C:Users/oliver/Desktop/vimu.jar!audio/click_track_a .wav'和'Media'对象正确创建,因为没有'MEDIA UNAVAILABLE'。但通过使用'MediaPlayer'播放,我不能在这里。使用URI'file:/ D:/ Workspace/vimu/bin/audio/click_track_a.wav'我可以在这里。 – Vertex 2013-03-27 15:27:46

+0

这是使用JMF: URL url = ViMu.class.getResource(“/ audio/click_track_a.wav”); URLDataSource uds = new URLDataSource(url); uds.connect(); Player player = Manager.createPlayer(uds); http://stackoverflow.com/questions/8304940/how-to-load-media-resources-from-the-classpath-in-jmf – 2013-03-27 15:46:22

+0

好的,谢谢。我会考虑JMF,希望JavaFX'Media'将来可以接受任意的InputStream。 – Vertex 2013-03-27 17:43:27