1172|1

115

帖子

8

TA的资源

一粒金砂(高级)

楼主
 

【基于人脸识别的自动打卡健走计时系统】Maixbit/MaixPy 坑!音频播放函数阻塞调用 [复制链接]

 

问题:阻塞循环播放音频文件,屏幕无法实时刷新摄像头采集的图像(有一段“卡顿的画面”)~~~尝试采用状态机 一边播放,边刷新LCD,结果~~~播放的语音就不完整了(采集+LCD的时间大于44.1K播放调用的最小周期~~~)

槽点400MHz的CPU,400MHz的KPU~~~这样的效果,的确有点“意外”~~~究其原因,还是Sipeed/MaixPy~在 micropython实现底层时,应该没有用DMA或者考虑多线程方式运行~~~,

平台:Maixbit/MaixPy  

任务:摄像头采集+LCD刷屏+音频播放

 描述:官方文档:audio(音频) 的使用 - Sipeed Wiki   play()函数必须要在while(1) Loop中调用

# loop to play audio
while True:
    ret = player.play()
    if ret == None:
        print("format error")
        break
    elif ret==0:
        print("end")
        break

~~曾经希望用状态机~~通过边播放,一边刷新LCD来缓解~~~~下一步只能尝试把wav文件降低到8K的samplerate~~~试试效果~~~ 

#播放状态机
    if (_thread_state == 0):
        music_player = auido_thread_pre(dev, "/sd/4.wav", 50)
        _thread_state = 1
    elif (_thread_state == 1):
        while(True):
            if(True == audio_thread_loop(music_player)):
                _thread_state = 2
                break
            img = sensor.snapshot()
            lcd.display(img)
    elif (_thread_state == 2):
        audio_thread_exit(music_player)
        _thread_state = 3

~~ 暂时没时间深入K210底层~~~~得捷比赛之后,再尝试自行编译固件再试试~~~再或者调用底层C的方式,重新客制化一下底层~~~

 

 

点赞 关注
 
 

回复
举报

115

帖子

8

TA的资源

一粒金砂(高级)

沙发
 
“找到解决方案~好消息~”:通过重新采样~~将音频文件降低到8K采样率,可以实现边采集刷新LCD图像,一边播放音频,声音可接受状态~~
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表