video控件

1. 使用场景

  1. 该视频控件基于 LVGL 框架开发、由 LVGL 图片对象扩展实现,为嵌入式 GUI 场景提供轻量级视频播放能力,核心适用场景如下:

  2. 单视频或批量视频列表播放、循环播放、顺序播放等常规业务场景;

  3. 适配需要单独控制「视频显示 / 音频播放」开关的差异化播放需求。

2. 接口介绍

2.1 基础功能

接口函数

功能说明

参数说明

lv_obj_t *lv_video_create(lv_obj_t *parent);`

创建视频自定义控件实例,基于LVGL图片对象扩展

parent:父对象(如屏幕、容器),NULL表示默认屏幕

void lv_video_set_default_cfg(lv_obj_t *video, lv_video_play_mode_t mode, bool audio_en, bool video_en, bool forward, bool auto_size);`

初始化视频播放核心配置,配置后全局生效

mode:初始播放模式;audio_en:使能音频;video_en:使能视频;forward:正向播放;auto_size:自适应尺寸

void lv_video_set_src(lv_obj_t *video, const void *video_data, const void *surface_data);`

绑定单个待播放视频资源,覆盖原有单资源配置

video_data:视频资源地址或完整路径;surface_data:视频封面图像,传 NULL 则不显示封面

lv_video_player_t *lv_video_add_src(lv_obj_t *video, const void *video_data, const void *surface_data);`

向播放列表中追加视频资源,支持多路视频轮播播放

video_data:视频资源地址或完整路径;surface_data:对应视频封面图像,传 NULL 则不显示封面

void lv_video_set_to_playback(lv_obj_t *video, const void *video_data, const void *surface_data);`

从已添加的批量资源列表中,精准匹配并播放指定视频

video_data:目标视频资源地址或完整路径;surface_data:目标视频封面图像

2.2 播放控制

接口函数

功能说明

参数说明

void lv_video_player_open(lv_obj_t *video, uint16_t period);`

预加载视频资源,初始化解码计时器,设置帧刷新周期

period:帧间隔(单位:ms);delay:延迟播放时间(单位:ms,0表示立即播放)

void lv_video_player_resume(lv_obj_t *video);`

启动视频播放 / 从暂停状态恢复播放,启动解码计时器

video:已初始化的视频控件实例

void lv_video_player_pause(lv_obj_t *video);`

暂停视频播放,暂停解码计时器,画面定格当前帧

video:已初始化的视频控件实例

void lv_video_player_close(lv_obj_t *video);`

关闭视频资源,释放解码缓存及计时器,清空播放画面

关闭视频资源

void lv_video_play_next(lv_obj_t *video);`

切换至播放列表下一个视频并自动播放

void lv_video_play_prev(lv_obj_t *video);`

切换至播放列表上一个视频并自动播放

void lv_video_set_play_mode(lv_obj_t *video, lv_video_play_mode_t mode);`

动态配置视频播放模式,配置后实时生效

mode:播放模式枚举值

3. 使用案例

3.1 创建一组视频

1.示例代码

lv_obj_t *video = lv_video_create(lv_scr_act());
// 设置控件尺寸 与父容器一致
lv_obj_set_size(video, LV_HOR_RES, LV_VER_RES);
// 控件居中显示
lv_obj_center(video);
// 配置播放参数:单次播放、使能音频、使能视频画面、正向播放、画面自适应
lv_video_set_default_cfg(video, LV_VIDEO_PLAY_LOOP_ONE, true, true, true, true);
// 绑定视频资源,无封面图传NULL
lv_video_set_src(video, APP_GET_H264(Tom_and_Jerry), NULL);
// 打开视频资源,使用屏幕默认刷新率作为帧间隔
lv_video_player_open(video, LV_DISP_DEF_REFR_PERIOD);
// 启动视频播放
lv_video_player_resume(video);

2.示例资源目录

../../_images/video_demo_src.png

3.2 案例效果展示

fishy

4. 注意事项

  1. 控件创建后,建议先配置默认参数 lv_video_set_default_cfg,再启动播放,确保配置参数生效。

  2. 调用播放接口 lv_video_player_resume 前,必须先执行 lv_video_player_open 打开视频资源,否则播放无响应。

  3. lv_video_set_src 为覆盖式设置单条视频资源,lv_video_add_src 为追加式添加视频资源至播放列表,二者区分使用。

  4. 视频资源路径支持绝对路径与 LVGL 内置资源地址两种形式,传参时保证路径有效性。

  5. 页面销毁或切换时,建议先调用 lv_video_player_close 释放资源,再销毁控件,防止内存泄漏。

  6. 播放模式枚举值为框架内置定义,传入非法值时,控件将默认使用 LV_VIDEO_PLAY_ONCE 单次播放模式。

  7. auto_size = true 时视频画面自适应控件尺寸,false 则使用视频原始分辨率展示。

  8. 支持音频单独控制,即可以关闭音频仅播放画面,暂不支持关闭视频仅播放音频。

  9. 批量视频切换播放时,仅对通过 lv_video_add_src 添加的资源列表生效。

  10. 帧间隔 period 建议传入 LV_DISP_DEF_REFR_PERIOD,适配屏幕默认刷新率,保证播放流畅度。