广州大彩串口屏论坛_大彩开发者交流论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6147|回复: 2

大彩串口屏M型AV输入坐标显示和视频任意形状播放应用说明

[复制链接]

86

主题

109

帖子

9278

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9278
发表于 2021-3-9 09:40:48 | 显示全部楼层 |阅读模式
本帖最后由 卡米拉 于 2021-3-9 09:42 编辑

http://video.gz-dc.com/%E3%80%90M%E5%9E%8B%E3%80%91AV%E8%BE%93%E5%85%A5%E5%9D%90%E6%A0%87%E6%98%BE%E7%A4%BA%E5%92%8C%E8%A7%86%E9%A2%91%E4%BB%BB%E6%84%8F%E5%BD%A2%E7%8A%B6%E6%92%AD%E6%94%BE.mp4
演示视频


一、适合范围
文档仅适用于大彩M型系列串口屏产品。


二、开发环境版本
1. VisualTFT软件版本:V3.0.0.1137及以上的版本。
版本查看:
a) 打开VisualTFT软件启动页面如图2-1软件版本,右上角会显示的软件版本号;

图2-1软件版本


b) 打开VisualTFT,在软件右下角可以查看软件版本图2-2所示;最新版本可登录http://www.gz-dc.com/进行下载。

图2-2软件版本



2. 串口屏固件版本: V6.3.325.0 及以上的版本。
版本查看:
a) 查看屏幕背面版本号贴纸;
b) VisualTFT与屏幕联机成功后,右下角显示的版本号。


三、使用说明
针对M型系列的视频播放功能,利用视频控件播放视频时,视频图层会一直显示在最上层,此时如果我们将文字等其他图形叠加放在视频控件上显示时,视频图层会将其他图形都覆盖,导致只能显示出视频,而无法显示视频上叠放的其他文字和图形。
  • 为此,我司针对有此类需求的客户开发了对应的M系列视频底层播放API接口,来满足此类客户的需求。API函数接口:set_color_key(Min_Color,Max_Color,Match)
  • u 函数说明:
      a) Min_Color:24位RGB颜色范围的最小值,例如0x00BFBFBF,R-BF/G-BF/B-BF;
      b) Min_Color:24位RGB颜色范围的最大值,例如0x00C8C8C8,R-C8/G-C8/B-C8;
      c) Match:6位的比较规则101010(2A);10-R/10-G/10-B,代表颜色范围在0x00BFBFBF—0x00C8C8C8之间的颜色值经过比较后会被过滤。(0x00BFBFBF <= color <= 0x00C8C8C8之间的颜色会被过滤,其他颜色会显示出来)
  1. function on_init()
  2.     set_color_key(0x00BFBFBF,0x00C8C8C8,0x0000002A)
  3. end
复制代码
注:set_color_key(Min_Color,Max_Color,Match),此API接口函数必须要放在on_init()系统初始化函数中使用,默认在初始时配置的属性。


四、示例说明
4.1 AV输入坐标显示
4.1.1 工程属性配置介绍

  • 视频控件配置:拖动选择视频控件,用途选择播放AV输入。
  • 按钮配置:
      ◎ 上:控制十字光标显示坐标y减。
      ◎ 下:控制十字光标显示坐标y加。
      ◎ 左:控制十字光标显示坐标x减。
      ◎ 右:控制十字光标显示坐标x加。

