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

相关推荐
合宙Luat5 个月前
Air780EP模块 LuatOS开发-MQTT接入阿里云应用指南
阿里云·云计算·合宙·air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--rsa - RSA加密解密
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--rtos - RTOS底层操作库
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--repl - “读取-求值-输出” 循环
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--pwm - PWM模块
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--protobuf - ProtoBuffs编解码
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--otp - OTP操作库
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--os - os操作
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--nimble - 蓝牙BLE库(nimble版)
air780e
l5317981511 年前
LuatOS-SOC接口文档(air780E)--pack - 打包和解包格式串
air780e