LuatOS-SOC接口文档(air780E)--audio - 多媒体音频
常量
| 常量 | 类型 | 解释 |
|---|---|---|
| audio.PCM | number | PCM格式,即原始ADC数据 |
| audio.MORE_DATA | number | audio.on回调函数传入参数的值,表示底层播放完一段数据,可以传入更多数据 |
| audio.DONE | number | audio.on回调函数传入参数的值,表示底层播放完全部数据了 |
| audio.BUS_DAC | number | 硬件输出总线,DAC类型 |
| audio.BUS_I2S | number | 硬件输出总线,I2S类型 |
| audio.BUS_SOFT_DAC | number | 硬件输出总线,软件模式DAC类型 |
audio.start(id, audio_format, num_channels, sample_rate, bits_per_sample, is_signed)
启动一个多媒体通道准备播放音频
参数
| 传入值类型 | 解释 |
|---|---|
| int | 多媒体播放通道号,0或者1 |
| int | 音频格式 |
| int | 声音通道数 |
| int | 采样频率 |
| int | 采样位数 |
| boolean | 是否有符号,默认true |
返回值
| 返回值类型 | 解释 |
|---|---|
| boolean | 成功true, 失败false |
例子
audio.start(0, audio.PCM, 1, 16000, 16)
audio.write(id, data)
往一个多媒体通道写入音频数据
参数
| 传入值类型 | 解释 |
|---|---|
| string | or zbuff 音频数据 |
返回值
| 返回值类型 | 解释 |
|---|---|
| boolean | 成功返回true,否则返回false |
例子
audio.write(0, "xxxxxx")
audio.stop(id)
停止指定的多媒体通道
参数
| 传入值类型 | 解释 |
|---|---|
| int | audio id,例如0 |
返回值
| 返回值类型 | 解释 |
|---|---|
| boolean | 成功返回true,否则返回false |
例子
audio.stop(0)
audio.pause(id, pause)
暂停/恢复指定的多媒体通道
参数
| 传入值类型 | 解释 |
|---|---|
| int | audio id,例如0 |
| boolean | onoff true 暂停,false 恢复 |
返回值
| 返回值类型 | 解释 |
|---|---|
| boolean | 成功返回true,否则返回false |
例子
audio.pause(0, true) --暂停通道0 audio.pause(0, false) --恢复通道0
audio.on(id, event, func)
注册audio播放事件回调
参数
| 传入值类型 | 解释 |
|---|---|
| int | audio id, audio 0写0, audio 1写1 |
| function | 回调方法,回调时传入参数为1、int 通道ID 2、int 消息值,只有audio.MORE_DATA和audio.DONE |
返回值
| 返回值类型 | 解释 |
|---|---|
| nil | 无返回值 |
例子
audio.on(0, function(audio_id, msg)log.info("msg", audio_id, msg)
end)
audio.play(id, path, errStop)
播放或者停止播放一个文件,播放完成后,会回调一个audio.DONE消息,可以用pause来暂停或者恢复,其他API不可用。考虑到读SD卡速度比较慢而拖累luavm进程的速度,所以尽量使用本API
参数
| 传入值类型 | 解释 |
|---|---|
| int | 音频通道 |
| string/table | 文件名,如果为空,则表示停止播放,如果是table,则表示连续播放多个文件,主要应用于云喇叭,目前只有EC618支持,并且会用到errStop参数 |
| boolean | 是否在文件解码失败后停止解码,只有在连续播放多个文件时才有用,默认true,遇到解码错误自动停止 |
返回值
| 返回值类型 | 解释 |
|---|---|
| boolean | 成功返回true,否则返回false |
例子
audio.play(0, "xxxxxx") --开始播放某个文件 audio.play(0) --停止播放某个文件
audio.tts(id, data)
TTS播放或者停止
参数
| 传入值类型 | 解释 |
|---|---|
| int | 音频通道 |
| string/zbuff | 需要播放的内容 |
返回值
| 返回值类型 | 解释 |
|---|---|
| boolean | 成功返回true,否则返回false |
例子
无
audio.playStop(id)
停止播放文件,和audio.play(id)是一样的作用
参数
| 传入值类型 | 解释 |
|---|---|
| int | audio id,例如0 |
返回值
| 返回值类型 | 解释 |
|---|---|
| boolean | 成功返回true,否则返回false |
例子
audio.playStop(0)
audio.isEnd(id)
检查当前文件是否已经播放结束
参数
| 传入值类型 | 解释 |
|---|---|
| int | 音频通道 |
返回值
| 返回值类型 | 解释 |
|---|---|
| boolean | 成功返回true,否则返回false |
例子
audio.isEnd(0)
audio.getError(id)
获取最近一次播放结果,不是所有平台都支持的,目前只有EC618支持
参数
| 传入值类型 | 解释 |
|---|---|
| int | 音频通道 |
返回值
| 返回值类型 | 解释 |
|---|---|
| boolean | 是否全部播放成功,true成功,false有文件播放失败 |
| boolean | 如果播放失败,是否是用户停止,true是,false不是 |
| int | 第几个文件失败了,从1开始 |
例子
local result, user_stop, file_no = audio.getError(0)
audio.config(id, paPin, onLevel, dacDelay, paDelay, dacPin, dacLevel, dacTimeDelay)
配置一个音频通道的特性,比如实现自动控制PA开关。注意这个不是必须的,一般在调用play的时候才需要自动控制,其他情况比如你手动控制播放时,就可以自己控制PA开关
参数
| 传入值类型 | 解释 |
|---|---|
| int | 音频通道 |
| int | PA控制IO |
| int | PA打开时的电平 |
| int | 在DAC启动前插入的冗余时间,单位100ms,一般用于外部DAC |
| int | 在DAC启动后,延迟多长时间打开PA,单位1ms |
| int | 外部dac电源控制IO,如果不填,则表示使用平台默认IO,比如Air780E使用DACEN脚,air105则不启用 |
| int | 外部dac打开时,电源控制IO的电平,默认拉高 |
| int | 音频播放完毕时,PA与DAC关闭的时间间隔,单位1ms,默认0ms |
返回值
无
例子
audio.config(0, pin.PC0, 1) --PA控制脚是PC0,高电平打开,air105用这个配置就可以用了 audio.config(0, 25, 1, 6, 200) --PA控制脚是GPIO25,高电平打开,Air780E云喇叭板用这个配置就可以用了
audio.vol(id, value)
配置一个音频通道的音量调节,直接将原始数据放大或者缩小,不是所有平台都支持,建议尽量用硬件方法去缩放
参数
| 传入值类型 | 解释 |
|---|---|
| int | 音频通道 |
| int | 音量,百分比,1%~1000%,默认100%,就是不调节 |
返回值
| 返回值类型 | 解释 |
|---|---|
| int | 当前音量 |
例子
local result = audio.vol(0, 90) --通道0的音量调节到90%,result存放了调节后的音量水平,有可能仍然是100
audio.setBus(id, bus_type)
配置一个音频通道的硬件输出总线,只有对应soc软硬件平台支持才设置对应类型
参数
| 传入值类型 | 解释 |
|---|---|
| int | 音频通道,例如0 |
| int | 总线类型, 例如 audio.BUS_SOFT_DAC |
返回值
| 返回值类型 | 解释 |
|---|---|
| nil | 无返回值 |
例子
audio.setBus(0, audio.BUS_SOFT_DAC) --通道0的硬件输出通道设置为软件DAC audio.setBus(0, audio.BUS_I2S) --通道0的硬件输出通道设置为I2S
audio.debug(on_off)
配置调试信息输出
参数
| 传入值类型 | 解释 |
|---|---|
| boolean | true开 false关 |
返回值
无
例子
无
Next
bit64 - 32位系统上对64位数据的基本算术运算和逻辑运算
Previous
adc - 数模转换
评论区仅用于讨论文档内容。如有使用问题或新需求,请进支持群讨论或在官方仓库新建issue
相关文章:
LuatOS-SOC接口文档(air780E)--audio - 多媒体音频
常量 常量 类型 解释 audio.PCM number PCM格式,即原始ADC数据 audio.MORE_DATA number audio.on回调函数传入参数的值,表示底层播放完一段数据,可以传入更多数据 audio.DONE number audio.on回调函数传入参数的值,表示…...
Golang gorm manytomany 多对多 更新、删除、替换
Delete 移除 只删除中间表的数据 删除原有的 var a Article1db.Preload("Tag1s").Take(&a, 1)fmt.Printf("%v", a) {1 k8s [{1 cloud []} {2 linux []}]}mysql> select * from article1; ------------ | id | title | ------------ | 1 | k8s …...
FPGA-结合协议时序实现UART收发器(四):串口驱动模块uart_drive、例化uart_rx、uart_tx
FPGA-结合协议时序实现UART收发器(四):串口驱动模块uart_drive、例化uart_rx、uart_tx 串口驱动模块uart_drive、例化uart_rx、uart_tx,功能实现 文章目录 FPGA-结合协议时序实现UART收发器(四)࿱…...
Transformers-Bert家族系列算法汇总
🤗 Transformers 提供 API 和工具,可轻松下载和训练最先进的预训练模型。使用预训练模型可以降低计算成本、碳足迹,并节省从头开始训练模型所需的时间和资源。这些模型支持不同形式的常见任务,例如: 📝 自…...
Vulnhub系列靶机---HarryPotter-Fawkes-哈利波特系列靶机-3
文章目录 信息收集主机发现端口扫描dirsearch扫描gobuster扫描 漏洞利用缓冲区溢出edb-debugger工具msf-pattern工具 docker容器内提权tcpdump流量分析容器外- sudo漏洞提权 靶机文档:HarryPotter: Fawkes 下载地址:Download (Mirror) 难易程度ÿ…...
【服务器】ASUS ESC4000-E11 安装系统
ASUS ESC4000-E11说明书 没找到 ASUS ESC4000-E11的说明书,下面是ESC4000A-E11的说明书: https://manualzz.com/doc/65032674/asus-esc4000a-e11-servers-and-workstation-user-manual 下载地址: https://www.manualslib.com/manual/231379…...
创建java文件 自动添加作者、时间等信息 – IDEA 技巧
2023 09 亲测 文章目录 效果修改位置配置信息 效果 每次创建文件的时候,自动加上作者、时间等信息 修改位置 打开:File —> Settings —> Editor —> File and Code Templates —> includes —> FileHeader 配置信息 /*** author : Java…...
第27章_瑞萨MCU零基础入门系列教程之freeRTOS实验
本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…...
Java学习之--类和对象
💕粗缯大布裹生涯,腹有诗书气自华💕 作者:Mylvzi 文章主要内容:Java学习之--类和对象 类和对象 类的实例化: 1.什么叫做类的实例化 利用类创建一个具体的对象就叫做类的实例化! 当我们创建了…...
Unity技术手册-UGUI零基础详细教程-Canvas详解
点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…...
破天荒呀!小杜微信有名额了
写在前面 小杜粉,众所周知前面加小杜微信为好友的基本都是由名额限制的。一般都是付费进入社群且进行备注,小杜才会长期保留微信好友。主要由于,添加的人数太多了,微信账号人数名额有限。因此,小杜过一段时间…...
领域驱动设计:领域模型与代码模型的一致性
文章目录 领域对象的整理从领域模型到微服务的设计领域层的领域对象应用层的领域对象 领域对象与微服务代码对象的映射典型的领域模型非典型领域模型 DDD 强调先构建领域模型然后设计微服务,以保证领域模型和微服务的一体性,因此我们不能脱离领域模型来谈…...
TypeScript命名空间和模块
🎬 岸边的风:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想,就是为了理想的生活 ! 目录 命名空间(Namespace) 命名空间(Namespace)使用场景 第三方库 兼容…...
C++学习笔记--函数重载(1)
文章目录 序言一、洞悉函数重载决议1.1、重载决议的基本流程1.2、Name Lookup1.2.1、Qualified Name Lookup1.2.1.1、Class Member Lookup1.2.1.2、Namespace Member Lookup 1.2.2、Unqualified Name Lookup1.2.2.1、Usual Unqualified Lookup1.2.2.2、Argument Dependant Look…...
交叉编译poco-1.9.2
目录 一、文件下载二、编译三、可能遇到的问题和解决方法3.1 error "Unknown Hardware Architecture."3.2 error Target architecture was not detected as supported by Double-Conversion一、文件下载 下载地址:poco-1.9.2 二、编译 解压目录后打开build/config/…...
C++中如何处理超长的数字(long long类型的整数都无法存储的)
C中如何处理超长的数字(long long类型的整数都无法存储的) 在 C中,如果数字超出了 long long 类型的范围,可以考虑使用字符串或第三方库(如 Boost.Multiprecision)来表示和处理超长数字。要使用第三方库需…...
RabbitMQ MQTT集群方案官方说明
RabbitMQ MQTT 官方网说明 官方地址: https://www.rabbitmq.com/mqtt.html 从3.8开始,该MQTT插件要求存在一定数量的群集节点。这意味着三分之二,五分之三,依此类推。 该插件也可以在单个节点上使用,但不支持两个节点的集群。 如…...
深圳唯创知音电子将参加IOTE 2023第二十届国际物联网展•深圳站
2023年9月20~22日,深圳唯创知音电子将在 深圳宝安国际会展中心(9号馆9B1)为您全面展示最新的芯片产品及应用方案,助力传感器行业的发展。 作为全球领先的芯片供应商之一,深圳唯创知音电子一直致力于为提供高质量、…...
《TCP/IP网络编程》阅读笔记--I/O复用
目录 1--基于I/O复用的服务器 2--select()函数 3--基于I/O复用的回声服务器端 4--send()和recv()函数的常用可选项 5--readv()和writev()函数 1--基于I/O复用的服务器 多进程服务器端具有以下缺点:当有多个客户端发起连接请求时,就会创建多个进程来…...
[C#] 允许当前应用程序通过防火墙
通常在一台装有防火墙的电脑上运行程序的场合,往往会弹出对话框提示:是否允许执行该应用程序。 我们在开发软件的时候,可以事先在软件里面设置当前软件为防火墙允许通过的软件。这样,用户在使用时就可以避开前面提到的弹框了。 在…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...
