zoukankan      html  css  js  c++  java
  • 互联网直播手机、电脑投屏无线同屏直播版软件之LibEasyScreenLive如何实现屏幕鼠标采集

    背景分析

    随着信息化时代的到来,同屏技术在教学、会议、大型活动中的应用越来越广泛。同屏结束简单说来,就是将手机、平板等一些移动设备上面的音视频资料通过无线或有线网络同步到显示设备上。换言之,就是将移动设备中的音视频资料景象到显示频幕上面。就像照镜子一样,移动设备上显示什么,显示屏上就会显示什么。

    EasyScreenlive.png

    LibEasyScreenLive如何实现屏幕鼠标采集

    LibEasyScreenLive在通过GDI方式采集的同时,我们可以通过GDI绘图的方式把鼠标光标绘制到采集的桌面屏幕上去,从而实现鼠标的采集,如下代码所示:

    ICONINFO iconinfo ;	
    BOOL ret;
    ret	= GetIconInfo( hcur,  &iconinfo ); 
    if (ret) 
    {
    xPoint.x -= iconinfo.xHotspot;
    xPoint.y -= iconinfo.yHotspot;
    
    //need to delete the hbmMask and hbmColor bitmaps
    //otherwise the program will crash after a while after running out of resource
    if (iconinfo.hbmMask) DeleteObject(iconinfo.hbmMask);
    if (iconinfo.hbmColor) DeleteObject(iconinfo.hbmColor);
    }		
    
    // 修正鼠标信息 [7/19/2018 SwordTwelve]	 
    ::DrawIcon( hMemDC,  xPoint.x*m_fScreenxScale,  xPoint.y*m_fScreenyScale, hcur); 	
    

    这里需要注意的是windows系统可能设置了图标放大,所以我们再绘制鼠标位置的时候需要乘以一个放大系数m_fScreenxScale,这个系数可以通过获取系统参数计算出来,如下代码所示:

    HDC hScreenDC=::GetDC(::GetDesktopWindow());
    m_nMaxxScreen = GetDeviceCaps(hScreenDC, DESKTOPHORZRES);
    m_nMaxyScreen = GetDeviceCaps(hScreenDC,DESKTOPVERTRES);//VERTSIZE    VERTRES
    m_nActxScreen = GetDeviceCaps(hScreenDC,HORZRES);
    m_nActyScreen = GetDeviceCaps(hScreenDC,VERTRES);
    m_fScreenxScale = (float)m_nMaxxScreen/m_nActxScreen;
    m_fScreenyScale = (float) m_nMaxyScreen/m_nActyScreen;
    

    EasyScreenLive功能介绍

    青犀团队根据市场需求研发的EasyScreenLive,就是一款简单、高效、稳定的集采集,编码,组播,推流和流媒体RTSP服务于一身的同屏功能组件,具低延时,高效能,低丢包等特点。目前支持Windows,Android平台,通过EasyScreenLive我们就可以避免接触到稍显复杂的音视频源采集,编码和流媒体推送以及RTSP/RTP/RTCP/RTMP服务流程,只需要调用EasyScreenLive的几个API接口,就能轻松、稳定地把流媒体音视频数据RTMP推送给EasyDSS服务器以及发布RTSPServer服务, RTSP同屏服务支持组播和单播两种模式。

    演示对比.jpg

    (演示对比)

    硬件解码.png

    (硬件解码)

  • 相关阅读:
    为什么重写equals方法还要重写hashcode方法?
    提高数据库处理查询速度
    ibatis缓存初探(1)
    java四种数组排序
    前台将勾选的多个属性放到一个value里面,是一个字符串,传到后台
    Apache与Tomcat整合
    web服务器和应用服务器概念比较
    ibaits与spring整合的心得
    spring3.0的jar包详解
    JAVA:23种设计模式详解(转)2
  • 原文地址:https://www.cnblogs.com/EasyNVR/p/12033389.html
Copyright © 2011-2022 走看看