AWTK是基于C語(yǔ)言開(kāi)發(fā)的跨平臺(tái)GUI框架?!禔WTK使用經(jīng)驗(yàn)》系列文章將介紹開(kāi)發(fā)AWTK過(guò)程中一些常見(jiàn)問(wèn)題與解決方案,例如:如何加載外部資源?如何設(shè)計(jì)自定義進(jìn)度條?這些都會(huì)在系列文章進(jìn)行解答。
假設(shè)目前想在AWTK中顯示炫酷流暢的圖片動(dòng)畫(huà),此時(shí)可以用video_image控件來(lái)播放序列幀動(dòng)畫(huà)。本篇文章將介紹該控件的原理和使用方法。
圖1ZTP800示教器運(yùn)行video_image控件demo效果
video_image控件播放序列幀動(dòng)畫(huà)優(yōu)點(diǎn)
video_image控件采用了幀間差異的圖像算法,在壓縮位圖時(shí)會(huì)計(jì)算并保存每一幀之間的臟矩形區(qū)域和數(shù)據(jù),接著將這些差異數(shù)據(jù)壓縮成自定義的視頻文件,最后再采用lz4算法對(duì)視頻文件進(jìn)一步壓縮。在video_image控件播放視頻文件時(shí)會(huì)先用lz4算法解壓視頻文件,再將幀間差異解析組合成位圖播放。下面是video_image控件播放序列幀相比較MP4、MJPG與GIF等常見(jiàn)格式的優(yōu)點(diǎn):
對(duì)比格式 | 播放序列幀方式的優(yōu)點(diǎn) |
MJPG | MJPG動(dòng)畫(huà)文件占用空間大,JPG的解壓速度慢;video_image的幀間差異圖像算法能夠很大程度降低空間上的消耗,包括內(nèi)存和文件系統(tǒng)空間,同時(shí)解壓速度也會(huì)更快。 |
GIF | GIF只支持8位色,并且不支持半透;而video_image動(dòng)畫(huà)可支持32位色,并且支持半透顯示。 |
MP4 | MP4壓縮率較高,解壓位圖需要消耗較大性能,需要依賴硬件解碼才能流暢播放;而video_image控件可以用在中低端平臺(tái),解碼消耗性能會(huì)較低,動(dòng)畫(huà)會(huì)更流暢。 |
video_image控件的使用方法
首先,在AWStudio插件列表安裝awtk-widget-video-image控件,并編譯video_image控件工程,會(huì)在awtk-widget-video-image/bin目錄下生成相關(guān)工具:gif_to_frame_gen工具可以將GIF轉(zhuǎn)換成一張張位圖序列幀;diff_image_to_video_gen工具可以將這些位圖序列幀壓縮成video_image控件支持播放的自定義視頻文件。
圖2AWStudio插件列表的video_image控件將GIF轉(zhuǎn)換成位圖序列幀
假設(shè)目前的GIF名稱為zlg.gif,可以在bin文件夾輸入下面命令將GIF轉(zhuǎn)成位圖序列幀,工具的詳細(xì)參數(shù)可以看控件目錄下的README.md文檔:
./gif_to_frame_gen.exe ./zlg.gif ./my_image/
圖3使用工具將GIF轉(zhuǎn)成位圖序列幀
將位圖序列幀合成自定義視頻文件
同樣是在bin目錄下可以使用diff_image_to_video_gen工具將位圖序列幀合成自定義視頻文件。工具的設(shè)置的參數(shù)比較多,詳細(xì)參數(shù)說(shuō)明可以看控件目錄下的README.md文檔,示例命令如下:
./diff_image_to_video_gen.exe ./my_image/ frame%d ./my_image/video_gif RGB565 30
圖4diff_image_to_video_gen工具生成自定義視頻文件
在AWTK程序播放序列幀
將上面生成的自定義視頻文件通過(guò)AWStudio導(dǎo)入到資源瀏覽器的“其他數(shù)據(jù)”分類(lèi)項(xiàng),接著再設(shè)置video_image控件的video_name屬性為視頻文件名稱,最后打包編譯運(yùn)行程序即可。
圖5添加與設(shè)置視頻文件到應(yīng)用中
-
視頻
+關(guān)注
關(guān)注
6文章
1942瀏覽量
72884 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136683 -
awtk
+關(guān)注
關(guān)注
0文章
44瀏覽量
226
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論