更新记录

0.0.1(2026-03-09)

  • 实现了跨平台流式音频播放功能
  • 支持 Android、iOS、HarmonyOS、Web、微信小程序 平台
  • 支持 uni-app 和 uni-appx 框架
  • 提供了基础的事件监听功能
  • 完善了使用文档和 API 说明

平台兼容性

uni-app(4.85)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
6.0
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - -

uni-app x(4.85)

Chrome Safari Android iOS 鸿蒙 微信小程序
6.0

lime-stream-audio

基于 UTS 实现的跨平台流式音频播放器,兼容 iOS、Android、HarmonyOS、Web 和小程序平台,支持实时流式音频播放。

安装

  1. 在 HBuilderX 中导入插件
  2. 在需要使用的页面或组件中导入 getStreamAudioPlayer 方法
  3. APP 需要自定义基座,uni-app(鸿蒙、Web、微信小程序需要源码),uni-appx 没有限制

基础使用

以下示例展示如何通过网络请求实现流式音频播放:

// Vue 3 Composition API
import { getStreamAudioPlayer } from '@/uni_modules/lime-stream-audio'

const audioPlayer = getStreamAudioPlayer()
audioPlayer.setSampleRate(16000)

// 使用 uni.request 实现流式音频请求
const fetchAudioStream = () => {
  let task = uni.request({
    url: 'https://example.com/audio-stream',
    method: 'GET',
    timeout: 600000,
    enableChunked: true,
    success: (response) => {
      console.log('音频流请求结束')
      audioPlayer.finishWrite()
    },
    fail: (err) => {
      console.error('获取音频流失败:', err)
    }
  })

  // 处理接收到的音频数据
  task.onChunkReceived((response) => {
    try {
      // 假设服务器返回的是 base64 编码的音频数据
      const chunkText = new TextDecoder().decode(response.data)
      if (chunkText && chunkText.length > 0) {
        audioPlayer.writeBase64(chunkText)
      }
    } catch (error) {
      console.error('处理音频数据失败:', error)
    }
  })
}

const onPlayVoice = () => {
  console.log('开始播放流式音频');

  // 开始获取音频流
  fetchAudioStream()

  // 开始播放
  audioPlayer.play()
}

const onStopVoice = () => {
  console.log('停止播放');
  audioPlayer.stop()
}

高级功能

事件监听

以下示例展示如何使用音频播放器的事件监听功能:

// 创建音频播放器实例
const audioPlayer = getStreamAudioPlayer()

// 设置采样率
audioPlayer.setSampleRate(16000)

// 监听播放开始事件
audioPlayer.onStarted(() => {
  console.log('音频播放开始');
});

// 监听播放暂停事件
audioPlayer.onPaused(() => {
  console.log('音频播放暂停');
});

// 监听播放恢复事件
audioPlayer.onResumed(() => {
  console.log('音频播放恢复');
});

// 监听播放停止事件
audioPlayer.onStopped(() => {
  console.log('音频播放停止');
});

// 监听播放完成事件
audioPlayer.onCompleted(() => {
  console.log('音频播放完成');
});

// 监听播放错误事件
audioPlayer.onError((error) => {
  console.error('音频播放错误:', error);
});

// 监听播放进度事件
audioPlayer.onProgress((current, total) => {
  console.log('播放进度:', current, '/', total);
});

// 开始播放
audioPlayer.play();

API

方法

getStreamAudioPlayer()

获取流式音频播放器实例。

audioPlayer.setSampleRate(rate)

设置音频采样率。

参数说明:

  • rate Number 采样率,单位:Hz

audioPlayer.writeBase64(base64)

写入 base64 格式的音频数据。

参数说明:

  • base64 String base64 编码的音频数据

audioPlayer.writeData(data)

写入 ArrayBuffer 格式的音频数据。

参数说明:

  • data ArrayBuffer 音频数据

audioPlayer.finishWrite()

标记音频数据写入完成。

audioPlayer.play()

开始播放音频。

audioPlayer.pause()

暂停播放音频。

audioPlayer.resume()

恢复播放音频。

audioPlayer.stop()

停止播放音频。

audioPlayer.setVolume(volume)

设置音量。

参数说明:

  • volume Number 音量,范围:0.0 - 1.0

audioPlayer.dispose()

释放播放器资源。

事件监听

audioPlayer.onStarted(callback)

监听播放开始事件。

audioPlayer.onPaused(callback)

监听播放暂停事件。

audioPlayer.onResumed(callback)

监听播放恢复事件。

audioPlayer.onStopped(callback)

监听播放停止事件。

audioPlayer.onCompleted(callback)

监听播放完成事件。

audioPlayer.onError(callback)

监听播放错误事件。

回调参数:

  • error Object 错误信息
    • errorCode Number 错误码
    • errorMessage String 错误信息

audioPlayer.onProgress(callback)

监听播放进度事件。

回调参数:

  • current Number 当前播放时间,单位:ms
  • total Number 总播放时间,单位:ms

移除事件监听

  • audioPlayer.offStarted(callback)
  • audioPlayer.offPaused(callback)
  • audioPlayer.offResumed(callback)
  • audioPlayer.offStopped(callback)
  • audioPlayer.offCompleted(callback)
  • audioPlayer.offError(callback)
  • audioPlayer.offProgress(callback)

平台兼容性

平台 支持情况 注意事项
iOS 需在 Info.plist 中添加音频权限
Android 需在 AndroidManifest.xml 中添加音频权限
HarmonyOS 需添加音频权限
Web 需在 HTTPS 环境下使用
小程序 需在小程序后台配置音频权限

打赏

如果你觉得本插件解决了你的问题,赠人玫瑰,手留余香。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。