vue中实现语音播放、暂停、结束监听等

<div class="Box">
        <div class="article">
            <div class="btnGroup">
                <i :class="btnClassName" @click="ctrlAudio"></i>
            </div>
            <div v-html="text"></div>
        </div>
    </div>

懂得都懂!!!

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

 data() {
        return {
            text: '',
            btnClassName: 'el-icon-video-play',
            //用于存放语音实体和队列实体
            audio: {
                synth: '',
                utterance1:''
            }
        };
    },
    computed: {
    // 获取id,用于获取文章
        rankInfoId() {
            return this.$store.state.rightMaskTemporaryData.id
        }
    },
    mounted() {
        this.getTextArr();
    },

    methods: {
       //控制语音播放、暂停,同时更改图标
        ctrlAudio() {
            if (this.btnClassName == 'el-icon-video-pause') {
                this.audio.synth.pause();
                this.btnClassName = 'el-icon-video-play'
            } else {
                this.btnClassName = 'el-icon-video-pause'
                this.audio.synth.resume()
            }
        },
        //获取文章内容,用于渲染
        getTextArr() {
            MB_INFO({
                groupId: this.rankInfoId
            }).then(msg => {
                console.log(msg);
                this.getArticle(msg.data);
            })
        },
        //生成html  用于元素渲染
        getArticle(arr) {
            this.text = "";
            for (let a of arr) {
                this.text +=
                    `
                <div class="audio audio_${a.id} ${a.infotype_code}" >
                   ${a.info}
                </div>`
            }
            var domFlag = {};

            //语音播放代码
            this.audio.synth = window.speechSynthesis;
            //新建实例
            this.audio.synth.cancel();
            //语音开始前先取消上一个
            this.btnClassName = 'el-icon-video-play'
            //循环添加到队列
            for (let b of arr) {
                this.audio.utterance1 = new SpeechSynthesisUtterance(b.info);
                this.audio.synth.speak(this.audio.utterance1);
                this.btnClassName = 'el-icon-video-pause'
                //
                this.audio.utterance1.onstart = function (e) {
                    domFlag = {}
                    domFlag = {
                        type: b.codeName,
                        typeCode: b.typeCode,
                        id: b.id,
                        groupId:b.groupId
                    };
                    zlsMapTool.lunboTool(domFlag.groupId,domFlag.type);
                }
                //每个语音播报结束后的行为
                this.audio.utterance1.addEventListener('end', () => {
                    
                    domFlag = {}
                })
            }
        }
    },
    beforeDestroy() {
        this.audio.synth.cancel();
        layer.close(layerIndexByLunbo)
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Vue使用video.js来实现视频暂停播放,你需要首先在main.js引入video.js库并注册为Vue的原型属性。你可以使用以下代码来实现这一步骤: ``` import Video from 'video.js' import 'video.js/dist/video-js.css' Vue.prototype.$video = Video ``` 接下来,在你的Vue组件使用video标签来嵌入视频,并给它一个ref属性来引用它。你还可以给video标签添加一个class属性,比如`vjs-default-skin`和`vjs-big-play-centered`,用来设置视频播放器的样式和播放按钮的位置。下面是一个示例代码片段: ``` <template> <div> <video ref="videoNode" class="video-js vjs-default-skin vjs-big-play-centered"></video> </div> </template> <script> export default { mounted() { this.player = this.$video(this.$refs.videoNode) // 通过this.player来控制视频播放暂停 }, beforeDestroy() { this.player.dispose() } } </script> ``` 在`mounted`钩子,我们使用`this.$video`来创建一个video.js播放器实例,并将video节点传递给它。然后,你可以通过`this.player`来控制视频播放暂停等操作。在`beforeDestroy`钩子,我们释放播放器资源,以避免内存泄漏。 这样,你就可以在Vue使用video.js实现视频暂停播放了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue用 video.js 实现单个页面内多视频播放.zip](https://download.csdn.net/download/you199037/15365681)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [vue 项目使用video实现视频播放效果暂停播放(多个视频)](https://blog.csdn.net/Min_nna/article/details/128300507)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [在vue项目使用video.js实现视频播放视频进度条打点](https://blog.csdn.net/qq_31851435/article/details/129194901)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值