一、原本的計(jì)劃
當(dāng)初想實(shí)現(xiàn)音樂相冊,是基于以下考慮:
該開發(fā)板具備硬件解碼JPEG的能力,正好方便實(shí)現(xiàn)相冊功能;
該開發(fā)板具備音頻播放接口,只需要外接一個(gè)喇叭就可以實(shí)現(xiàn)音樂播放功能了;
LVGL本身有動畫函數(shù),可以用來實(shí)現(xiàn)類似溶解、百葉窗之類的效果;
該開發(fā)板具備網(wǎng)絡(luò)接口,只需要在板子上實(shí)現(xiàn)一個(gè)簡單的Web服務(wù)器,就可以實(shí)現(xiàn)圖片文件的上傳和替換。
二、SD卡讀寫所遇到的問題
首先從Gitee網(wǎng)站上下載了HMI-Board的SDK,看了一下其中的例子,覺得Video示例和我所要實(shí)現(xiàn)的功能最接近。直接用Keil編譯了Video示例,先嘗試燒寫了Video示例,結(jié)果發(fā)現(xiàn)SD卡不能使用,程序無法從SD卡讀出視頻文件,出現(xiàn)如下錯(cuò)誤:
[W/SDIO] host doesn't support card's voltages!
[E/SDIO] init SDIO card failed
剛開始懷疑SD卡有問題,不過換了多張SD卡之后發(fā)現(xiàn)問題依舊。由于從SD卡加載圖片是實(shí)現(xiàn)相冊功能的基礎(chǔ),這個(gè)問題不解決就無法繼續(xù),項(xiàng)目一度陷入困境。
后來決定下載RT-Thread Studio,不使用網(wǎng)上的SDK,而是直接用RT-Thread Studio內(nèi)建的Video模板工程,這次編譯下載后程序居然可以正常運(yùn)行,視頻的運(yùn)行效果也算是流暢。
終于在8月底解決了SD卡的問題,當(dāng)然就如前面說的9月份沒有能夠抽時(shí)間完成最初的設(shè)想,非常遺憾。
三、Video示例的分析
HMI-Board的SDK是一個(gè)用于播放AVI視頻的例子,它有很多限制:比如視頻格式必須是MJPG,因?yàn)樵撻_發(fā)板只提供了硬件解碼JPEG的能力,而MJPG實(shí)際上就是多個(gè)JPEG組成的視頻序列;音頻只支持PCM(實(shí)際上是s16le格式),這個(gè)格式板子的音頻直接支持的,無需解碼。
廠商推薦使用格式工廠來進(jìn)行所需要的AVI文件格式轉(zhuǎn)換(背后是ffmpeg完成的編碼),且編碼設(shè)置如下面兩個(gè)圖所示。
我們嘗試過使用其他編碼軟件,采用和格式工廠相同的音視頻設(shè)置,但是板子上解碼失敗,可能是編碼軟件使用了開發(fā)板不支持的編碼格式。
Video例子沒有啥容錯(cuò),一旦發(fā)現(xiàn)無法解碼就會停止運(yùn)行。有網(wǎng)友在微信群里面反應(yīng)Video例子運(yùn)行一半就不能顯示視頻了,估計(jì)也是視頻中包括了開發(fā)板不支持的編碼。
要修改Video示例實(shí)現(xiàn)相冊的功能主要包括以下工作:
修改hmi-board-videoboardlvgldemovideolv_demo_video.c文件的file_explorer_event_cb函數(shù),實(shí)現(xiàn)將目錄中的jpg和wav文件讀入;
修改hmi-board-videoboardportsaviplayerplayer.c中的player_entry函數(shù),該函數(shù)完成實(shí)際的文件讀入和顯示。
-
編碼器
+關(guān)注
關(guān)注
45文章
3645瀏覽量
134580 -
SD卡
+關(guān)注
關(guān)注
2文章
565瀏覽量
63922 -
Web服務(wù)器
+關(guān)注
關(guān)注
0文章
138瀏覽量
24409 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1291瀏覽量
40177 -
LVGL
+關(guān)注
關(guān)注
1文章
83瀏覽量
2983
發(fā)布評論請先 登錄
相關(guān)推薦
評論