4.1.2 LUA脚本逻辑实现
LUA脚本配置实现代码:
  1. --[[ 十字光标坐标显示点 ]]

  2. local LineH_Y = 263                                                         
  3. --十字显示光标点y坐标
  4. local LineV_X = 240                                                         
  5. --十字显示光标点x坐标

  6. local TextH_X  = LineV_X + 5                                                
  7. --坐标text显示的坐标位置
  8. local TextH_Y  = LineH_Y - 40

  9. local TextV_X  = LineV_X + 5
  10. local TextV_Y  = LineH_Y - 20
  11. function on_init()                                                         
  12. --初始化
  13.     set_color_key(0x00BFBFBF,0x00C8C8C8,0x0000002A)                        
  14. --设置颜色过滤属性(必须在on_init()中配置)
  15. end

  16. function  on_draw(screen)                                                   
  17. --界面刷新回调函数,具体使用说明参考《LUA脚本API》
  18.     if screen == 1 then
  19.         set_pen_color(0x3666)                                               
  20. --设置画笔颜色   
  21.         draw_line(40,LineH_Y,440,LineH_Y,1)                                 
  22. --画十字线   
  23.         draw_line(LineV_X,63,LineV_X,440,1)
  24.         local text_h = "LineH_Y:"..LineH_Y
  25.         local text_v = "LineV_X:"..LineV_X
  26.         draw_text(text_h,TextH_X,TextH_Y,90,20,4,0x3666,4)                  
  27. --画坐标text显示
  28.         draw_text(text_v,TextV_X,TextV_Y,90,20,4,0x3666,4)
  29.     end  
  30. end

  31. function on_control_notify(screen,control,value)                           
  32. --触摸控件回调函数
  33.     if screen == 1 then
  34.         if control == 6 then
  35. --上
  36.             if value == 1 then
  37.                 LineH_Y = LineH_Y - 1
  38.                 if LineH_Y < 63 then
  39.                     LineH_Y = 63
  40.                 end
  41.             elseif value == 2 then
  42.                 LineH_Y = LineH_Y - 5
  43.                 if LineH_Y < 63 then
  44.                     LineH_Y = 63
  45.                 end
  46.             end
  47.         elseif control == 7 then                                             
  48. --下
  49.             if value == 1 then
  50.                 LineV_X = LineV_X - 1
  51.                 if LineV_X < 63 then
  52.                     LineV_X = 63
  53.                 end
  54.             elseif value == 2 then
  55.                 LineV_X = LineV_X - 5
  56.                 if LineV_X < 63 then
  57.                     LineV_X = 63
  58.                 end
  59.             end
  60.         elseif control == 8 then                                             
  61. --左
  62.             if value == 1 then
  63.                 LineH_Y = LineH_Y + 1
  64.                 if LineH_Y > 440 then
  65.                     LineH_Y = 463
  66.                 end
  67.             elseif value == 2 then
  68.                 LineH_Y = LineH_Y + 5
  69.                 if LineH_Y > 440 then
  70.                     LineH_Y = 463
  71.                 end
  72.             end
  73.         elseif control == 9 then                                             
  74. --右
  75.             if value == 1 then
  76.                 LineV_X = LineV_X + 1
  77.                 if LineV_X > 440 then
  78.                     LineV_X = 440
  79.                 end
  80.             elseif value == 2 then
  81.                 LineV_X = LineV_X + 5
  82.                 if LineV_X > 440 then
  83.                     LineV_X = 440
  84.                 end
  85.             end
  86.         end
  87.         follow_pos(LineV_X,LineH_Y)                                          
  88. --text显示坐标传入
  89.         redraw()
  90.     end
  91. end

  92. function on_press(state,x,y)                                   
  93. --触摸屏点击回调函数                                      
  94.     if get_current_screen() == 1 then
  95.         if state == 1 or state == 2 then
  96.             if x >= 40 and x <= 440 then
  97.                 if y >= 63 and y <= 463 then
  98.                     follow_pos(x,y)
  99.                     LineV_X = x
  100.                     LineH_Y = y
  101.                     redraw()
  102.                 end
  103.             end
  104.         end
  105.     end
  106. end

  107. function follow_pos(p_x,p_y)                     
  108. --text坐标显示
  109.     print("p_x = "..p_x)
  110.     print("p_y = "..p_y)
  111.     if p_x < 240 and p_y < 263 then
  112.         TextV_X = p_x + 5
  113.         TextH_X = p_x + 5
  114.         TextV_Y = p_y + 5
  115.         TextH_Y = p_y + 25
  116.     elseif p_x < 240 and p_y > 263 then
  117.         TextV_X = p_x + 5
  118.         TextH_X = p_x + 5
  119.         TextV_Y = p_y - 40
  120.         TextH_Y = p_y - 20
  121.     elseif p_x >= 240 and p_y <= 263 then
  122.         TextV_X = p_x - 85
  123.         TextH_X = p_x - 85
  124.         TextV_Y = p_y + 5
  125.         TextH_Y = p_y + 25
  126.     elseif p_x > 240 and p_y > 263 then
  127.         TextV_X = p_x - 85
  128.         TextH_X = p_x - 85
  129.         TextV_Y = p_y - 40
  130.         TextH_Y = p_y - 20
  131.     end
  132. end
复制代码

4.2 视频播放任意形状
4.2.1 视频空间属性配置

  • 视频控件配置:拖动选择视频控件,用途选择为播放视频。
  • 底色或UI配置:由于此处使用的和上节AV输入为同一工程,此处也将视频的底色或UI配置为和AV输入一样。
注:set_color_key(Min_color,Max_color,Match)API接口函数只能在on_onit()初始化中进行配置,且整个工程只能配置一次。
用户可根据自己需求实现不同形状的视频播放窗口,利用上述API接口设置视频控件的颜色比较过滤来达到不同形状的视频显示窗口。
例如Demo UI中利用灰色作为底色画出的该形状的图形,通过set_color_key设置颜色过滤以达到的显示该特定形状的视频窗口。
注:此处的视频控件范围应大于需要显示的该特定形状的范围。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
销售与技术支持:(020)82186683-601
回复

使用道具 举报

0

主题

1

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2023-4-15 14:53:24 | 显示全部楼层
请问,视频AV可以接入硬盘录像机的视频吗,实现多个视频摄像头源的选择,以及回放功能,能否专门针对这个出一个相关教程?
回复

使用道具 举报

2

主题

1253

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12541
发表于 2023-4-17 08:55:27 | 显示全部楼层
cq_hxw 发表于 2023-4-15 14:53
请问,视频AV可以接入硬盘录像机的视频吗,实现多个视频摄像头源的选择,以及回放功能,能否专门针对这个出 ...

目前不支持
Easy doesn't enter into Grown-up life
成年人的生活里面没有“容易”二字
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|广州大彩串口屏论坛_大彩开发者交流论坛

GMT+8, 2024-4-27 12:06 , Processed in 0.054439 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表