Uniapp录音实时回调原生插件-YL-AudioRecorder

2023-11-16

YL-AudioRecorder 插件地址:https://ext.dcloud.net.cn/plugin?id=14028

升级版 YL-AudioRecorderPlus 支持mp3录制及实时回调:https://ext.dcloud.net.cn/plugin?id=14047

插件说明:

由于uni提供的录音管理器uni.getRecorderManager(),不支持APP上的实时回调,由此便诞生了该原生录音插件。

该录音插件支持PCM录音实时帧回调,支持获取录音文件路径,支持pcm转wav,支持pcm播放,

支持设置录音参数如采样率,声道,位深等;

需要注意的是,目前该插件仅支持安卓端,不支持IOS!

1.使用方法:

  • 1.引入插件:
const ar = uni.requireNativePlugin("YL-AudioRecorder");
  • 2.设置参数
//第1个参数sampleRate:采样率,默认16000
//第2个参数channel:声道:默认1,可选值1或2
//第3个参数audioFormat:位宽:默认16,可选8或16
//参数设置为-1时,不处理
ar.setConfig(-1, -1, -1);
  • 3.开始录音(回调中包含两个参数,buffer,isList):
//buffer实时返回的byte[],大小为你设置的frameSize,若需base64编码,可自行转换
//isList是否是最后一帧,最后一帧时buffer为空
ar.start(res => {
	this.data = "" + res.buffer + "," + res.isLast;
});

...

//转base64方法:
toBase64(buffer) {
	var binary = "";
	var bytes = new Uint8Array(buffer);
	var len = bytes.byteLength;
	for (var i = 0; i < len; i++) {
		binary += String.fromCharCode(bytes[i]);
	}
	var base64 = btoa(binary)
	return base64;
}
  • 4.停止录音,返回录音文件路径:
ar.stop(path => {
	this.path = path;
});
  • 5.播放录音
ar.play(this.path);
  • 6.停止播放:
ar.stopPlay();
  • 7.pcm转wav:
ar.pcmToWav(this.path, path => {
	this.path = path;
});
  • 8.销毁:
ar.release();

代码示例:

<template>
	<div style="padding: 20rpx;">
		<button type="primary" @click="start" style="margin-top: 20rpx;">开始录音</button>
		<button type="primary" @click="stop" style="margin-top: 20rpx;">停止录音</button>
		<button type="primary" @click="play" style="margin-top: 20rpx;">播放录音</button>
		<button type="primary" @click="stopPlay" style="margin-top: 20rpx;">停止播放</button>
		<button type="primary" @click="pcmToWav" style="margin-top: 20rpx;">pcm转wav</button>
		<div style="margin-top: 20rpx;">
			<text class="text">实时回调:{{data}}</text>
		</div>
		<div style="margin-top: 20rpx;">
			<text class="text">录音文件路径:{{path}}</text>
		</div>
	</div>
</template>

<script>
	const ar = uni.requireNativePlugin("YL-AudioRecorder");

	export default {
		data() {
			return {
				data: "",
				path: ""
			}
		},
		mounted() {
			//第1个参数sampleRate:采样率,默认16000
			//第2个参数channel:声道:默认1,可选值1或2
			//第3个参数audioFormat:位宽:默认16,可选8或16
			//参数设置为-1时,不处理
			ar.setConfig(-1, -1, -1);
		},
		beforeDestroy() {
			ar.release();
		},
		methods: {
			start() {
				console.log('start');
				ar.start(res => {
					this.data = "" + res.buffer + "," + res.isLast;
				});
			},
			stop() {
				console.log('stop');
				ar.stop(path => {
					this.path = path;
				});
			},
			play() {
				if (this.path) {
					ar.play(this.path);
				}
			},
			stopPlay() {
				ar.stopPlay();
			},
			pcmToWav() {
				if (this.path) {
					ar.pcmToWav(this.path, path => {
						this.path = path;
					});
				};
			},
			toBase64(buffer) {
				var binary = "";
				var bytes = new Uint8Array(buffer);
				var len = bytes.byteLength;
				for (var i = 0; i < len; i++) {
					binary += String.fromCharCode(bytes[i]);
				}
				var base64 = btoa(binary)
				return base64;
			}
		}
	}
</script>

<style>
	.text {
		line-height: 1.5;
		text-align: justify;
		word-wrap: break-word;
	}
