uniapp简单版语音播放

javascript 复制代码
mounted() {
		this.ScanAudio('http://118.178.137.235:88/ipoker.mp3', 3); // 开始播放音频
	},


ScanAudio(url, count) {
    // 递归终止条件:当循环次数小于等于 0 时,停止递归
    if (count <= 0) return;

    // 创建内部音频上下文对象
    var music = uni.createInnerAudioContext();
    
    // 设置音频资源链接
    music.src = url;
    
    // 开始播放音频
    music.play();

    // 监听音频播放结束事件
    music.onEnded(() => {
        // 销毁音频上下文对象,以释放资源
        music.destroy();
        
        // 在音频播放结束后,延迟一定时间后重新调用 ScanAudio 函数进行循环播放
        setTimeout(() => {
            // 递减循环次数,继续下一次播放循环
            this.ScanAudio(url, count - 1);
        }, music.duration * 1000); // 延迟时间等于音频时长乘以 1000 毫秒
    });
}

说明

  1. 当调用 ScanAudio(url, count) 时,它首先检查循环次数 count 是否小于等于 0。如果是,表示递归终止条件已满足,停止递归。

  2. 如果循环次数不小于等于 0,函数会创建一个内部音频上下文对象 music,然后设置该音频的资源链接为提供的 url

  3. 调用 music.play() 开始播放音频。

  4. 监听 music.onEnded 事件,当音频播放结束时触发。在此事件处理程序中,会先销毁音频上下文对象以释放资源,然后根据音频的时长乘以 1000 毫秒(即延迟一段时间)重新调用 ScanAudio 函数,实现循环播放。循环次数减少 1,从而控制循环次数。

后端传给多个语音如何播放

javascript 复制代码
<template>
	<view class="content">1212</view>
</template>

<script>
export default {
	data() {
		return {};
	},
	mounted() {
		const audioUrls = ['http://118.178.137.235:88/ipoker.mp3', 'http://118.178.137.235:88/ipoker.mp3', 'http://118.178.137.235:88/ipoker.mp3'];
		// 开始按顺序播放音频
		this.playSequentialAudioWithFixedDelay(audioUrls, 0, 3);
	},
	methods: {
		playSequentialAudioWithFixedDelay(urls, currentIndex, delayInSeconds) {
			if (currentIndex >= urls.length) {
				return;
			}
			const music = uni.createInnerAudioContext();
			music.src = urls[currentIndex];
			music.play();
			music.onEnded(() => {
				music.destroy();
				setTimeout(() => {
					this.playSequentialAudioWithFixedDelay(urls, currentIndex + 1, delayInSeconds);
				}, delayInSeconds * 1000);
			});
		}
	}
};
</script>

<style>
/* 样式省略 */
</style>
相关推荐
00后程序员张18 小时前
iOS 上架费用全解析 开发者账号、App 审核、工具使用与开心上架(Appuploader)免 Mac 成本优化指南
android·macos·ios·小程序·uni-app·cocoa·iphone
前端与小赵1 天前
uni-app开发安卓app时控制屏幕常亮不息屏
android·gitee·uni-app
2501_916008891 天前
HTTPS 请求抓包,从原理到落地排查的工程化指南(Charles / tcpdump / Wireshark / Sniffmaster)
ios·小程序·https·uni-app·wireshark·iphone·tcpdump
xiaohe06011 天前
🥳 Uni ECharts 2.1 发布:正式支持鸿蒙,零成本迁移、全平台兼容、跨端开发零负担!
vue.js·uni-app·echarts
2501_915909062 天前
WebView 调试工具全解析,解决“看不见的移动端问题”
android·ios·小程序·https·uni-app·iphone·webview
2501_915106322 天前
App 怎么上架 iOS?从准备资料到开心上架(Appuploader)免 Mac 上传的完整实战流程指南
android·macos·ios·小程序·uni-app·iphone·webview
行走的陀螺仪2 天前
uni-app + Vue3 实现折叠文本(超出省略 + 展开收起)
前端·javascript·css·uni-app·vue3
小禾青青2 天前
uniapp安卓打包遇到报错:Uncaught SyntaxError: Invalid regular expression: /[\p{L}\p{N}]/
android·uni-app
环信即时通讯云2 天前
实现小程序 uniApp 输入框展示自定义表情包
小程序·uni-app
2501_915921432 天前
iOS 抓不到包怎么办?工程化排查与替代抓包方案(抓包/HTTPS/Charles代理/tcpdump)
android·ios·小程序·https·uni-app·iphone·tcpdump