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