uniapp:播放音频(uni.createInnerAudioContext())

这篇博客介绍了如何在H5和uni-app中利用uni.createInnerAudioContext()方法创建并控制音频播放,特别是在H5端处理播放权限问题。通过在音频结束事件中切换音频源,实现了背景音乐的循环播放功能。同时,提供了暂停和继续播放的控制逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

uni.createInnerAudioContext()

src			音频的数据链接,用于直接播放。
play		播放(H5端部分浏览器需在用户交互时进行)
onEnded		音频自然播放结束事件
onShow() {
	var music = null;
	music = uni.createInnerAudioContext(); //创建播放器对象
	music.src = '../../static/1.mp3'; // static文件夹下的音频
	music.play(); //执行播放
	music.onEnded(() => {
		//播放结束
		music = null;
	});
},

H5端部分浏览器,需要写在事件中才能触发。否则会有报错
在这里插入图片描述
DOMException: play()失败,因为用户没有首先与文档交互

更新内容,实现背景音乐循环播放

data() {
	return {
		musicShow:true,// 默认音乐播放
		musicData:null,
		bgmList:[], //背景音乐
		current_bgm:0,// 当前播放歌曲位置
		current_src:'', //当前播放音乐的url
	}
},
onLoad() {
	this.$http.get('/api/ee/bgms').then(res=>{
		if(res.code == 200){
			this.bgmList = res.data.bgms
			this.current_bgm = 0;
			this.current_src = this.bgmList[this.current_bgm].url
			console.log(this.bgmList.length);
			this.musicData = null;
			this.musicData = uni.createInnerAudioContext(); //创建播放器对象
			this.musicData.src = this.current_src; // static文件夹下的音频
			this.musicData.play(); //执行播放
			this.musicData.onEnded(() => {
				if(this.current_bgm == this.bgmList.length-1){
					console.log('重头播放');
					// 重头播放
					this.current_bgm = 0
					this.current_src = this.bgmList[this.current_bgm].url
					this.musicData.src = this.current_src; // static文件夹下的音频
					this.musicData.play(); //播放结束,循环播放
				}else{
					console.log('下一首音乐');
					this.current_bgm++
					this.current_src = this.bgmList[this.current_bgm].url
					this.musicData.src = this.current_src; // static文件夹下的音频
					this.musicData.play(); //播放结束,循环播放
				}
			});
		}
	})
},
// 音乐暂停播放按钮
changeMusic(){
	if(this.musicShow){
		console.log('暂停');
		this.musicData.pause();
		this.musicShow = !this.musicShow
	}else{
		console.log('开始');
		this.musicData.play(); //播放结束,循环播放
		this.musicShow = !this.musicShow
	}
},
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值