微信小程序开发-音频开发两种方案分享

前言

微信小程序开发-音频播放经验分享

前文已经对小程序开发中的音频开发及使用进行了简单介绍。

下面将项目开发过程中前后采用的两种音频处理方案继续探讨。

方案介绍

1.单文件模式

最初采用的方式是将用到的所有字符通过音频生成工具,拆分成单个的音频文件,使用时进行调用。

生成所有用到的字符音频。

播放时传入对应的文件名称即可。

js 复制代码
playAudio(id) {
    this.innerAudioContext.stop();
    var prefix = "audio/";
    var suffix = ".mp3";
    this.innerAudioContext.src = prefix + id + suffix;
    this.innerAudioContext.play();
  },

2.文件分割模式

将所有的音频文件整合到一个音频文件,然后通过seek(n),在指定位置进行播放。

由于大多数按钮音效一般都低于0.5秒时长,因此只设置起始位置,播放从每个音效的起始位置开始 ,播放时长为按照字符长度进行设置,一般二个汉字默认为500毫秒,四个汉字默认1000毫秒。

将所有字符生成到一个文件里。

生成每个字符的起始位置和对应的播放时长,需要根据实际情况进行字符的测试,保证每个字符能够发音清晰。

传入指定字符,在数组中查询播放。

同步播放

可以进行前后音频播放,不会出现两个音频重叠的情况。

js 复制代码
playAudioByPos(id) {
    var that = this;
    var audio = this.data.audios.filter(t => t.key == id)[0];
    if (audio) {
      this.innerAudioContext.seek(audio.pos);
      this.innerAudioContext.play();
      //要实现顺序播放的话,需要停止总线程
      that.sleep(audio.duration);
      that.innerAudioContext.stop();
    }
  },

异步播放

前后播放音频时,会出现重叠。不适合需要播放多个的情况。

js 复制代码
 playAudioByPosAsync(id) {
    var that = this;
    var audio = this.data.audios.filter(t => t.key == id)[0];
    this.innerAudioContext.seek(audio.pos);
    this.innerAudioContext.play();
    setTimeout(() => {
      that.innerAudioContext.stop();
    }, audio.duration);
  },

方案对比

第一种方案:分开存放,管理起来比较方便,需要加入新的音频时只需生成对应的文件,放入即可。但整体文件的空间占用较大,对于小程序的包限制影响比较大,适合变化比较频繁的情况。

第二种方案:整合存放,但需要单独存储所需字符的具体位置和播放时长,发生改变时可能需要改动很多字符的起始位置。文件的空间占用较小,无需多次加载音频文件,适合变动不大的情况。

在实际使用时,可根据要求灵活选择。

至此,音频播放的内容已经全部分享完毕。

如有问题,欢迎评论区讨论。

下一篇将分享这几天小程序推广的一些心得(失败),恳请各位掘友指导。

相关推荐
鸿蒙开发15 小时前
# 代码写完才发现不能上线:微信小程序开发前必须准备的 8 件事
微信小程序·产品经理
李纲明15 小时前
微信小程序 web-view 打开空白或提示未配置业务域名:校验文件、HTTPS 与跳转域名排查
前端·微信小程序·https·web-view·小程序开发·业务域名
fengGer的bugs17 小时前
微信小程序实战:本地存储的新生儿喂养记录(原生 + 四套主题 + 疫苗日程)
微信小程序·小程序
andrsted1 天前
练题簿免费刷题小程序:和学习搭子共用一份题库,一起刷题复习
学习·面试·微信小程序·小程序·学习方法·刷题
计算机毕设定制辅导-无忧学长2 天前
《基于微信小程序的个人智能刷题助手的设计与实现》
java·spring boot·mysql·微信小程序·uniapp·个人智能刷题助手系统
百慕大三角2 天前
为了在 Linux CI 里跑小程序 E2E,我把微信官方基础库搬进了浏览器:wxa-runner 开源实践
微信小程序·agent·测试
txc2 天前
我用 AI 给两个人写了个微信小程序(二):从「能用」到「用得对」
微信小程序
海上彼尚3 天前
【微信小程序】xxx该网站的安全证书存在问题,可选择 “继续”在浏览器中访问。
安全·微信小程序·小程序
andrsted3 天前
练题簿在线免费刷题:个人备考,从练新题到模拟自测怎么用?
学习·微信小程序·小程序·学习方法·刷题
多客:duokelijie3 天前
婚恋交友小程序合规梳理:上线运营需要准备哪些资质与许可手续?
后端·mysql·微信小程序·前端框架·uni-app·php·持续部署