卡米拉 发表于 2021-3-9 09:40:48

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

本帖最后由 卡米拉 于 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之间的颜色会被过滤,其他颜色会显示出来)
function on_init()
    set_color_key(0x00BFBFBF,0x00C8C8C8,0x0000002A)
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脚本配置实现代码:
--[[ 十字光标坐标显示点 ]]

local LineH_Y = 263                                                         
--十字显示光标点y坐标
local LineV_X = 240                                                         
--十字显示光标点x坐标

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

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

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

function on_control_notify(screen,control,value)                           
--触摸控件回调函数
    if screen == 1 then
      if control == 6 then
--上
            if value == 1 then
                LineH_Y = LineH_Y - 1
                if LineH_Y < 63 then
                  LineH_Y = 63
                end
            elseif value == 2 then
                LineH_Y = LineH_Y - 5
                if LineH_Y < 63 then
                  LineH_Y = 63
                end
            end
      elseif control == 7 then                                             
--下
            if value == 1 then
                LineV_X = LineV_X - 1
                if LineV_X < 63 then
                  LineV_X = 63
                end
            elseif value == 2 then
                LineV_X = LineV_X - 5
                if LineV_X < 63 then
                  LineV_X = 63
                end
            end
      elseif control == 8 then                                             
--左
            if value == 1 then
                LineH_Y = LineH_Y + 1
                if LineH_Y > 440 then
                  LineH_Y = 463
                end
            elseif value == 2 then
                LineH_Y = LineH_Y + 5
                if LineH_Y > 440 then
                  LineH_Y = 463
                end
            end
      elseif control == 9 then                                             
--右
            if value == 1 then
                LineV_X = LineV_X + 1
                if LineV_X > 440 then
                  LineV_X = 440
                end
            elseif value == 2 then
                LineV_X = LineV_X + 5
                if LineV_X > 440 then
                  LineV_X = 440
                end
            end
      end
      follow_pos(LineV_X,LineH_Y)                                          
--text显示坐标传入
      redraw()
    end
end

function on_press(state,x,y)                                 
--触摸屏点击回调函数                                    
    if get_current_screen() == 1 then
      if state == 1 or state == 2 then
            if x >= 40 and x <= 440 then
                if y >= 63 and y <= 463 then
                  follow_pos(x,y)
                  LineV_X = x
                  LineH_Y = y
                  redraw()
                end
            end
      end
    end
end

function follow_pos(p_x,p_y)                     
--text坐标显示
    print("p_x = "..p_x)
    print("p_y = "..p_y)
    if p_x < 240 and p_y < 263 then
      TextV_X = p_x + 5
      TextH_X = p_x + 5
      TextV_Y = p_y + 5
      TextH_Y = p_y + 25
    elseif p_x < 240 and p_y > 263 then
      TextV_X = p_x + 5
      TextH_X = p_x + 5
      TextV_Y = p_y - 40
      TextH_Y = p_y - 20
    elseif p_x >= 240 and p_y <= 263 then
      TextV_X = p_x - 85
      TextH_X = p_x - 85
      TextV_Y = p_y + 5
      TextH_Y = p_y + 25
    elseif p_x > 240 and p_y > 263 then
      TextV_X = p_x - 85
      TextH_X = p_x - 85
      TextV_Y = p_y - 40
      TextH_Y = p_y - 20
    end
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设置颜色过滤以达到的显示该特定形状的视频窗口。
注:此处的视频控件范围应大于需要显示的该特定形状的范围。

cq_hxw 发表于 2023-4-15 14:53:24

请问,视频AV可以接入硬盘录像机的视频吗,实现多个视频摄像头源的选择,以及回放功能,能否专门针对这个出一个相关教程?

If后要接end 发表于 2023-4-17 08:55:27

cq_hxw 发表于 2023-4-15 14:53
请问,视频AV可以接入硬盘录像机的视频吗,实现多个视频摄像头源的选择,以及回放功能,能否专门针对这个出 ...

目前不支持
页: [1]
查看完整版本: 大彩串口屏M型AV输入坐标显示和视频任意形状播放应用说明