首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在heroku上部署的web应用程序中使用Java Sound API

在heroku上部署的web应用程序中使用Java Sound API
EN

Stack Overflow用户
提问于 2017-03-10 17:51:20
回答 1查看 196关注 0票数 0

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

我们已经在heroku上托管了.war,我们已经设法让所有的东西都工作了,除了声音。每次我们尝试调用Java Sound API (我们使用midi合成器)时,我们得到以下错误:

代码语言:javascript
复制
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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-10 22:46:36

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

如果您想要生成声音,然后提供给web客户端,您需要使用某个MIDI渲染器来生成声音文件,然后将生成的音频文件提供给客户端(例如WAV文件),或者简单地将MIDI提供给客户端,并通过MIDI.js等库让浏览器播放MIDI。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42715264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档