一、原本的计划
当初想实现音乐相册,是基于以下考虑:
该开发板具备硬件解码JPEG的能力,正好方便实现相册功能;
该开发板具备音频播放接口,只需要外接一个喇叭就可以实现音乐播放功能了;
LVGL本身有动画函数,可以用来实现类似溶解、百叶窗之类的效果;
该开发板具备网络接口,只需要在板子上实现一个简单的Web服务器,就可以实现图片文件的上传和替换。
二、SD卡读写所遇到的问题
首先从Gitee网站上下载了HMI-Board的SDK,看了一下其中的例子,觉得Video示例和我所要实现的功能最接近。直接用Keil编译了Video示例,先尝试烧写了Video示例,结果发现SD卡不能使用,程序无法从SD卡读出视频文件,出现如下错误:
[W/SDIO] host doesn't support card's voltages!
[E/SDIO] init SDIO card failed
刚开始怀疑SD卡有问题,不过换了多张SD卡之后发现问题依旧。由于从SD卡加载图片是实现相册功能的基础,这个问题不解决就无法继续,项目一度陷入困境。
后来决定下载RT-Thread Studio,不使用网上的SDK,而是直接用RT-Thread Studio内建的Video模板工程,这次编译下载后程序居然可以正常运行,视频的运行效果也算是流畅。
终于在8月底解决了SD卡的问题,当然就如前面说的9月份没有能够抽时间完成最初的设想,非常遗憾。
三、Video示例的分析
HMI-Board的SDK是一个用于播放AVI视频的例子,它有很多限制:比如视频格式必须是MJPG,因为该开发板只提供了硬件解码JPEG的能力,而MJPG实际上就是多个JPEG组成的视频序列;音频只支持PCM(实际上是s16le格式),这个格式板子的音频直接支持的,无需解码。
厂商推荐使用格式工厂来进行所需要的AVI文件格式转换(背后是ffmpeg完成的编码),且编码设置如下面两个图所示。
我们尝试过使用其他编码软件,采用和格式工厂相同的音视频设置,但是板子上解码失败,可能是编码软件使用了开发板不支持的编码格式。
Video例子没有啥容错,一旦发现无法解码就会停止运行。有网友在微信群里面反应Video例子运行一半就不能显示视频了,估计也是视频中包括了开发板不支持的编码。
要修改Video示例实现相册的功能主要包括以下工作:
修改hmi-board-videoboardlvgldemovideolv_demo_video.c文件的file_explorer_event_cb函数,实现将目录中的jpg和wav文件读入;
修改hmi-board-videoboardportsaviplayerplayer.c中的player_entry函数,该函数完成实际的文件读入和显示。
-
编码器
+关注
关注
45文章
3641浏览量
134498 -
SD卡
+关注
关注
2文章
565浏览量
63898 -
Web服务器
+关注
关注
0文章
138浏览量
24401 -
RT-Thread
+关注
关注
31文章
1288浏览量
40115 -
LVGL
+关注
关注
1文章
83浏览量
2963
发布评论请先 登录
相关推荐
评论