</style>

当您有使用讯飞语音websocket的需求,但自行调试无法成功时,可联系本人付费提供APP端demo,
联系方式QQ:453503875,微信:bylss311

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Uniapp录音实时回调原生插件-YL-AudioRecorder 的相关文章

  • 实时音频流容器格式

    当我开始接收实时音频 无线电 流 例如 MP3 或 AAC 时 我认为接收到的数据不是原始比特流 即原始编码器输出 但它们总是被包装成某种容器格式 如果这个假设是正确的 那么我想我无法从流的任意位置开始流式传输 但我必须等待某个同步字节 是
  • 使用 Naudio 将 MP3 文件转换为 WAV 文件时遇到问题

    瑙迪奥图书馆 http naudio codeplex com http naudio codeplex com 我正在尝试将 MP3 文件转换为 WAV 文件 但遇到了一个小错误 我知道出了什么问题 但我真的不知道如何解决它 这是我正在运
  • 将 PCM 波形数据转换为 numpy 数组,反之亦然

    情况 我正在使用 WebRTC 中的 VAD 语音活动检测 WebRTC VAD https github com wiseman py webrtcvad Python 适配器 这示例实现 https github com wiseman
  • 通过 Nginx、Django 提供 206 字节范围服务

    我让 Nginx 为我的静态 Django 文件提供服务 该文件在 Gunicorn 上运行 我正在尝试提供 MP3 文件并让它们具有头部 206 以便 Apple 接受它们用于播客 目前 音频文件位于我的静态目录中 并直接通过 Nginx
  • 在php中读取mp3流并回显给客户端

    我想要实现的是一个页面 当客户端连接时 该页面不断地从本地ice cast服务器读取 http 127 0 0 1 8000 stream mp3 并将流回显给客户端 从那里 客户端可以在基本音频标签中播放它
  • 在 Chrome 中使用 JavaScript 将音频录制为 .wav

    我正在构建一个网页 用于记录用户设备中的音频 并将其发送到 Microsoft 的认知语音服务以进行语音到文本的转换 到目前为止 我已经能够创建和播放用 JavaScript 制作的 ogg 文件 但我需要获取 wav 格式的文件 斑点类型
  • 如何获取仍在加载的声音对象的最终长度?

    我正在 ActionScript 3 中创建一个基本的 MP3 播放器 我有一个基本的进度条 指示歌曲已播放了多少 进度以 0 到 1 之间归一化的小数百分比计算 如下所示 var progress Number channel posit
  • 将 MP3 裁剪到前 30 秒

    原始问题 我希望能够从现有的 MP3 文件生成一个新的 完全有效的 MP3 文件以用作预览 先试后买的风格 新文件应该只包含第一个n轨道的秒数 现在 我知道我可以 砍流 n交付文件时的秒数 根据比特率和标头大小计算 但这有点脏 而且是 VB
  • Ruby 中的波形可视化

    我即将启动一个记录和编辑音频文件的项目 并且我正在寻找一个好的库 最好是 Ruby 但会考虑 Java 或 NET 以外的任何库 来实现波形的动态可视化 有谁知道我应该从哪里开始搜索 有大量数据要流入浏览器 Flash 或 Flex 图表可
  • 寻找 Wii 兼容的 Javascript Flash mp3 播放器

    我正在寻找一款能够在 Wii 上基于 Opera 的浏览器中运行的 flash mp3 播放器 播放器需要启用 javascript 支持播放 停止等方法 mp3 曲目列表将使用与播放器相同的页面上的 ajax 动态构建 因此当曲目完成播放
  • asp.net 从 mp3 创建波形图像

    我正在寻找一种方法来创建上传到服务器的 mp3 文件的图形波形 经过一番研究 我相信 mp3 需要首先转换为原始格式 但我不知道如何为该声音文件创建 gif 波形格式 90 的声音文件长度超过 60 分钟 我知道这无法在上传后立即完成 需要
  • 从数据库中检索mp3文件

    我有一个关于如何从数据库中检索存储为 byte 数组的 mp3 文件并将其显示在表单中并让用户下载 播放的问题 唔 这确实可以做到 但如果它是 RDBMS 您确实应该重新考虑解决方案 通常 数据库不是为使用大型二进制对象而设计或优化的 并且
  • 在 C# 中查找 MP3 长度

    我在用着TagLib http developer novell com wiki index php TagLib Sharp从一些 MP3 中获取 ID3 标签数据 但我似乎无法找到 MP3 的长度 如何在 C 中找到 MP3 的长度
  • 是否可以使用 TagLibSharp 从 MP3 文件中删除 Lyrics3v2 标签?

    我想知道是否可以删除歌词3v2使用 MP3 文件中的标签类型标签库夏普 https github com mono taglib sharp图书馆 This http id3 org Lyrics3v2文档说块条目以单词 开头歌词开始 并以
  • 如何使用 JavaSound (Java, Java Sound) 从 .wave 文件读取信息

    您好 我需要从 wave 文件中读取采样率 信号频率和幅度 我怎样才能使用 JavaSound 做到这一点 您可以通过获取句柄来获取采样率AudioFormat object AudioInputStream audioInputStrea
  • 在 Android 中从 Mp3 检索元数据的最佳方法

    我一直在为 Android 开发一个小型媒体播放器应用程序 我在从音乐文件检索元数据时遇到一些问题 我一直在使用媒体元数据检索器 但事实证明这是相当麻烦的 有谁知道更好的方法来解决这个问题 如果是这样 如何实现这样的方法 我用过JAudio
  • Java - 调整 WAV 文件的播放速度

    我可能很笨 但我似乎找不到解决我的问题的方法 NOTE 我发现很多人报告了这个问题 似乎它是由于较新的 Java 可能是 1 5 而发生的 也许不再支持 SAMPLE RATE 我无法找到任何解决方案 我正在尝试调整 SAMPLE RATE
  • Android 中的音频交叉淡入淡出

    我正在开发一个媒体播放器用于我的学习目的 我希望在媒体播放器应用程序中具有交叉淡入淡出功能 但我不知道从哪里开始 我尝试在互联网上搜索但没有运气 我使用的是安卓MediaPlayer所有媒体播放器相关操作的类 任何人都知道任何解决方法可以实
  • JavaFX MediaPlayer - 音乐在 10 秒后停止

    这是代码 就像标题所说的 音乐在10秒后停止 我在vlc或其他程序中正常播放该文件 持续了5分钟多 public void music String bip src data fjordmusic mp3 Media hit new Med
  • 在下载整个文件之前是否可以知道 MP3 的持续时间?

    这是一个关于MP3文件格式的问题 我一直在寻找一种获得 MP3 持续时间的方法 由于我使用 JLayer SPI 来解码 MP3 我发现在音频源是文件的情况下这是可能的 AudioFileFormat fileFormat AudioSys

