gpt4 book ai didi

java - 在部署在 heroku 上的 Web 应用程序中使用 Java Sound API

转载 作者:行者123 更新时间:2023-12-01 20:53:47 26 4
gpt4 key购买 nike

我们正在开展一个基于众包创作音乐的项目。人们对每个音符进行投票,直到投票结束,然后继续进行下一个投票,直到音乐 Canvas 被填满。如果你想了解一下它的样子,一个类似的项目是crowdsound。

我们在 Heroku 上托管了 .war,并且我们已经成功地使一切正常运行,除了声音之外。每次我们尝试调用 Java Sound API(我们使用 midi 合成器)时,都会收到以下错误:

2017-03-10T09:49:01.338821+00:00 app[web.1]: javax.sound.midi.MidiUnavailableException: Can not open line
2017-03-10T09:49:01.339228+00:00 app[web.1]: at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:1155)
2017-03-10T09:49:01.339288+00:00 app[web.1]: at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:1066)
2017-03-10T09:49:01.339340+00:00 app[web.1]: at music.MusicPlayer.run(MusicPlayer.java:99)
2017-03-10T09:49:01.339391+00:00 app[web.1]: at java.lang.Thread.run(Thread.java:745)
2017-03-10T09:49:01.340759+00:00 app[web.1]: Caused by: java.lang.IllegalArgumentException: No line matching interface SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian is supported.
2017-03-10T09:49:01.340869+00:00 app[web.1]: at javax.sound.sampled.AudioSystem.getLine(AudioSystem.java:479)
2017-03-10T09:49:01.340924+00:00 app[web.1]: at javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:606)
2017-03-10T09:49:01.340975+00:00 app[web.1]: at com.sun.media.sound.SoftSynthesizer.open(SoftSynthesizer.java:1095)
2017-03-10T09:49:01.341045+00:00 app[web.1]: ... 3 more

这是否意味着我们不能在网络应用程序中使用 midi 合成器,或者有什么方法可以实现这一点?

最佳答案

您根本无法播放 Java WAR 中的声音,因为它是在服务器端执行的。此外,heroku 实例可能完全缺乏声音硬件。

如果您想生成声音然后提供给 Web 客户端,您需要使用一些生成声音文件的 MIDI 渲染器,然后将生成的音频文件提供给客户端(例如作为 WAV 文件)或者只是向客户端提供 MIDI,并让浏览器通过库(例如, MIDI.js .

关于java - 在部署在 heroku 上的 Web 应用程序中使用 Java Sound API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42715264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com