2 回答
TA贡献1982条经验 获得超2个赞
我知道你发帖已经有一段时间了。你找到答案了吗?我想知道你是否loopPlayer
在玩之前加载introPlayer
,如果这会有所帮助。
如果 MediaPlayer 的“监听器”有点迟钝,也许切换到使用 JavaSourceDataLine
来LineListener
触发循环提示会更加无缝?(我会使用 aClip
循环播放。)
最后一个建议,我有一个可以为此工作的音频库AudioCue。该库包括一个可以在提示结束时AudioCueListener
触发事件(例如开始另一个播放)的事件。AudioCue
但是库的限制要求您将音乐保存在内存中,并且源文件是 .wav 的。
TA贡献1155条经验 获得超0个赞
是,它也指出
然而,媒体对象更适合长时间播放的声音。这主要是因为 AudioClip 将整个声音的原始未压缩音频数据存储在内存中,对于长音频剪辑来说,这些数据可能非常大。MediaPlayer 将仅在内存中预滚动足够的解压缩音频数据以在短时间内播放,因此对于长剪辑来说内存效率要高得多,尤其是在它们被压缩的情况下。
根据循环媒体的长度,anAudioClip
可能更适合您。不需要 aScheduledExecutorService
来重播音频,您可以使用AudioClip.setCycleCount(AudioClip.INDEFINITE)
to 永远循环。
使用此信息,我相信您最好的选择是使用 aMediaPlayer
作为介绍,然后使用MediaPlayer#setOnEndOfMedia
来调用循环AudioClip
;可能在介绍和循环过渡之间有一个小的延迟,但在那之后是无缝的。
添加回答
举报