如何在 Vaadin 14 中播放声音?

我想在我使用 .wav 开发的应用程序之一中播放声音(.wav,作为 byte[])Vaadin 14。不幸的是我没有找到适合这个用例的组件。


Vaadin 8 提供了Audio( https://vaadin.com/api/framework/8.5.2/com/vaadin/ui/Audio.html ),但在 Vaadin 14 中不可用。


我认为只需使用并导入它就有一个解决方案HTML <audio>。


<body>

  <audio src="test.wav" controls autoplay loop>

    </audio>

</body>

还有一个“Vaadin 14”解决方案吗?


杨__羊羊
浏览 106回答 3
3回答

富国沪深

V14 中没有开箱即用的组件,但很容易制作一个自己的组件,如下所述:使用 Element API 创建简单组件:)所以我简单地检查了一下,这似乎有效:AudioPlayer.javaimport com.vaadin.flow.component.Component;import com.vaadin.flow.component.Tag;@Tag("audio")public class AudioPlayer  extends Component {    public AudioPlayer(){        getElement().setAttribute("controls",true);    }    public  void setSource(String path){        getElement().setProperty("src",path);    }}使用:AudioPlayer player=new AudioPlayer();player.setSource("https://file-examples.com/wp-content/uploads/2017/11/file_example_WAV_1MG.wav");add(player);我本地没有任何音乐文件,因此从互联网上随机获取了一些音乐文件并作为来源传递。当然,这不是一个万无一失的解决方案,只是一个概念证明:)

至尊宝的传说

我想为那些可能使用流的人添加一个简短的补充。阿纳斯米的 AudioPlayer.java:public void setSource(final AbstractStreamResource resource) {&nbsp; &nbsp; getElement().setAttribute("src", resource);}要使其正常工作,您必须设置流的内容类型:var stream = new StreamResource("foo", () -> {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; byte[] data = getBytesFromFileMP3(soundfile);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return new ByteArrayInputStream(data); })&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .setContentType("audio/mpeg"); // For MP3

慕森卡

如果你想故意播放声音(比如点击按钮或类似的东西时),你可以用这种方式添加方法播放:public void play() {    getElement().callJsFunction("play");}希望它能帮助某人。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java