微信小程序音频播放

📢 博客主页:星辰丶xing-CSDN博客

🎥 本文由星辰丶xing原创,首发于CSDN

🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

⭐ 以梦为马🦄,不负韶华❗

✨⭐🌟✨💫✨🌟⭐🌙

目录

一,音频播放

        1,实现方法

        2,实现流程

二,背景音频播放

         1,实现方法

         2,实现流程

        3,背景音频注意点

        4,app.json属性配置

三,音频播放进度条,滑动改变进度,界面

        1,所用到的组件--slider

        2,图片360°不间断旋转css


微信小程序播放音频有2种方式,一个是正常播放音频,一个是背景音频,这两个虽然都可以让音频进行播放,api也有很多相同的地方,但是还是有区别的,背景音频播放可以在锁屏的情况下,及小程序所有页面播放,正常的音频只能在当前页面播放。


一,音频播放

        1,实现方法

wx.createInnerAudioContext({})
// 这里用到的是微信音频api,创建内部 audio 上下文 InnerAudioContext 对象

        2,实现流程

1,首先创建音频上下文对象(这里以在onLoad创建展示并把audioCtx实例存储到data里面)
Page({
  data: {
    audioCtx: {}
  },
  onLoad() {
    const audioCtx = wx.createInnerAudioContext({})
    this.setData({
      audioCtx
    })
  },
})
2,创建完成之后进行使用(这里列举常用的一些属性,更多属性建议查询文档)
  playAudio() {
    // 这里也可以在调用这个方法的时候传参 然后这里接收赋值使用
    this.data.audioCtx.src = ''  // 音频路径
    this.data.audioCtx.autoplay = true   // 是否自动开始播放,默认为false
    this.data.audioCtx.loop = true  // 是否循环播放,默认为false
    this.data.audioCtx.volume = 1  // 音量。范围0~1。默认为 1
    this.data.audioCtx.currentTime = 100  // 当前音频的播放位置(单位 s)
    this.data.audioCtx.play()   // 播放音频
    this.data.audioCtx.pause()  // 暂停播放
    this.data.audioCtx.stop()  // 停止播放
    this.data.audioCtx.seek()  // 跳转的时间,单位秒,精确到小数点后3位,即支持ms级别精确度
    this.data.audioCtx.onPlay(() => {
      // 监听音频播放事件
    })
    this.data.audioCtx.offPlay(() => {
      // 移除音频播放事件
    })
    this.data.audioCtx.onPause(() => {
      // 监听音频暂停事件
    })
    this.data.audioCtx.offPause(() => {
      // 移除音频暂停事件
    })
    this.data.audioCtx.onStop(() => {
      // 监听音频停止事件
  
### 微信小程序实现音频播放列表功能 #### 功能概述 为了增强用户体验,在微信小程序中创建一个完整的音频播放器,支持多个音频文件按顺序或随机播放是非常重要的。这不仅限于单个音频文件的播放控制,还包括构建一个可以管理多首歌曲的播放列表。 #### API 使用说明 利用 `wx.createInnerAudioContext` 方法来创建内部音频上下文对象[^1]。此方法返回的对象提供了丰富的接口用于加载、播放、暂停以及监听各种事件如结束、错误等。对于播放列表而言,主要关注的是如何切换不同的音轨并保持良好的用户体验。 ```javascript const innerAudioContext = wx.createInnerAudioContext(); innerAudioContext.src = 'your_audio_url_here'; innerAudioContext.play(); ``` #### 数据结构设计 定义一个数组存储所有的音频项信息,每条记录至少应包含 URL 和标题两个属性: ```json [ {"title": "Song Title 1", "url": "/path/to/audiofile1.mp3"}, {"title": "Song Title 2", "url": "/path/to/audiofile2.mp3"} ] ``` #### 页面逻辑处理 当用户点击某一首歌时更新当前播放索引,并调用相应的方法设置新的源路径再开始播放: ```javascript Page({ data: { playlist: [ { title: 'Track One', url: '/audio/track_one.mp3' }, { title: 'Track Two', url: '/audio/track_two.mp3' } ], currentIndex: null, isPlaying: false }, onLoad(options){ this.innerAudioCtx = wx.createInnerAudioContext(); // 创建音频实例 }, playMusic(index){ const track = this.data.playlist[index]; if (!this.data.isPlaying || this.data.currentIndex !== index) { this.setData({currentIndex:index,isPlaying:true}); this.innerAudioCtx.src = track.url; this.innerAudioCtx.play(); this.innerAudioCtx.onEnded(() => { let nextIndex = (index + 1) % this.data.playlist.length; this.playMusic(nextIndex); }); } else { this.pauseMusic(); } }, pauseMusic(){ this.innerAudioCtx.pause(); this.setData({isPlaying:false}); } }) ``` 上述代码片段展示了基本的操作流程,包括初始化页面数据、响应用户的播放请求、自动跳转至下一曲目等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值