-1

我在使用带有 JavaFX 的 AudioClip 播放 mp3 文件时遇到了一些问题。

我的代码是这样的:

// define String path to mp3 file
myFilePath = "path/to/file.mp3";

// Create an AudioClip Object from path
audioToPlay = new AudioClip(Objects.requireNonNull(getClass().getResource(audioToPlay)).toExternalForm());

// play the AudioClip
audioToPlay.play();

我正在播放的音频文件都是 mp3 文件,而且都很短(< 5 秒)。大约 80-90% 的文件正在播放而没有任何问题,但其余的根本没有播放,或者只播放了很短的时间(不到一秒钟,所以听起来像咔哒声)。

我不知道为什么 10-20% 不起作用;他们使用我的媒体播放器和我的浏览器播放得非常好。

问题是因为我使用的是 AudioClip 吗?我应该使用其他东西来播放我的短音频文件吗?

编辑: myFilePath 被定义为字符串,audioToPlay 被定义为 AudioClip 对象。

4

1 回答 1

0

AudioClip适用于可以保存在内存中的短文件。此问题可能与您调用 play() 方法的方式或时间有关。通过单击按钮调用播放方法时是否会发生这种情况,GUI 保持打开状态?有些人没有意识到播放是一个守护线程。如果程序触发声音然后在声音完成播放之前完成并退出,则播放行为不会阻止程序关闭。同样FWIW,一旦加载到内存中,就无需AudioClip一遍又一遍地重新加载。

想我会补充一点:在我看来,有时 Java 不能优雅地处理会话中的第一个音频呼叫,通常会出现口吃。因此,我经常在程序开始时播放“静音”声音,以使事情顺利进行。只是提一下,以防在程序开始运行时出现问题。如果您使用 GUI(带有按钮来发出声音),那么您可以测试其他调用是否重复问题,从而帮助验证它是声音文件还是环境。

于 2021-05-16T20:18:05.433 回答