【Semidrive X9H】设定多个开机动画

本篇博文给大家带来 Semidrive X9H 平台上设定多个开机动画的操作介绍,硬件环境用的是 X9H_ref04 开发板,软件版本是 PTG4.0

 

一、开机动画属性

 

首先来看看 X9H 开机动画默认的配置是怎样的,开机动画 app 存放在 freertos_safety/application/early_app/BootAnimation 目录中,

其中
animation.c 是开机动画入口函数所在文件,通过创建多个线程进行视频解码、视频播放、音频播放这几个操作。

 

  1. 我们接下来要讲的是视频播放这一块,首先在 ba_config.h 中配置了结构体 frame_element 来绑定动画与屏的关系:

 


该结构体的定义如下:

 

res_id 表示指定的动画 ID,0 代表第一个动画,1 代表第二个动画,依此类推,最多写3;

 

dst_id 表示指定的屏幕 ID,0 代表 cluster 屏,1 代表 IVI 屏,2代表entertainment屏,3代表 contronpanel 屏;

 

bScale 表示进行缩放的,代码会自动判断,用户无需关心;

 

src_rect 表示指定动画裁剪播放的尺寸大小,dst_rect 表示指定屏幕裁剪显示的尺寸大小,这两个都是通过坐标点来进行标定,其中两者都调用了同一个结构体prect_t,定义如下:


 

x、y 表示动画或屏幕左上的起始坐标区域,w、h 表示动画或屏幕右下重点坐标区域,比如动画是 1920*720,同时屏幕分辨率也是 1920*720,动画在屏幕上正好全屏播放,x-w之间的宽度就是1920,y-h之间的高度就是720。

这里需要注意的是动画 ID 和屏幕 ID 不能乱序,ID 只能从小到大,不能交叉,否则动画会无法显示。

 

  1. animation_config.h 文件中定义了动画的数量和动画的文件路径:


 

BA_NUMBER 即为要播放动画个数,上限是 4BA_PATH 中填写对应数量的动画文件路径即可。



二、制作开机动画

  1. 开机动画文件格式必须为 mjpeg 格式,且必须要有时长,若该文件没有时长则无法播放,mjpeg 文件可以通过 ffmpeg 工具将 mp4 文件转换而来,可通过以下命令获取并安装软件包:

$ wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz

$ xz -d ffmpeg-git-amd64-static.tar.xz

$ tar -xvf ffmpeg-git-amd64-static.tar

$ cd ffmpeg-git-xxxxxxxx-amd64-static/

 

通过以下命令可将 mp4 文件转换成特定分辨率的 mp4 文件:

$ ./ffmpeg -i test.mp4 -vf scale=5760:720 test_5760_720.mp4 -hide_banner

 

然后再通过以下命令将 mp4 文件转成 mjpeg 文件:

./ffmpeg -i test_5760_720.mp4 test_5760_720.mjpeg

 

  1. Mjpeg 文件制作好后,把文件放到 res/early_app/BootAnimation/ 目录下,然后在 animation_config.h 中添加上去,再在 ba_config.h 中修改动画 ID 就可以了。

 

  1. 根据我上面的代码可以看出,我使用了两个开机动画分别在 IVI entertainment 屏上播放,测试的效果如下:

 

可以看出,两个屏成功显示了两个不同的开机动画。

那么本次使用多个开机动画的介绍就到这里了,感谢大家的浏览!


参考文档


1】《Semidrive_开机动画应用指南.docx

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论