Я хочу добавить краткое дополнение к замечательному ответу anasmi для тех, кто может использовать потоки.
Anasmi's AudioPlayer.java:
public void setSource(final AbstractStreamResource resource) {
getElement().setAttribute("src", resource);
}
Чтобы это работало на мобильных устройствах, вам может потребоваться установить тип контента для потока:
var stream = new StreamResource("foo", () -> {
byte[] data = getBytesFromFileMP3(soundfile);
return new ByteArrayInputStream(data); })
.setContentType("audio/mpeg"); // For MP3