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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l531798151

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值