当前位置: 首页 > news >正文

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收发器(四)&#xff1…...

Transformers-Bert家族系列算法汇总

🤗 Transformers 提供 API 和工具,可轻松下载和训练最先进的预训练模型。使用预训练模型可以降低计算成本、碳足迹,并节省从头开始训练模型所需的时间和资源。这些模型支持不同形式的常见任务,例如: 📝 自…...

Vulnhub系列靶机---HarryPotter-Fawkes-哈利波特系列靶机-3

文章目录 信息收集主机发现端口扫描dirsearch扫描gobuster扫描 漏洞利用缓冲区溢出edb-debugger工具msf-pattern工具 docker容器内提权tcpdump流量分析容器外- sudo漏洞提权 靶机文档:HarryPotter: Fawkes 下载地址:Download (Mirror) 难易程度&#xff…...

【服务器】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和各种游…...

破天荒呀!小杜微信有名额了

写在前面 小杜粉,众所周知前面加小杜微信为好友的基本都是由名额限制的。一般都是付费进入社群且进行备注,小杜才会长期保留微信好友。主要由于,添加的人数太多了,微信账号人数名额有限。因此,小杜过一段时间&#xf…...

领域驱动设计:领域模型与代码模型的一致性

文章目录 领域对象的整理从领域模型到微服务的设计领域层的领域对象应用层的领域对象 领域对象与微服务代码对象的映射典型的领域模型非典型领域模型 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#] 允许当前应用程序通过防火墙

通常在一台装有防火墙的电脑上运行程序的场合,往往会弹出对话框提示:是否允许执行该应用程序。 我们在开发软件的时候,可以事先在软件里面设置当前软件为防火墙允许通过的软件。这样,用户在使用时就可以避开前面提到的弹框了。 在…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦&#xff0…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...