vue项目中实现语音队列的依次播放

需求分析

通过长链接接收后台返回的消息数据,并进行语音的依次播放完整.长链接和语音播放功能在以往的文章中都有介绍.再次我们主要着重介绍语音依次播放的功能.
那怎样实现依次播放呢?

1.需要用一个数组存储接收到的数据对象.

存储到数组中就不多说了,push进去就可以.
2.按照顺序进行播放.

消息队列有了,初始想法是使用一个定时器,每隔几秒播报消息队列中的消息,这样需要统计每条消息的时间来设置一个最长时间进行轮巡,如果语音播报时间相同这样好设置,如果是不同的话,设置的轮巡时间,可能不能完整的播报.
这里我们通过添加监听播放结束事件来实现,在播放结束的时候如果消息队列中还存在要播放的消息,则继续播放.

实现

1.接受数据并存储到数组notificationArr中

websocketonmessage(e){ //数据接收  // console.log(e,'数据接收')if(e.data){// console.log(e.data)let data = JSON.parse(e.data).dataif(data){this.setNotificationArr(data)}}},
//消息队列处理逻辑setNotificationArr(data){//符合权限的消息添加到消息队列中(需求要求:实现消息的依次播放,可设置播放次数,单独播放按次数来,消息队列中存在多条,每条最少播放一次,最后一条播放3次)this.notificationArr.push(data)//播放的队列中有一条消息(消息队列从空值到有第一条消息时调用显示消息弹框和声音的方法,//如果消息队列已经超过一条,这时语音提示正在进行不做任何操作,因为语音播放完成后在回调中会依次显示播放消息队列)if(this.notificationArr.length==1){//显示消息弹框和声音this.showNotification(this.notificationArr[0])}}
2.按照顺序进行播放.

添加监听播放结束事件

mounted(){//首次进入页面时this.audioPlay = this.$refs.audiothis.audioPlay.addEventListener('ended',this.limitPlay)},

监听事件

//循环播放次数判断limitPlay(){//消息队列中第一条消息播放完成后,判断消息队列总有几条if(this.notificationArr.length==1){//只有一条时按照设置的次数进行播报,当播报完成后删除消息队列中的数据this.start++;// console.log("次数限制"+this.start)if(this.start <= this.playTimes-1){//语音播放方法this.playTip()}else{//当播报次数完成后,停止播报并且删掉消息队列中的数据this.audioPlay.pause()this.notificationArr.shift()}}else{//有多数据时,第一条播放完删掉第一条消息数据后,直接显示播放下一条消息this.notificationArr.shift()this.showNotification(this.notificationArr[0])}},

希望对你有帮助

vue项目中实现语音队列的依次播放相关推荐

  1. vue项目中,amr格式的音频播放

    在vue项目中,使用电脑浏览器播放amr格式的音频文件是直接播放不出来的,需要使用一个js包:benz-amr-recorder 1.npm install benz-amr-recorder 2.想 ...

  2. Vue项目中使用海康安全生产平台播放监控视频

    最近一直在做有关海康监控视频的项目,闲下来写下这篇文章,加深一下印象,同时也和大家交流一下经验,以便更好提升自己.废话不多说,开始正题.... 首先把海康插件引进到项目中来 然后在index.html ...

  3. 保姆级教程:js前端接入科大讯飞语音评测,实现朗读打分,vue对接科大讯飞语音评测,还可以实现句子逐词分析对错以及打分,将demo接入vue项目中

    需求说明:实现一个点击录制英文句子朗读,然后调用科大讯飞接口分析朗读准确度,并逐词分析朗读正确性. 步骤一.下载运行demo 首先附上科大讯飞语音评测流式版的文档链接:链接在此 然后在文档里找到dem ...

  4. vue项目中遇到的一些问题

    或访问:https://github.com/littleHiuman/experiences-about-vue  欢迎补充! vuex 状态 vue-cli 命令行 vue vue vue-rou ...

  5. Vue项目中遇到了大文件分片上传的问题

    Vue项目中遇到了大文件分片上传的问题,之前用过webuploader,索性就把Vue2.0与webuploader结合起来使用,封装了一个vue的上传组件,使用起来也比较舒爽. 上传就上传吧,为什么 ...

  6. vue项目中通过WebSocket实现实时消息提示及遇到的问题

    vue项目中通过WebSocket实现实时消息提示(前端代码) 需求说明 后台有新增消息通知,并实时推送给用户端,用websocket可以很方便的解决这个问题,但是websocket有个弊端不兼容IE ...

  7. vue项目中使用flv.js实时播放 断流重连 关闭断流开发心得

    第一次碰这个东西肯定会碰壁的,问百度人都问傻了(关键还骗人),其中心酸不必多描述,只为成长 后来项目更新采用的是EasyPlayer插件 文章地址: VUE项目中优雅使用EasyPlayer 后端是流 ...

  8. vue项目中使用echarts完成图表类的开发之饼图,环形图

    最近在vue项目中使用echarts.js完成诸如饼图,环形图,折线图,折线图加柱状图,和柱状图(水平柱状图和垂直柱状图),以及柱状图堆叠,下面请看图片展示: 如上图所示基本上echarts的简单图表 ...

  9. canvas java 上传截图_在Vue项目中使用html2canvas生成页面截图并上传

    使用方法 项目中引入 npm install html2canvas html代码 //html代码 js代码 // 引入html2canvas import html2canvas from 'ht ...

最新文章

  1. 一周一论文(翻译)——[IEEE 14] Elastic scaling for data stream processing
  2. 蓝桥杯乘法运算java,第四届蓝桥杯Java B——有理数类
  3. sql 计算两个小数乘积_数学家是如何计算出π的?
  4. 2008 mysql 本地安全_如何在Linux系统中建立mysql的本地安全机制?
  5. fpga如何约束走线_如何正确的约束时钟—Vivado优化到关键路径
  6. C#判断闰年函数及举例
  7. Redis-6.2.5 安装 Linux环境(单机)
  8. 李迟2021年4月知识总结
  9. 【笔记】关于OpenCV中的去畸变代码
  10. mac安装win7之后鼠标失灵_mac安装win7鼠标失灵怎么办
  11. 2022-2027年中国血液制品行业市场深度分析及投资战略规划报告
  12. 洛谷p5369[PKUSC2018]最大前缀和
  13. XINS 2.3支持Google App Engine和Ant 1.8
  14. CodeForces 1153D : Serval and Rooted Tree 树形DP
  15. php 验证码数字英文的,PHP 创设扭曲英文验证码
  16. 苹果笔记本怎么查看计算机基本信息,怎么区分查找苹果电脑笔记本macBook pro的年份、型号及序列号...
  17. C++ 0xc0000417 错误
  18. 从最近的比赛学习CTR/CVR
  19. Python 300例——006-010
  20. 战队口号霸气押韵8字_运动会八字口号押韵有气势 比赛口号简短霸气8字

热门文章

  1. 一次性床单的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  2. 多excel合并到一个excel的一个sheet中
  3. 【BZOJ1132】【POI2008】Tro(计算几何)
  4. 注意的分类和规律以及生理机制
  5. Linux下的磁盘克隆、磁盘备份、磁盘还原、分区克隆、分区备份、分区还原
  6. RSA参数及RSA用法
  7. “避开”std::map自动排序
  8. 软件测试工作三年薪资能拿20k往上吗?
  9. C++11中的delete关键字
  10. 声纹技术(五):声纹分割聚类技术