vue项目JS播放音频音效和背景音乐

4 篇文章 0 订阅

1,起因

最近在做一个线上直播互动课堂的Vue项目,里面有一些这样的交互:老师奖励学生A一个奖章,要自动播放得奖的音效。

2,摸索过程

直接写一个function

myPlay(){
    let mp3 = new Audio();
    mp3.src = "./奖励的声音.mp3";
    mp3.load();
    mp3.play();
    setTimeout(() => {
        mp3.pause();
    }, 3000);
}

结果一直报错

报错

度娘告诉我,浏览器18年更新后抽风了,谷歌66版本以上不允许Audio自动播放,必须要用户交互发生后才能播放,但是我疯狂触发事件交互,还是报错。所以我改用Web AudioContext;

async myPlay() {
	const audioContext = new AudioContext();
    const  res = await fetch('./倒计时的声音.mp3');
    const arraybuffer = await res.arrayBuffer();
    const audioBuffer = await audioContext.decodeAudioData(arraybuffer);
    const source = audioContext.createBufferSource();
    source.connect(audioContext.destination); //连接上实例
    source.buffer = audioBuffer;
    source.start();//播放
    setTimeout(() => {
        source.stop();//停止
    }, 3000);
}

结果还是不行…而且最后铃声播放地址改成了网络地址,解码需要转为arraybuffer格式,比较麻烦(其实是不会),于是又换了种方法。

3,功能实现

html中写上audio标签,带上hidden属性。

<audio controls="controls" hidden :src="'https://www.xxxx" ref="audio"></audio>

methods中定义方法。

playMusic(type) {
  this.$refs.audio.currentTime = 0;//从头开始播放
  this.$refs.audio.play(); //播放
  setTimeout(()=>{
    this.$refs.audio.pause();//停止
  },3000);
}

至此,完美解决~


2021-06-26追更

目前实现不了用户一打开页面就自动播放声音,必须用户有交互之后才行,比如弹个窗口,用户点了确认,或者用户有输入,点击等等交互都行。


如果看了觉得有帮助的,我是@鹏多多i,欢迎 点赞 关注 评论;
END

面向百度编程

公众号

公众号

往期文章

个人主页

Vue中,要实现背景音乐的自动播放,需要在App.vue文件中进行相关设置和处理。首先,在App.vue的<template>标签中,需要添加一个音乐图标和音乐资源的元素,并给它们添加相应的样式和事件。可以使用一个div元素作为容器,其中包含一个img标签来显示音乐图标,并通过绑定点击事件来控制音乐的播放和暂停。同时,还需要在div元素中添加一个audio标签,用来引入音乐资源,设置preload属性为"auto",controls属性为true,loop属性为true,并通过hidden属性来隐藏音频播放器。这样,音乐资源就可以在页面加载时进行预加载,并且可以通过控制音乐图标的点击事件来控制音乐的播放和暂停。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【Vue 公众号网页设置全局背景音乐】](https://blog.csdn.net/qq_35057009/article/details/128111586)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [vue项目的自动播放背景音乐](https://blog.csdn.net/qq_43459224/article/details/103736668)[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^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹏多多.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值