JSP实现播放语音叫号功能

leandzgc 2012-01-13 01:31:16
需求:可以在JSP中播放我得到的排队序号。我的排队顺序号例子A001,那么则播放请A001号前来办理业务
...全文
479 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
leandzgc 2012-01-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ldh911 的回复:]
默认就是用Windows自带的MediaPlayer啊。。。。

下面这段是放自己电脑C盘下的音乐,你试试看吧:

<OBJECT width="1024" height="800" ID="Player" CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" >
<param name="URL" value="file:///C:\……
[/Quote]

我现在暂时不准备做这个了,好麻烦啊,回头再说吧。谢谢您了
MiceRice 2012-01-13
  • 打赏
  • 举报
回复
默认就是用Windows自带的MediaPlayer啊。。。。

下面这段是放自己电脑C盘下的音乐,你试试看吧:

<OBJECT width="1024" height="800" ID="Player" CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" >
<param name="URL" value="file:///C:\\北京欢迎你正式版.WMV" />
<PARAM name="autoStart" value="True"/>
<param name="volume" value="100"/>
<param name="stretchToFit" value="1">
<param name="uiMode" value="none"/>
</OBJECT>
leandzgc 2012-01-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ldh911 的回复:]
找到了一段示例代码,你试试看吧。

如果能用,就写一个Servlet,根据参数将几个文件读取进来,然后用流式输出到response中进去,当然别忘了设置HTTP头信息,比如Content-Type等。

写好了Servlet后,自己直接用IE浏览器直接访问下URL(注意带上参数),看能不能下载到合并后的音频文件,能就已经成功了。

最后的播放页面上仍然是一样的,用一个ActiveX播放……
[/Quote]

那您能给我一个ActiveX播放器吗?顺便告诉我使用方法,如果可能的话,谢谢!
MiceRice 2012-01-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wnf2009 的回复:]
那个。。。收听验证码也能这么做么??
[/Quote]
机制完全一样。所有的区别仅仅是,预先生成好了还是实时的做合并计算。对于高并发访问而言,语音片段一般会缓存在内存中,合并的时候就不从文件系统去读取了。
wnf2009 2012-01-13
  • 打赏
  • 举报
回复
那个。。。收听验证码也能这么做么??
MiceRice 2012-01-13
  • 打赏
  • 举报
回复
找到了一段示例代码,你试试看吧。

如果能用,就写一个Servlet,根据参数将几个文件读取进来,然后用流式输出到response中进去,当然别忘了设置HTTP头信息,比如Content-Type等。

写好了Servlet后,自己直接用IE浏览器直接访问下URL(注意带上参数),看能不能下载到合并后的音频文件,能就已经成功了。

最后的播放页面上仍然是一样的,用一个ActiveX播放器,但URL地址直接引用你写的Servlet的地址即可。


public void mergeFile(File srcFile1, File srcFile2, File descFile)
throws IOException, UnsupportedAudioFileException {
AudioFileFormat aff = AudioSystem.getAudioFileFormat(getResources().openRawResource(R.raw.music0));

AudioInputStream ais1 = AudioSystem.getAudioInputStream(getResources().openRawResource(R.raw.music0));

AudioInputStream ais2 = AudioSystem.getAudioInputStream(getResources().openRawResource(R.raw.music1));

SequenceInputStream sis = new SequenceInputStream(ais1, ais2);

AudioSystem.write(new AudioInputStream(sis, aff.getFormat(), ais1.getFrameLength() + ais2.getFrameLength()),
aff.getType(), descFile);

if (ais1 != null)
ais1.close();
if (ais2 != null)
ais2.close();
if (sis != null)
sis.close();
}
MiceRice 2012-01-13
  • 打赏
  • 举报
回复
你想拆分到最细粒度,这个浪费系统性能,而且我个人觉得效果可能也一般。

需要用javax.sound.sampled包来做,不知道有没有开源实现。

建议你以 “Java 声音文件合并” 之类的方式来提问和Google,这样目标明确写。



其实你看大多数的大厅系统,都是直接喊号码,你直接录1000个号(考虑用专门的音频编辑工具批量生成)进去,基本就够用了。
leandzgc 2012-01-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ldh911 的回复:]
直接学习那些在浏览器上放MP3的网站就行了吧?

本质上就是开个页面,嵌入一个ActiveX,然后播放MP3。

你面临的问题是:A001这个东西,是预先录入好比如 10000份,还是用语音合成。
[/Quote]

我现在的想法是拆分,A+N+N+N来报数,这样需要准备11个mp3文件,A和10个数字,然后拼接语音,问题是怎么实现我不知道啊
MiceRice 2012-01-13
  • 打赏
  • 举报
回复
直接学习那些在浏览器上放MP3的网站就行了吧?

本质上就是开个页面,嵌入一个ActiveX,然后播放MP3。

你面临的问题是:A001这个东西,是预先录入好比如 10000份,还是用语音合成。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