微信小程序音频播放

📢 博客主页:星辰丶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(() => {
      // 监听音频停止事件
    })
    this.data.audioCtx.offStop(() => {
      // 移除音频停止事件
    })
    this.data.audioCtx.onEnded(() => {
      // 监听音频自然播放至结束的事件
    })
    this.data.audioCtx.offEnded() // 移除音频自然播放至结束的事件的监听函数----*如果有监听音频播放结束的事件建议加上移除播放结束的事件
    this.data.audioCtx.onError(() => {
      // 监听音频播放错误事件
    })
    this.data.audioCtx.offError(() => {
      // 移除音频播放错误事件的监听函数
    })
  }

二,背景音频播放

         1,实现方法

wx.getBackgroundAudioManager()
// 获取全局唯一的背景音频管理器。小程序切入后台,如果音频处于播放状态,可以继续播放

         2,实现流程

1,首先创建音频上下文对象(这里以在onLoad创建展示并把audioCtx实例存储到data里面)
Page({
  data: {
    backgroundAudioManager : {}
  },
  onLoad() {
    const backgroundAudioManager = wx.getBackgroundAudioManager()
    this.setData({
      backgroundAudioManager 
    })
  },
})

2,创建完成之后进行使用(这里列举常用的一些属性,更多属性建议查询文档)
backgroundAudio() {
    let backgroundAudioManager = this.data.backgroundAudioManager
    backgroundAudioManager.title = ''     // 音频标题(必填)
    backgroundAudioManager.coverImgUrl = ''  // 封面图 URL
    backgroundAudioManager.epname = ''       // 专辑名
    backgroundAudioManager.singer = ''       // 歌手名
    backgroundAudioManager.playbackRate = 1  // 播放速度。范围 0.5-2.0,默认为 1
    backgroundAudioManager.currentTime = 0   // 当前音频的播放位置(单位:s)
    backgroundAudioManager.play()   // 播放音频
    backgroundAudioManager.pause()  // 暂停音频
    backgroundAudioManager.stop()   // 停止播放
    backgroundAudioManager.seek()   // 跳转的位置,单位 s。精确到小数点后 3 位,即支持 ms 级别精确度
    backgroundAudioManager.onPlay(() => {
      // 监听背景音频播放事件
    })
    backgroundAudioManager.onPause(() => {
      // 监听背景音频播放事件
    })
    backgroundAudioManager.onError(() => {
      // 监听背景音频播放错误事件
    })
    backgroundAudioManager.onTimeUpdate(() => {
      // 背景音频播放进度更新事件的监听函数

    })
    backgroundAudioManager.onEnded(() => {
      // 监听背景音频自然播放结束事件
    })
    backgroundAudioManager.onNext(() => {
      // 监听用户在系统音乐播放面板点击下一曲事件
    })
    backgroundAudioManager.onPrev(() => {
      // 监听用户在系统音乐播放面板点击上一曲事件
    })
  }

        3,背景音频注意点

  • 背景音频设置路径之后就会自动播放
  • 如果在只是在当前界面锁屏播放的话需要在页面卸载的时候停止播放背景音频

        4,app.json属性配置

如果背景音频需要锁屏播放的话需要在app.json文件中配加上这行代码才可以,要不然不能锁屏播放 
"requiredBackgroundModes": ["audio", "location"],

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

       

简易demo展示

        1,所用到的组件--slider

<view class="musicPlay">
   <text class="start">开始时间</text>
   <slider bindchange="sliderChange" class="slider" block-size="12px" max="{{maxTime}}" value="{{value}}" min="0"></slider>
   <text class="end">结束时间</text>
</view>

<!-- sliderChange 是拖动一次slider组件后触发的事件 -->

<!-- block-size 滑块的大小,取值范围为 12 - 28 -->

<!-- max 最大值 -->

<!-- min 最小值  默认是0可以不写 -->

<!-- value 当前取值 -->

<!-- slider组件宽度无法直接更改 -->

// 时间处理  
formatTime(seconds: number): string {
    const minutes = Math.floor(seconds / 60)
    const remainingSeconds = seconds % 60
    const formattedMinutes = String(minutes).padStart(2, '0')
    const formattedSeconds = String(remainingSeconds).padStart(2, '0')
    return `${formattedMinutes}:${formattedSeconds}`
},
// 在点击播放按钮之后应该加上下面这段代码实时更新slider的进度
      this.data.timer = setInterval(() => {
        let currentValue = this.data.value
        // 计算新的 value 值  
        let newValue = currentValue + 1
        // 使用 this.setData 来更新页面数据  
        this.setData({
          value: newValue
        })
        if (this.data.maxTime == this.data.value) {
          this.setData({
            value: 0
          })
          clearInterval(this.data.timer)
        }
      }, 1000)
// 拖动slider事件--拖动组件会拿到拖动的时间然后修改value值以及时间
  sliderChange(e: any) {
    let v = e.detail.value
    console.log(v, '拖动时间')
    this.setData({
      value: v,
      nowTime: this.formatTime(Number(v)), // 这里是修改开始时间
    })
    音频播放器.seek(v) // 这里是传递给音频播放器跳转的时间
  },
// 当然音频方法中也需要写实时更新播放进度(当然时间也需要去处理)
音频播放器.onTimeUpdate(() => {
      // 背景音频播放进度更新事件的监听函数

    })

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

<view class="sound_bg">
  <image class="sound_bg_img" src="图片路径"></image>
</view>
.sound_bg {
  position: fixed;
  top: 25%;
  width: 400rpx;
  height: 400rpx;
  border-radius: 50%;
  border: 5rpx solid #ccc;
  box-sizing: border-box;
  overflow: hidden;
}

.sound_bg_img {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  animation: picturesRotate 30s linear infinite;
/* 上面是控制图片360°旋转的动画 可以自行修改对应的时间 */
}

@keyframes picturesRotate {
  from {
    transform: rotate(0deg);
  }

  to {
    transform: rotate(360deg);
  }
}

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现在微信小程序中点击播放音频,你可以使用`<audio>`标签和相应的事件监听来实现。以下是一个简单的示例代码,展示了如何在微信小程序中实现点击播放音频的功能: 在 wxml 文件中,添加以下代码: ```html <!-- 播放按钮 --> <button bindtap="playAudio">播放</button> <!-- 音频组件 --> <audio id="audio" src="{{ audioSrc }}" bindplay="onPlay" bindpause="onPause"></audio> ``` 在 js 文件中,添加以下代码: ```javascript Page({ data: { audioSrc: '音频地址', isPlaying: false }, // 播放按钮点击事件 playAudio() { const audio = this.selectComponent('#audio'); if (this.data.isPlaying) { audio.pause(); } else { audio.play(); } }, // 音频播放事件 onPlay() { this.setData({ isPlaying: true }); }, // 音频暂停事件 onPause() { this.setData({ isPlaying: false }); } }); ``` 请将`音频地址`替换为你要播放的实际音频地址。当点击播放按钮时,会触发`playAudio`方法,在该方法中判断当前是否正在播放音频,如果是,则暂停音频;如果不是,则播放音频。同时,通过`bindplay`和`bindpause`事件监听,当音频开始播放和暂停时,会触发相应的事件处理函数`onPlay`和`onPause`,在这些函数中可以根据需要进行相关操作,比如更新播放状态。 这样就可以实现点击播放音频的功能了。当点击播放按钮时,音频会开始播放;再次点击播放按钮,则会暂停音频播放

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值