【Renesas GUI挑战赛】不成功的音乐相册

2023-10-08

该开发板具备硬件解码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完成的编码),且编码设置如下面两个图所示。

【Renesas GUI挑战赛】不成功的音乐相册 (https://ic.work/) 物联网 第1张

【Renesas GUI挑战赛】不成功的音乐相册 (https://ic.work/) 物联网 第2张

我们尝试过使用其他编码软件,采用和格式工厂相同的音视频设置,但是板子上解码失败,可能是编码软件使用了开发板不支持的编码格式。

Video例子没有啥容错,一旦发现无法解码就会停止运行。有网友在微信群里面反应Video例子运行一半就不能显示视频了,估计也是视频中包括了开发板不支持的编码。

要修改Video示例实现相册的功能主要包括以下工作:

修改hmi-board-videoboardlvgldemovideolv_demo_video.c文件的file_explorer_event_cb函数,实现将目录中的jpg和wav文件读入;
修改hmi-board-videoboardportsaviplayerplayer.c中的player_entry函数,该函数完成实际的文件读入和显示。

文章推荐

相关推荐