我在使用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对象。
AudioClip
适用于可以保存在内存中的短文件。这个问题可能与调用play((方法的方式或时间有关。当通过点击按钮调用播放方法时,GUI保持打开状态,会发生这种情况吗?有些人没有意识到播放是一个守护进程线程。如果程序触发声音,然后在声音播放结束前完成并退出,则播放行为不会阻止程序关闭。还有FWIW,一旦加载到内存中,就不需要不断地重新加载AudioClip
。
我想补充一点:在我看来,有时Java不能很好地处理会话中的第一个音频调用,而且经常会出现口吃。由于这个原因,我经常玩";无声的";在程序开始时发出声音,以便使事情继续进行。只是提一下,以防程序刚开始运行时出现问题。如果您使用GUI(带有发出声音的按钮(,那么您可以测试额外的调用是否重复出现问题,从而帮助验证是声音文件还是环境。