随机推荐

  • 使用tf.keras实现 softmax多分类的代码

    softmax多分类 多分类问题的关键在于输出10个概率值 然后使用softmax进行激活 softmax激活函数 能把10个输出变为10个概率分布 然后这10个概率的和为1 1 对数几率回归 解决的是 二分类的问题 对于 多个选项 的问题
  • [云原生专题-42]:K8S - 核心概念 - placeholder-有状态服务

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 placeholder 作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址
  • 讲一点点自动驾驶技术(1)概论

    讲一点点自动驾驶技术 1 概论 作为一个自动驾驶小菜鸟工程师 小Q入门才两三年时间 最近空闲时间比较多 利用这个平台把自己对于无人驾驶技术所看所学的东西在这进行一个整理 一来自己看着方便 二来供大家交流学习 Xiao Xi ps 如果大家觉
  • github 上传和拉取 support for passward authentication was removed...

    参考下面这篇文章 remote Support for password authentication was removed on August 13 2021 IT博客技术分享的博客 CSDN博客 但是记得把repositories和
  • Java教程【01.02】Java引用类型数组和继承的意义

    Java引用类型数组和继承的意义 Java引用类型数组和继承是Java中常用的两个概念 它们在编程中起到重要的作用 在本教程中 我们将讨论Java引用类型数组的使用以及继承的意义 并提供相关的示例 步骤1 创建引用类型数组 Java中的引用
  • AI2.0:十年之后我们还能做什么

    AI大模型展现惊人能力 有望成为下一代通用技术平台 2010年 麻省理工大学阿齐跌鲁教授等提出了科技发展如何影响人类就业的分析框架 当前 随着以GPT 4为代表的大语言模型的出现 A1开始具备文本生成 语言理解 知识问答 逻辑推理等能力 A
  • 代理HTTP使用不当会出现哪些问题?如何正确使用代理服务?

    代理HTTP是一种常见的网络代理方式 它为客户端和服务器之间提供中间层 转发上下游的请求和响应 正确使用代理HTTP可以提高采集效率 增加网络安全性 加速网络速度 保护用户隐私 但是 使用不当就难以达到预期的效果 在使用代理HTTP服务器时
  • 【VMware】虚拟机中Ubuntu无法连接网络的有效解决办法

    1 Ubuntu网络设置 依次单击 System Settings gt Network gt Wired gt Options 如下图所示 依次选择 General 勾选如下图所示的单选框 最后点击 Save 如下图所示 依次选择 IPv
  • systemctl命令和配置整理

    一 systemctl介绍 systemctl主要负责控制systemd系统和服务管理器 在ubuntu centos等一系列发行版中可用 可以方便的管理需要启动的服务等 可以实现开机自启动 出错重启和定时重启等等功能 二 systemct
  • 在ipad上刷android系统更新,全自动刷安卓4.0 索尼SGPT111刷机教程

    1刷机前 无需自行准备ROM 给Android平板刷机 其实就是给平板电脑换一个新的操作系统 当然 这个操作系统还是Android系统 只是系统界面 内置应用等内容会与之前有所不同 现在网上有很多适用于各种Android手机的Rom 我们可
  • 彩超检查报告单图片_收藏最全甲状腺检查报告解析,你关心的问题都在这!

    现在甲状腺结节患者很多 拿到甲状腺超声检查报告 很多人不太能够看得明白 当问不到专科医生时 免不了会胡乱猜想 频添烦恼 现在就教大家如何看懂超声报告 了解了这些基本信息 可以帮你大致判断病情 并有效地和医生沟通 理解医生给出的建议 如何看懂
  • 人机交互重点知识点

    人机交互重点知识点 1 绪论 1 1什么是人机交互 人机交互是关于设计 评价和实现供人们使用的交互式计算机系统 且围绕这些方面的主要现象进行研究的科学 1 2人机交互的研究内容 1 人机交互界面表示模型与设计方法 2 可用性分析与评估 3
  • vue 实现全屏

    通过引用第三方库 screenfull 实现全屏 1 首先通过 npm install screenfull 执行下载 2 在使用页面进行import screenfull from screenfull 引入 3 然后绑定事件 调用提供的
  • 【第22例】IPD 体系进阶:综合创新地图

    目录 简介 专栏目录 内容 第一步 搭建框架 第二步 构思 第三步 筛选
  • 算法分析

    声明 凡代码问题 欢迎在评论区沟通 承蒙指正 一起成长 目录 一 实验内容与要求 二 概要设计 三 直接上代码 四 运行结果 一 实验内容与要求 内容 布线问题 印刷电路板将布线区域分成n m个方格阵列 精确的电路布线问题要求确定连接方格A
  • 线性表的顺序存储结构(数组插入,删除)——c语言描述

    文章目录 1 线性表的顺序存储结构 1 2 线性表的存储结构的表示 1 2 线性表的操作 OperatorList 1 3 打印线性表 PrintList 1 4 创建线性表 1 5 清零线性表 ClearList 1 6 获取线性表指定位
  • python的赋值操作浅析

    目录 前言 一 不可变类型的赋值 1 Numbers的赋值 2 String类型的赋值 3 Tupes类型赋值 4 函数传参赋值 二 可变类型的赋值 1 List赋值 2 函数传参 总结 前言 python中Numbers 数
  • mysql初始化命令_mysql初始化命令及其他命令

    这个问题纠结了我两年 为了配置my cnf中 undo的 参数生效 以及生成undo文件 使用一下命令 usr bin mysql install db defaults file etc my cnf datadir dbfiles da
  • type object xxx has no attribute objects

    在Django 2 0以下版本 使用自定义管理器存在一个BUG 该BUG引发的原因 是因为报错模型使用自定义管理器 导致默认的objects管理器被覆盖掉了 我的解决方案是 升级Django版本 升级到Django 2 2 1 如果有大佬知
  • Uniapp录音实时回调原生插件-YL-AudioRecorder

    YL AudioRecorder 插件地址 https ext dcloud net cn plugin id 14028 升级版 YL AudioRecorderPlus 支持mp3录制及实时回调 https ext dcloud net