更新记录

0.5.1(2025-01-08)

v 0.5.1

  1. 修复录音时,传入指定文件夹或文件前缀字符为空时,未指定默认文件或前缀的问题

0.5.0(2024-12-31)

首发版本 v 0.5.0


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 4.31,Android:5.0,iOS:不支持,HarmonyNext:不支持 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
× × × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

bsx-recorder-api 一款适用于移动端录音操作的UTS API插件

版本

v 0.5.1

  1. 修复录音时,传入指定文件夹或文件前缀字符为空时,未指定默认文件或前缀的问题

重要

  • 此API是UTS API 可用于开发录音机、聊天发语音等场景
  • 暂仅支持Android 端
  • 需要打自定义基座
  • 本插件API 没有额外权限,处理仅访问APP外部私有存储的Files目录

开发文档

UTS API插件

作者

aoaobaba 傲傲爸爸~

介绍

BSX框架的基础API插件,目前封装了Android端的能力,存粹的Android Api调用,无需第三方库。主要实现了开始录音、停止录音、开始播放、停止播放等API;包含相关Action的Callback。内部实现了一个简单的音频实时柱状可视化, 调用也非常的方便,仅需要传入unve页面的用于可视化的view id即可。

话不多说,下面详细介绍。

功能

  • [X] 实时录音转录Aac文件
  • [X] 录音、停止录音功能
  • [X] 播放、停止播放功能
  • [X] 自定义语音存储文件夹
  • [X] 自定义语音文件前缀
  • [X] 全过程的回调(录音开始、录音中、录音停止、开始播放、停止播放回调等)
  • [X] 实时录音可视化(柱状图)
  • [X] 明确的功能属性定义

类型

bsxRecorderOption 录音操作
// 录音操作
type bsxRecorderOption = {  
    maxDuration?: number     // 最大录音时长 超出自动停止 默认30分钟 单位ms
    enableSilenceHandle: boolean   // 是否启用静音处理
    silenceThreshold?: number  // 静音检测阈值 低于此值则判断为静音 默认50 ;一般说话声音60~90
    silenceThresholdMs?: number  // 静音持续时长阈值 连续检测到静音的时长 超出则自动停止录音
    enableAudioVisualizer?: boolean  // 是否启用音频可视化
    visualizerViewId?: string  // 启用音频可视化后 需要绑定的页面的view id 
    visualizerColor?: string  // 音频可视化颜色 注意!!暂支持Android Color :RRGGBB RGB  ARGB 转换异常时默认CYAN
    fileDirectoryName? : string   //文件存储目录 如果空 则创建在BsxRecorder 目录下
    fileNameSuffix? : string   // 录音aac文件名前缀 完整的文件名为前缀_日期时间  默认bsx_recorder
    onFail : (res:string) => void  // 录音失败时的回调
    onStart?: () => void        // 录音开始时的回调
    onRecording?: () => void        // 录音中的回调
    onStop?: (filePath:string) => void      // 录音停止时的回调
}
bsxRecordPlayOption 播放操作
type bsxRecordPlayOption = {
    filePath: string,       // 文件全路径(注意 并不是Uni 文件api获取的相对路径!!!!)
    enableAudioVisualizer?: boolean  // 是否启用音频可视化
    visualizerViewId?: string  // 启用音频可视化后 需要绑定的view id 
    visualizerColor?: string  // 音频可视化颜色 参考上面的
    onStart?: () => void        // 开始播放的回调
    onEnd?: () => void      // 播放结束的回调
    onStop?: () => void     // 播放停止的回调
}

API Functions

录音Api
/**
  * @Description: 开启录音
  * 
  * @author aoaobaba
  * 
  * @param1 录音操作 type of bsxRecorderOption
  * @param2 页面实例 type of UniPage
  * @return 
  * @createTime: 2024-12-31 17:24:44
  * @Copyright by aoaoms.com
  */
