uni-app audio倍速模块问题:当设置了倍速后,切换进度或暂停后重新播放,倍速都会变回1

uni-app audio倍速模块问题:当设置了倍速后,切换进度或暂停后重新播放,倍速都会变回1

audio倍速模块,当设置了倍速后,切换进度或者暂停后重新播放,倍速都会变回1

5 回复

几个都有这个问题,背景音乐或者普通的audio

更多关于uni-app audio倍速模块问题:当设置了倍速后,切换进度或暂停后重新播放,倍速都会变回1的实战教程也可以访问 https://www.itying.com/category-93-b0.html


可先重新设置下倍速

问题已确认,临时解决可以在恢复播放后在重新设置一下倍速

HBuilderX Alpha 3.4.6 已修复

在 uni-app 中,如果你在播放音频时设置了倍速(playbackRate),但在切换进度或暂停后重新播放时,倍速又恢复为默认的 1.0,这通常是因为你没有在重新播放时重新设置倍速。

要解决这个问题,你需要在每次播放音频时(包括切换进度或暂停后重新播放时)都重新设置倍速。以下是一个示例代码,展示了如何在 uni-app 中处理音频倍速的问题:

export default {
  data() {
    return {
      audioContext: null,
      playbackRate: 2.0, // 默认倍速
    };
  },
  onLoad() {
    // 创建音频上下文
    this.audioContext = uni.createInnerAudioContext();
    this.audioContext.src = 'https://example.com/your-audio-file.mp3';

    // 监听播放事件
    this.audioContext.onPlay(() => {
      // 每次播放时设置倍速
      this.audioContext.playbackRate = this.playbackRate;
    });

    // 监听暂停事件
    this.audioContext.onPause(() => {
      // 暂停时不需要做特殊处理
    });

    // 监听停止事件
    this.audioContext.onStop(() => {
      // 停止时不需要做特殊处理
    });

    // 监听进度更新事件
    this.audioContext.onTimeUpdate(() => {
      // 进度更新时不需要做特殊处理
    });

    // 监听音频结束事件
    this.audioContext.onEnded(() => {
      // 音频结束时不需要做特殊处理
    });
  },
  methods: {
    playAudio() {
      this.audioContext.play();
    },
    pauseAudio() {
      this.audioContext.pause();
    },
    seekAudio(position) {
      this.audioContext.seek(position);
    },
    setPlaybackRate(rate) {
      this.playbackRate = rate;
      this.audioContext.playbackRate = rate;
    },
  },
  onUnload() {
    // 销毁音频上下文
    if (this.audioContext) {
      this.audioContext.destroy();
    }
  },
};

关键点解释:

  1. onPlay 事件监听:在每次播放音频时,重新设置 playbackRate,确保倍速不会恢复为默认值。
  2. setPlaybackRate 方法:用于动态设置倍速,并在设置后立即应用到音频上下文。
  3. seekAudio 方法:在切换进度后,重新播放音频时,onPlay 事件会触发,从而重新设置倍速。

使用示例:

<template>
  <view>
    <button @click="playAudio">播放</button>
    <button @click="pauseAudio">暂停</button>
    <button @click="seekAudio(30)">跳转到30秒</button>
    <button @click="setPlaybackRate(1.5)">设置倍速为1.5</button>
  </view>
</template>
回到顶部