恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

微信小程序案例2.2:图片与声音——InnerAudioContext音频播放与变速控制详解

  • 首页
  • 资讯中心
  • /
  • 微信小程序案例2.2:图片与声音——InnerAudioContext音频播放与变速控制详解

相关资讯

litellm 适配 claude code 遇到的坑记录:从 api_base 到 Anthropic 兼容层 2026/10/18 22:27:49
CLI+JSON Schema:轻量级结构化数据验证工作流 2026/10/18 22:27:49
Java宠物管理系统:Spring Boot分层架构与事务实战 2026/10/18 22:27:49

最新资讯

ExplorerPatcher 完整指南:在 Windows 11 上恢复 Windows 10 开始菜单磁贴与经典任务栏
四旋翼串级PID控制器:从建模到实机调参的完整工程实践
Unity内嵌Office与PDF文档的跨平台渲染方案
Visual Studio五子棋人机对战:C# AI评估函数与搜索降维实现
光模块拆解与高频测试全指南:芯片选型、国产替代与实操避坑
cua-s1-forms架构深潜:2层Transformer与选项注意力头如何只用70万参数做到99.9%表单决策

今日推荐

OpenCowork 实测:支持本地文件、飞书机器人的 Windows AI 助手(只需配置 Token)
GPT-6 Sol 与 Luna 怎么选?Chat、Work、Codex 版本差异与 TaoToken 接入实测
openclaw.net 集成 ElBruno.MempalaceNet 记忆系统:把 MCP 配置改到 TaoToken 的完整实践

本周热门

基于GMM的语音识别系统原理与MATLAB实现详解
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

微信小程序案例2.2:图片与声音——InnerAudioContext音频播放与变速控制详解

