java 扩展 wav 文件的 vlcj 播放卡顿

Stuttering in java vlcj playback of expanding wav files

我在 java 中使用 vlcj 播放 wav 文件,这些文件正在被其他服务扩展。我的问题如下:

当我打开一个音频文件时,播放器知道持续时间是 x 秒。如果它到达末尾,它必须重新打开 (player.controls().start()) 文件以了解扩展的持续时间。此重新启动会导致播放中出现微断断续续(如 0.1 秒),但可以听到,如果扩展过程缓慢,则断断续续可能每 2 秒发生一次。

我没有办法修改底层架构,所以我不能使用流。

经过几个小时的研究,我看到的主要问题是 vlcj 没有提供一种方法来手动更新播放的音频文件的持续时间(我可以通过文件大小计算)(它可能会将其加载到内存中)我猜是打开的)。

有人试过成功实现这种回放吗?

在对该主题进行深入研究后,我得出结论,使用上述设置无法实现无卡顿播放。它可以大大优化,但永远不会完美。问题的根源在于无法手动设置播放的wav文件的长度(持续时间),因此必须重新加载才能重新扫描。

我的解决方案是在存储和客户端之间实现 live555 RTSP streaming server。 vlcj 播放器连接到 rtsp 流并无缝播放(扩展)文件。缺点是播放时间需要特殊处理,性能较差(对事件的响应较慢)。