解析uni.createInnerAudioContext()createInnerAudioContext()

814 阅读2分钟

uni.createInnerAudioContext() 是一个用于在小程序(如微信小程序、支付宝小程序等)或类似框架(如 UniApp)中创建音频上下文的方法。这个方法允许你创建一个音频上下文对象,通过该对象可以控制音频的播放、暂停、停止等操作。

使用方法

  1. 创建音频上下文对象: 使用 uni.createInnerAudioContext() 创建一个音频上下文对象,并指定音频的来源(src)。
  2. 设置音频属性: 设置音频的一些基本属性,如音量、循环播放等。
  3. 控制音频播放: 使用上下文对象的方法来控制音频的播放状态。

示例代码

以下是一个使用 uni.createInnerAudioContext() 播放音频的基本示例:

Javascript
深色版本
// 创建音频上下文对象
const audioCtx = uni.createInnerAudioContext();

// 设置音频来源
audioCtx.src = 'https://example.com/path/to/audio.mp3';

// 设置音频的一些属性
audioCtx.volume = 0.5; // 设置音量为50%
audioCtx.autoplay = true; // 自动播放
audioCtx.loop = true; // 循环播放

// 监听音频播放状态的变化
audioCtx.onPlay(() => {
  console.log('音频开始播放');
});
audioCtx.onPause(() => {
  console.log('音频暂停播放');
});
audioCtx.onStop(() => {
  console.log('音频停止播放');
});
audioCtx.onError((res) => {
  console.log('音频播放错误:', res);
});

// 开始播放音频
audioCtx.play();

常用方法和事件

  • play() :开始播放音频。
  • pause() :暂停播放音频。
  • stop() :停止播放音频。
  • seek(time) :跳转到指定的时间点播放。
  • onPlay(callback) :监听音频开始播放的事件。
  • onPause(callback) :监听音频暂停播放的事件。
  • onStop(callback) :监听音频停止播放的事件。
  • onError(callback) :监听音频播放错误的事件。

注意事项

  1. 音频来源

    • 音频的 src 必须是一个合法的 URL,通常指向一个远程服务器上的音频文件。
    • 不支持直接使用本地文件路径作为音频来源。
  2. 权限和安全

    • 在某些情况下,播放音频可能需要用户的授权,特别是涉及到录制的音频文件。
    • 确保音频文件的 URL 是可公开访问的,并且符合相关版权要求。
  3. 生命周期管理

    • 在组件销毁或不再需要音频对象时,记得释放音频上下文对象,以避免内存泄漏。

示例:使用本地文件

如果你需要播放用户通过选择上传的本地文件,可以先将文件保存到本地缓存,然后使用返回的临时文件路径作为音频来源:

Javascript
深色版本
uni.chooseMedia({
  mediaType: ['audio'],
  success(res) {
    const tempFilePath = res.tempFiles[0].tempFilePath;

    // 创建音频上下文对象
    const audioCtx = uni.createInnerAudioContext();

    // 设置音频来源
    audioCtx.src = tempFilePath;

    // 设置音频的一些属性
    audioCtx.volume = 0.5; // 设置音量为50%
    audioCtx.autoplay = true; // 自动播放
    audioCtx.loop = true; // 循环播放

    // 控制音频播放
    audioCtx.play();
  }
});