function bsxRecorderStart(options: bsxRecorderOption, pageInstance: UniPage)
/**
  * @Description: 停止录音
  * 
  * @author aoaobaba
  * 
  * @param
  * @return 录音文件全路径
  * @createTime: 2024-12-31 17:24:44
  * @Copyright by aoaoms.com
  */
function bsxRecorderStop():string
播放录音Api
/**
  * @Description: 播放文件
  * 
  * @author aoaobaba
  * 
  * @param1 播放操作 type of bsxRecordPlayOption
  * @param2 页面实例 type of UniPage
  * @return 
  * @createTime: 2024-12-31 17:24:44
  * @Copyright by aoaoms.com
  */
function bsxPlayAacFile(options: bsxRecordPlayOption, pageInstance: UniPage)
/**
  * @Description: 停止播放
  * 
  * @author aoaobaba
  * 
  * @param
  * @return 
  * @createTime: 2024-12-31 17:24:44
  * @Copyright by aoaoms.com
  */
function bsxStopPlayAacFile()

使用

  1. 导入插件到项目
  2. 需要的地方调用Api

示例

// 导入api 和类型
import { bsxRecorderOption, bsxRecordPlayOption, bsxRecorderStart, bsxRecorderStop, bsxPlayAacFile, bsxStopPlayAacFile } from '@/uni_modules/bsx-recorder-api'
const startRecording = () => {
    if (!isRecording.value) {
        isRecording.value = true
        // 开始录音
        bsxRecorderStart({
            maxDuration: 60000,
            enableSilenceHandle: false,
            silenceThreshold: 80,
            silenceThresholdMs: 5000,
            enableAudioVisualizer: true,
            visualizerViewId: "bsx-recoder-Visualizer",
            visualizerColor: props.uiStyle!.visualizerBaseColor,
            fileDirectoryName: 'xxx',
            fileNameSuffix: 'xxx',
            onFail: (res) => {
                console.log('录音错误---通知UI-----', res)
            },
            onStart: () => {
                console.log('录音开始了---通知UI-----')
                recordingTimer.value = setInterval(() => {
                    recordingDuration.value += 100
                }, 100)
            },
            onRecording: () => {
                console.log('录音中---通知UI-----')
            },
            onStop: (recorderFilePath : string) => {
                // 录音结束的 回调 自动
                isRecording.value = false
                console.log('--录音结束--录音文件---', recorderFilePath)
                filePath.value = recorderFilePath

                // 停止计时器
                clearInterval(recordingTimer.value)

                console.log('录音结束---通知UI-----')
            }
        } as bsxRecorderOption, props.pageInstance! as UniPage)
    }
}
// 关闭录音
if (isRecording.value) {
    isRecording.value = false
    <!-- 停止录音  返回录音的文件全路径 -->
    filePath.value = bsxRecorderStop()
}
// 播放文件
const playFile = () => {
    // 播放录音
    bsxPlayAacFile({
        filePath: filePath.value,
        enableAudioVisualizer: true,
        visualizerViewId: "bsx-recoder-Visualizer",
        visualizerColor: props.uiStyle!.visualizerBaseColor,
        onStart: () => {
            console.log("--播放音频的回调--- 开始播放了")
        }, onEnd: () => {
            console.log("--播放音频的回调--- 播放结束了")
        }, onStop: () => {
            console.log("--播放音频的回调--- 播放停止了")
        }
    }, props.pageInstance! as UniPage)

}
// 停止播放
const stopPlayFile = () => {
    bsxStopPlayAacFile()
}

权限

操作Files目录,无需权限;录制音频,需要开启 android.permission.RECORD_AUDIO 权限!!

tips

  1. 实用组件bsx-voicechat-wx 已发布,类微信发语音的页面组件更好的封装功能,少走弯路。搜索插件 立即获取~

谢谢!

隐私、权限声明

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

<uses-permission android:name="android.permission.RECORD_AUDIO" />

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

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

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问