视频会议是如何实现屏幕标注功能的?

现在主流的视频会议软件都有屏幕标注功能,屏幕标注功能给屏幕分享者讲解分享内容时提供了极大的方便。那我们以傲瑞视频会议(OrayMeeting)为例,来讲解屏幕标注是如何实现的。

傲瑞会议的PC端(Windows、信创Linux、银河麒麟、统信UOS)在分享自己的屏幕时,可在屏幕上进行标注、绘制功能。如下图,是傲瑞会议在银河麒麟V10SP1上演示的屏幕标注功能:

屏幕标注的工具有:自由曲线(涂鸦)、箭头、矩形、圆和椭圆、文本。并且可设置它们的颜色、线条粗细、字体大小。

那么,这样的屏幕标注功能是怎么实现的了?

细想一下,这个屏幕标注实际上就像是一个可以在上面绘制涂鸦的电子白板,只要将电子白板的背景设置为透明,然后,重新定义其工具栏就可以了。而我们的OMCS实时音视频框架内置了电子白板的功能,所以,可以直接使用OMCS来实现标注功能。

为了方便讲解其代码层面是如何实现的,我们在OMCS入门demo的白板功能(使用WhiteBoardConnector

)演示的窗口上,增加一个动态桌面连接器(DynamicDesktopConnector),并预定动态桌面连接器相关事件。

cs 复制代码
           public WhiteBoardForm(string _ownerID)
      {
        InitializeComponent();
        this.whiteBoardConnector1.WatchingOnly = false;

        this.ownerID = _ownerID;
        this.Text = string.Format("正在访问{0}的电子白板", this.ownerID);
        // 需要在设计界面将电子白板连接器的背景改为透明(属性已修改)
        this.whiteBoardConnector1.ConnectEnded += new CbGeneric<ConnectResult>(whiteBoardConnector1_ConnectEnded);
        this.whiteBoardConnector1.BeginConnect(this.ownerID);        
        this.dynamicDesktopConnector1.ConnectEnded += new CbGeneric<ConnectResult>(DynamicDesktopConnector1_ConnectEnded);        // 将动态桌面连接器控件设置在当前窗口
        this.dynamicDesktopConnector1.SetViewer(this);
        this.dynamicDesktopConnector1.BeginConnect(this.ownerID);        
      }

      private void DynamicDesktopConnector1_ConnectEnded(ConnectResult obj)
      {
        if (this.InvokeRequired)
        {
          this.BeginInvoke(new CbGeneric<ConnectResult>(this.DynamicDesktopConnector1_ConnectEnded), obj);
        }
        else
        {
          if (obj != ConnectResult.Succeed)
          {
            MessageBox.Show("连接失败!" + obj.ToString());
          }          
        }
      }

在Demo的UI上点击开始"远程桌面(标绘)"按钮时,我们开始初始化电子白板连接器及动态桌面连接器,连接到目标会议室的房间ID。

这里有几点要注意一下:

(1)电子白板连接器控件的背景色 BackgroundColor 要设置成透明。

(2)必须要使用DynamicDesktopConnector组件,而不能使用DesktopConnector控件。

(3)DynamicDesktopConnector组件所使用的显示屏幕图像的Viewer必须是Form,而不能是Control,否则,电子白板连接器控件的背景透明就无法实现(可能是WinForm的限制)。

(4)所以,UI的整体结构层次是:底层是Form(DynamicDesktopConnector使用该Form的表面来绘制屏幕图像),上层是WhiteBoardConnector控件,背景透明,用于实现标注。

上面的这个Demo已经比较具体的说明了屏幕标注功能的代码实现,傲瑞视频会议的屏幕标绘功能也正是基于同样的思路实现的,只不过其不仅仅支持Windows,同时也适配了信创操作系统,包括银河麒麟、统信UOS等。

相关推荐
zhuweisky5 个月前
如何实现在服务端录制视频会议?
视频会议·录制会议·信创视频会议
zhuweisky8 个月前
实现信创Linux麦克风摄像头录制(源码,银河麒麟、统信UOS)
视频录制·音频录制·信创国产·linux音视频
fangji9999 个月前
视频行业(监控,直播,会议,视频通话)痛点,随时接入,异构融合,以OvMeet视频会议为中心解决企业视频应用完美解决方案
音视频·视频汇聚·视频会议·视频融合·视频行业痛点·视频接入
fangji9999 个月前
视频汇聚,GB28181,rtsp,rtmp,sip,webrtc,视频点播等多元异构视频融合,视频通话,视频会议交互方案
视频汇聚·视频会议·视频融合·异构视频融合
zhuweisky10 个月前
开发视频会议系统:使用GPU解码渲染视频
gpu·视频会议·硬件加速·硬解码渲染
fangji9991 年前
Web端Webrtc,SIP,RTSP/RTMP,硬件端,MCU/SFU融合视频会议系统方案分析
监控·视频会议·融合会议系统·sip终端·web端
fangji9991 年前
MCU+SFU视频会议一体化,视频监控,指挥调度(AR远程协助)媒体中心解决方案。
远程协助·视频会议·mcu+sfu·媒体中心·调度中心·视频交互
anyRTC1 年前
anyRTC 融合音视频能力底座:助力企业数字化转型
音视频·视频监控·视频会议·电话会议·融合会议
anyRTC2 年前
技术分享| anyRTC音视频混流技术解析
音视频·视频会议·音频合成·图像合成·音视频混流