寻求个网页播放声音的方案

长公子冰 2011-09-17 05:50:58
系统中要求有语音报警功能,在监控页面不断轮询后台报警,有新的语音报警会在页面播放,目前采用bgsound标签,当然该标签仅支持IE浏览器,这个不是关键,关键是该标签只有一个src属性,并没有播放列表,比如这次查询5个声音报警,需要顺序播放,那么我用JS来控制src的值,而且要延迟几秒,但控制的并不好,经常播着播着就乱套了。。。呵呵。。。

不知道友友们有没有这方面的经验给指点一二呢!比如弄个隐藏的播放列表啥的,每次来新的声音就追加到后面,播放器不用考虑播放啥音乐,只要一直顺序播放就好了,没有就不播放,知道没有下一首音乐为止,播放过的音乐从列表中删除,不知道有没有,百度了一下午也没找到方案。

大家给点意见和建议吧!
...全文
196 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
长公子冰 2011-09-19
  • 打赏
  • 举报
回复
想起了 JS数组是栈。压栈和出栈 谢谢 truelove12
长公子冰 2011-09-18
  • 打赏
  • 举报
回复
楼上说的缓存方案不错,不用每次请求下载声音文件。那么数组何时清除呢?一直追加数组会越来越大啊!还有就是播放的时间间隔问题,如果所有声音文件的长度一致还好控制,如果不一致就很难控制了。还有个问题是目前采用AJAX异步读取服务器报警,这样一来,何时返回也是不确定的,现在就是因为这个异步导致播放的脚本打架,覆盖。唉~
spkl1 2011-09-18
  • 打赏
  • 举报
回复
<div id="SoundDiv">swf声音文件</div>

js控制SoundDiv.innerHTML来切换声音文件
长公子冰 2011-09-18
  • 打赏
  • 举报
回复
数组的清除怎么处理呢? 不能不断的进栈啊!数组不能不断扩大啊!比如 播放了一个 删除一个
  • 打赏
  • 举报
回复
你说的不是问题。
js的数组可以很容易的实现队列结构。
最后得到的报警在队列的未尾。
始终从除列的头部读取报警声音。。

而且这二个操作(ajax,以及setTimeout)是两个不同的操作,不会有任何影响。
在ajax的回调中加入除列。
setTimeout从除列的头读取。
  • 打赏
  • 举报
回复
将不同的语音提示做成swf文件。优势:体积小,音质可以控制。
页面加载时,将这些文件都加载一次,以在客户端进行缓存,类似于预加载图片。

用一个数组 var playList=[];记录播放列表
当有报警时,往数组入一个文件名
同时,有一个window.setTimeout在数组中去取一个值,当返回值不是空的情况下,调用flash播放器,修改flash播放器的src属性,同时调用.play方法,让flash去播放。
flash播放器宽和高设为0即可。


KK3K2005 2011-09-17
  • 打赏
  • 举报
回复
一个队列 保存要播放的声音信息

一个 循环线程 控制每隔一定时间从队列中获取没有播放的声音 进行播放


又声音要播放了 就象队列中插入声音信息


可以控制的更精确点 大致就是这样
BLUE_LG 2011-09-17
  • 打赏
  • 举报
回复
帮顶!前两天同样遇到了 这个问题!我是找了个插件。

87,997

社区成员

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

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