gpt4 book ai didi

java - 如何从 JMF 中的类路径加载媒体资源

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:55:01 26 4
gpt4 key购买 nike

我有一个 Java 应用程序,我想将其转换为可执行 jar。我在此应用程序中使用 JMF,但似乎无法使声音文件正常工作...

我使用

创建 jar
jar cvfm jarname.jar manifest.txt *.class *.gif *.wav

所以,所有声音文件都放在 jar 中,在代码中,我使用

创建播放器
Player player = Manager.createPlayer(ClassName.class.getResource("song1.wav"));

jar 在我的桌面上,当我试图运行它时,出现了这个异常:

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 方法的原因是声音文件可以打包在 jar 本身内,而不必是目录中的同级文件。

最佳答案

这与生产代码相去甚远,但这似乎解决了任何运行时异常(尽管它实际上还没有连接起来播放任何东西):

import javax.media.Manager;
import javax.media.Player;
import javax.media.protocol.URLDataSource;

// ...

URL url = JmfTest.class.getResource("song1.wav");
System.out.println("url: " + url);
URLDataSource uds = new URLDataSource(url);
uds.connect();
Player player = Manager.createPlayer(uds);

关于java - 如何从 JMF 中的类路径加载媒体资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8304940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com