【问题标题】:Media: Play WAV file inside JAR媒体:在 JAR 中播放 WAV 文件
【发布时间】:2013-03-17 15:36:50
【问题描述】:

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

这个构造函数获取一个 URI 作为字符串。我有一个 JavaFX 项目并将一个 WAV 文件放入该项目中。当我将项目部署为 JAR 时,我可以看到(例如使用 7-Zip)WAV 文件也被导出。用

获取内容是没有问题的
MyApplicationClass.class.getResourceAsStream("/resources/test.wav").

但是,在为 Media 构造函数部署的 JAR 中引用此 WAV 文件的正确 URI 是什么? URI

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

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

有人知道正确的 URI 吗?

【问题讨论】:

    标签: java javafx-2


    【解决方案1】:

    试试这个

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

    Media 接受 jar uris,所以它应该可以正常工作

    【讨论】:

    • 谢谢! 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 我可以在这里。
    • 这是使用 JMF: URL url = ViMu.class.getResource("/audio/click_track_a.wav"); URLDataSource uds = new URLDataSource(url); uds.connect();玩家 player = Manager.createPlayer(uds); stackoverflow.com/questions/8304940/…
    • 好的,谢谢。我会为此考虑 JMF,并希望 JavaFX Media 将来会接受任意的 InputStreams。
    • 啊,问题是WAV文件的长度。我已经用 1 s WAV 进行了测试,它可以工作。 MediaPlayer 有很多问题 :)
    • 这不适用于有效的 MP4 视频资源(使用 1.8.0_51)。约 25 秒的视频将播放一次然后冻结。当我将 jar URL 复制到临时文件并将其用作源时,它将循环。 @Vertex 是的,JavaFX 通常有很多问题。
    猜你喜欢
    • 1970-01-01
    • 2019-07-23
    • 2023-03-03
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多