一、原本的計劃
當初想實現音樂相冊,是基于以下考慮:
該開發板具備硬件解碼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文章
3643瀏覽量
134550 -
SD卡
+關注
關注
2文章
565瀏覽量
63908 -
Web服務器
+關注
關注
0文章
138瀏覽量
24409 -
RT-Thread
+關注
關注
31文章
1290瀏覽量
40154 -
LVGL
+關注
關注
1文章
83瀏覽量
2973
發布評論請先 登錄
相關推薦
評論