公司有个需求,就是播放音乐的时候,来了一条语音消息,需要把音乐音量调小,然后开始播放消息,但是播放消息的队列是动态的,也就是说,可能正在播消息,这时候又来了一条消息。不能中断现在播的,需要播完了再播下一条消息,消息全部播完把放音乐的音量恢复。(页面上有两个video,一个是放音乐的,一个是播消息的)
公司用的是websocket连接html5页面的,所以会实时的推送语音消息过来
从百度上查了很多h5 video消息队列,但都没什么用,一般都是通过遍历array,遍历完了之后修改video的src完成的,这样就没有办法实现动态的队列播放,因为队列是会一直追加的,然后就自己写了一个处理
- 当websocket消息过来的时候,直接把需要播放的语音的src放到队列中
</pre><pre name="code" class="html">function openMessage(relist){ //relist是websocket发过来的播放list
var list = eval(relist);
for(var i=0;i<list.length;i++){
broadlist.push(list[i]);//把发过来的队列加入到语音消息播放队列中
}
var Media = document.getElementById("media");//获取音乐播放的video,并且把音量调小
if(Media.volume !=