发布时间:2026/10/18 22:32:49
微信小程序案例2.2:图片与声音——InnerAudioContext音频播放与变速控制详解 一、案例概述本案例演示了微信小程序中image组件的使用方法、InnerAudioContext音频上下文的创建与控制、数据绑定和事件绑定、onLoad生命周期函数等功能。实现效果页面上显示一幅图片点击图片时播放音乐再次点击暂停播放依次交替。功能扩展增加了播放速度控制慢速/正常/快速并在每次播放和暂停时在控制台打印当前音频的播放位置和播放速率。二、项目结构miniprogram/ ├── app.js ├── app.json ├── app.wxss ├── sitemap.json ├── project.config.json └── pages/ └── index/ ├── index.js ├── index.json ├── index.wxml └── index.wxss图片文件yanan.webp和音频文件huiyanan.mp3存放在微信云开发的云存储中通过云存储下载链接https URL引用页面中不再需要本地的images和audios目录。二点五、云开发环境初始化使用云存储资源前需要在app.js中初始化云开发环境App({onLaunch(){wx.cloud.init({env:cloud1-d6gbuj3063c9c4451})}})代码解析onLaunch是小程序启动时触发的生命周期函数适合做云开发环境的初始化。wx.cloud.init()初始化云开发能力env参数指定云环境ID。初始化后小程序就可以访问该环境下的云存储、云数据库、云函数等资源。三、核心代码3.1 index.wxmlviewclasscontainerimagesrc{{imgSrc}}classmy-imagebind:tapsing/imageviewclassstatus{{isPlaying ? 播放中 : 已暂停}}/viewviewclassrate-boxtextclassrate-label播放速度/textbuttonclassrate-btn {{playbackRate 0.5 ? active : }}bind:tapsetSlow慢速/buttonbuttonclassrate-btn {{playbackRate 1 ? active : }}bind:tapsetNormal正常/buttonbuttonclassrate-btn {{playbackRate 2 ? active : }}bind:tapsetFast快速/button/view/view代码解析image组件的src属性通过数据绑定{{imgSrc}}指定图片路径。bind:tapsing实现了事件绑定点击图片后调用sing()函数。播放状态通过{{isPlaying ? 播放中 : 已暂停}}三元表达式显示。三个按钮分别绑定setSlow、setNormal、setFast函数控制播放速度通过class动态绑定高亮当前选中的速度。3.2 index.jsPage({data:{imgSrc:https://636c-cloud1-d6gbuj3063c9c4451-1508092649.tcb.qcloud.la/yanan.webp?sign9e0e80b8cb5c775acee21e0d2a551edct1792120820,isPlaying:false,playbackRate:1},onLoad(){this.audioCtxwx.createInnerAudioContext();this.audioCtx.srchttps://636c-cloud1-d6gbuj3063c9c4451-1508092649.tcb.qcloud.la/%E6%A1%88%E4%BE%8B2.2%E5%9B%BE%E7%89%87%E4%B8%8E%E5%A3%B0%E9%9F%B3/%E6%A1%88%E4%BE%8B2.2%20%E5%9B%BE%E7%89%87%E4%B8%8E%E5%A3%B0%E9%9F%B3/%E9%9F%B3%E9%A2%91%E8%B5%84%E6%BA%90/huiyanan.mp3?signe978d73e729c4e17d8ab218f042922a3t1792120798;this.audioCtx.playbackRate1;this.audioCtx.onPlay((){console.log(开始播放 - 当前位置this.audioCtx.currentTime播放速率this.audioCtx.playbackRate);});this.audioCtx.onPause((){console.log(暂停播放 - 当前位置this.audioCtx.currentTime播放速率this.audioCtx.playbackRate);});},sing(){if(this.data.isPlaying){this.audioCtx.pause();this.setData({isPlaying:false});}else{this.audioCtx.play();this.setData({isPlaying:true});}},setSlow(){this.audioCtx.playbackRate0.5;this.setData({playbackRate:0.5});},setNormal(){this.audioCtx.playbackRate1;this.setData({playbackRate:1});},setFast(){this.audioCtx.playbackRate2;this.setData({playbackRate:2});},onUnload(){if(this.audioCtx){this.audioCtx.destroy();}}});代码解析onLoad是页面生命周期函数页面加载时触发只调用一次。在此函数中通过wx.createInnerAudioContext()创建音频上下文实例。audioCtx.src设置音频文件的云存储下载链接支持网络https地址。audioCtx.playbackRate设置播放速率1为正常速度0.5为慢速2为快速。onPlay和onPause是音频事件的监听回调在播放和暂停时通过console.log打印当前播放位置currentTime和播放速率playbackRate。sing()函数通过判断isPlaying状态实现播放和暂停的交替。onUnload中调用destroy()销毁音频实例避免内存泄漏。3.3 index.wxss.container{display:flex;flex-direction:column;align-items:center;padding:40rpx;}.my-image{width:600rpx;height:400rpx;border-radius:20rpx;box-shadow:0 4rpx 20rpxrgba(0,0,0,0.15);}.status{margin-top:30rpx;font-size:30rpx;color:#333;}.rate-box{margin-top:40rpx;display:flex;flex-direction:row;align-items:center;}.rate-label{font-size:28rpx;color:#666;margin-right:10rpx;}.rate-btn{font-size:26rpx;padding:10rpx 30rpx;margin:0 10rpx;background-color:#f0f0f0;color:#333;border-radius:10rpx;line-height:1.5;}.rate-btn.active{background-color:#07c160;color:#fff;}四、功能扩展说明4.1 播放速度控制通过InnerAudioContext的playbackRate属性实现按钮playbackRate值效果慢速0.5半速播放正常1正常速度快速2两倍速播放点击不同按钮时设置audioCtx.playbackRate的值即可实时改变播放速度。4.2 控制台打印播放位置和速率在onPlay和onPause回调中读取this.audioCtx.currentTime当前播放位置单位秒和this.audioCtx.playbackRate播放速率通过console.log打印到控制台。控制台输出示例开始播放 - 当前位置0播放速率1 暂停播放 - 当前位置3.5播放速率1 开始播放 - 当前位置3.5播放速率2五、关键技术点总结image组件通过src属性指定图片路径支持数据绑定可以直接使用网络图片地址。事件绑定bind:tap绑定点击事件点击后调用对应的处理函数。云开发云存储静态资源图片、音频上传到云存储后通过下载链接引用无需打包进小程序本地目录节省小程序包体积。使用前需在app.js中调用wx.cloud.init()初始化云环境。InnerAudioContext微信小程序提供的音频上下文API用于创建和控制音频播放src支持本地路径和网络https地址。playbackRate属性控制音频播放速率支持0.5慢速、1正常、2快速等值。currentTime属性获取当前音频的播放位置秒。onLoad生命周期页面加载时触发适合做初始化工作。onPlay/onPause事件监听音频播放和暂停事件可以在回调中获取音频状态信息。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号