精华内容
下载资源
问答
  • 屏幕共享专家是一款纯绿色免安装的屏幕共享软件,可用于局域网中的屏幕共享,适用于全平台Windows系统,收看平台不限,需要Adobe Flash Player 10.2以上版本。功能介绍:屏幕共享专家单
  • 屏幕共享

    千次阅读 2018-11-29 09:14:22
    方案 一 TeamViewer 二 A手机不断调系统截图压缩后发服务器(基于nodejs),服务器获数据推B手机回放。 三 录屏API录手机屏幕发服务器。

    方案

    TeamViewer

    A手机不断调系统截图压缩后发服务器(基于nodejs),服务器获数据推B手机回放。

    录屏API录手机屏幕发服务器。

    展开全文
  • 屏幕共享工具

    2019-09-26 14:24:10
    屏幕共享工具
  • 屏幕共享软件

    2017-10-26 00:03:36
    屏幕共享软件
  • DeskTopShare(桌面屏幕共享)是一款支持多人远程桌面、虚拟投影仪的屏幕共享软件,可以在局域网内远程显示对方机器的桌面(支持远程控制)。DeskTopShare(桌面屏幕共享)软件特点:1、支持服
  • 局域网屏幕共享软件

    2018-04-13 12:26:05
    局域网屏幕共享软件 局域网屏幕共享软件 局域网屏幕共享软件 局域网屏幕共享软件 局域网屏幕共享软件 局域网屏幕共享软件
  • EV屏幕共享是一唯科技推出的电脑屏幕共享投屏软件,在同一局域网内,可以让电脑和手机共享同一屏幕,不仅可以给您带来优秀的一站式屏幕交互解决方案,更有着同类软件不可比拟的极简式操作体验!
  • 屏幕共享专家

    2018-12-22 19:12:38
    屏幕共享神奇啊,该软件通过运行之后,浏览器就可以访问
  • 局域网屏幕共享

    2018-10-31 09:55:52
    在课堂上实时屏幕共享,使得学生可以通过自己的电脑看到老师的电脑
  • 手机屏幕共享

    2017-11-02 10:21:36
    手机屏幕共享工具。。。。。。。。。。。。。。。。。
  • 屏幕共享-crx插件

    2021-04-03 21:42:17
    语言:中文 (简体) 捷智云媒体服务器屏幕共享插件! 捷智云视频会议屏幕共享插件.
  • Webrtc 屏幕共享

    2021-05-18 10:28:28
    webrtc 提供了多个平台的屏幕共享功能,这里以 windows 10 平台作为开发环境,讲述如何在 window 平台,应用 webrtc 的屏幕共享功能。 屏幕共享包括三种采集方式,有全屏采集,窗口采集,和指定区

    功能简介

    屏幕共享包括屏幕采集和视频流推送两部分功能。与远程桌面不同,屏幕共享只是将本地桌面内容以视频流的方式分享到网络。本文的重点,是讲解如何应用 webrtc 的屏幕采集功能。对于 webrtc 视频编码传输功能的应用,需要专门的文章进行讲解,这里暂时不做展开,而是把重点集中在屏幕采集上。webrtc 提供了多个平台的屏幕共享功能,这里以 windows 10 平台作为开发环境,讲述如何在 window 平台,应用 webrtc 的屏幕共享功能。

    屏幕共享包括三种采集方式,有全屏采集,窗口采集,和指定区域采集。每种采集方式,都有自己特定的使用场景,这里主要关注的,是如何使用 webrtc 实现这三种采集方式。

    webrtc 中屏幕采集的源码在 webrtc/src/modules/desktop_capture/目录下。 在 desktop_capture 目录中的 desktop_capturer.h 中定义了 DesktopCapturer 类,DesktopCapturer 类抽象了屏幕采集要用到的接口。windows 平台的屏幕采集实现,在 webrtc/src/modules/desktop_capture/win 目录下,其中有 ScreenCapturerWinGdi 类,ScreenCapturerWinMagnifier 类,DesktopAndCursorComposer 类,WindowCapturerWinGdi 类,WgcCapturerWin 类。这些实现类,分别实现了 Windows 平台的屏幕采集和窗口采集功能。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fK5I8xC6-1621304899449)(./screen_capturer.png)]

    全屏采集

    ScreenCapturerWinGdi 类只实现了单纯的屏幕采集功能,如果需要在全屏采集时过滤掉指定的窗口,则需要使用 ScreenCapturerWinMagnifier类,通过 SetExcludedWindow 接口设置需要过滤的窗口。ScreenCapturerWinMagnifier 类只实现了过滤窗口的功能,如果需要在过滤窗口的同时还要显示鼠标位置,就必须使用 DesktopAndCursorComposer 类,DesktopAndCursorComposer 类实现了将鼠标位置与屏幕图像合并的功能。

    窗口采集

    WindowCapturerWinGdi 类最早实现了采集指定窗口的功能,但是对于启用了硬件加速的窗口,则无法采集到窗口内的内容,只能采集到窗口的边框。在最新版本的 webrtc 中,提供了 WgcCapturerWin 类,WgcCapturerWin 实现了采集全屏和采集窗口功能,重要的是,WgcCapturerWin 可以采集开启了硬件加速的窗口,比如 chrome 浏览器。

    采集区域

    DesktopCapturer 类没有提供采集指定区域的接口,所以,需要在 DesktopCapturer 类中添加一个非纯虚函数,函数接受四个参数, 分别是指定区域的左上角坐标x和y,还有区域大小width和height。 然后再创建一个继承 ScreenCapturerWinGdi 的新类,然后重载 CaptureFrame 方法,可以拷贝 ScreenCapturerWinGdi 类中的 CaptureFrame 实现,然后把采集的区域指定为自定义的区域(把原来的全屏区域修改为自定义的区域)。这样就实现了采集指定区域。

    ***趟过的坑:指定区域的 width 最好为 16 的整数倍,不可以为奇数。height 最好是 2 的整数倍。***

    屏幕共享流程

    1.创建 DesktopCapturer 实例,可以根据需求创建不同的 DesktopCapturer 实现类,比如 ScreenCapturerWinMagnifier 类或者 DesktopAndCursorComposer类或者 WgcCapturerWin 类。

    2.获取屏幕ID列表或窗口ID列表。

    3.指定要采集的屏幕ID或窗口ID列表。

    4.注册数据回调,开始采集。

    5.将回调中的屏幕图像编码传输。

    ***趟过的坑:DesktopCapturer 实例一定要在同一个线程内创建,初始化和销毁。***

    代码示例

    #ifndef __RCRTC_DESKTOP_CAPTURER__
    #define __RCRTC_DESKTOP_CAPTURER__
    
    #include "api/video/i420_buffer.h"
    
    #include "libyuv/convert.h"
    #include "libyuv/video_common.h"
    
    #include "media/base/video_broadcaster.h"
    #include "media/base/video_common.h"
    
    #include "modules/desktop_capture/desktop_and_cursor_composer.h"
    #include "rtc_base/thread.h"
    #include "system_wrappers/include/sleep.h"
    #include "webrtc_desktop_capturer.h"
    
    typedef void (*desktop_capture_frame_callback)(int width,
                                                   int height,
                                                   int y_stride,
                                                   int u_stride,
                                                   int v_stride,
                                                   const uint8_t* y,
                                                   const uint8_t* u,
                                                   const uint8_t* v,
                                                   void* context);
    
    class RcrtcDesktopCapturer : public webrtc::DesktopCapturer::Callback {
     public:
      RcrtcDesktopCapturer(const std::map<std::string, std::string>& opts) {}
      inline ~RcrtcDesktopCapturer() override {}
    
      // overide webrtc::DesktopCapturer::Callback
      void OnCaptureResult(webrtc::DesktopCapturer::Result result,
                           std::unique_ptr<webrtc::DesktopFrame> frame) override {
        if (result == webrtc::DesktopCapturer::Result::SUCCESS) {
          int width = frame->size().width();
          int height = frame->size().height();
    
          rtc::scoped_refptr<webrtc::I420Buffer> I420buffer =
              webrtc::I420Buffer::Create(width, height);
    
          const int conversionResult = libyuv::ConvertToI420(
              frame->data(), 0, I420buffer->MutableDataY(), I420buffer->StrideY(),
              I420buffer->MutableDataU(), I420buffer->StrideU(),
              I420buffer->MutableDataV(), I420buffer->StrideV(), 0, 0,
              // width, height,
              I420buffer->width(), I420buffer->height(), I420buffer->width(),
              I420buffer->height(), libyuv::kRotate0, ::libyuv::FOURCC_ARGB);
    
          if (conversionResult >= 0) {
            webrtc::VideoFrame videoFrame(I420buffer,
                                          webrtc::VideoRotation::kVideoRotation_0,
                                          rtc::TimeMicros());
    
            rtc::scoped_refptr<webrtc::I420BufferInterface> buffer(
                videoFrame.video_frame_buffer()->ToI420());
            _frameCallback(buffer->width(), buffer->height(), buffer->StrideY(),
                           buffer->StrideU(), buffer->StrideV(), buffer->DataY(),
                           buffer->DataU(), buffer->DataV(), this->_userContext);
          }
        }
      }
    
      void setExccludeWindow(webrtc::DesktopCapturer::Source windowId) {
        _excludeWindowList.push_back(windowId);
      }
    
      void CaptureThread() {
        webrtc::DesktopCaptureOptions opts =
            webrtc::DesktopCaptureOptions::CreateDefault();
        opts.set_allow_use_magnification_api(true);  //设置过滤窗口选项
        // 使用 DesktopAndCursorComposer 可以采集鼠标
        std::unique_ptr<webrtc::DesktopCapturer> capturer =
            std::unique_ptr<webrtc::DesktopCapturer>(
                new webrtc::DesktopAndCursorComposer(
                    webrtc::DesktopCapturer::CreateScreenCapturer(opts), opts));
    
        // 设置开始采集状态
        capturer->Start(this);
    
        // 设置要过滤的窗口
        for (auto source : _excludeWindowList) {
          capturer->SetExcludedWindow(source.id);
        }
    
        while (_isrunning) {
          webrtc::SleepMs(_msPerFrame);
          // 采集桌面图像
          capturer->CaptureFrame();
        }
      }
    
      bool Start() {
        _isrunning = true;
        _capture_thread = rtc::Thread::Create();
        _capture_thread->Start();
        _capture_thread->PostTask(RTC_FROM_HERE, [&] { CaptureThread(); });
      }
    
      void Stop() {
        if (_isrunning) {
          _isrunning = false;
          _capture_thread->Stop();
          _capture_thread.reset();
        }
      }
    
     public:
      int _msPerFrame = 100;  // 100毫秒采集一次,每秒钟采集10帧
      webrtc::DesktopCapturer::SourceList _excludeWindowList;  //需要过滤的窗口列表
      desktop_capture_frame_callback _frameCallback = nullptr;  //视频输出回调
      void* _userContext = nullptr;
    
     private:
      std::unique_ptr<rtc::Thread> _capture_thread;
      bool _isrunning = false;
    };
    
    #endif
    

    总结

    如果理清了 webrtc 屏幕共享的脉络,整个过程还不算太复杂。但是,如果一开始没有对 webrtc 的 屏幕共享有一个概览,冒然逐步趟坑,说不准就会卡在某处,无法前进。希望本文对正准备应用 webrc 屏幕共享的人有所帮助。

    融云 RCRTC C++ SDK 已经实现了 Windows 的屏幕共享功能,并且处理了很多产品需求层面的细节。有兴趣的同学,可以关注我们的 SDK,关注融云。

    祝大家工作顺利!

    展开全文
  • 因近期项目需要,实现了一套多种网络拓扑、多种应用场景的多平台屏幕共享系统,包括组播屏幕共享、服务器转发屏幕共享、P2P屏幕共享,暂支持Windows屏幕共享给Windows,Windows屏幕共享给Android等,后续加入android...

               因近期项目需要,实现了一套多种网络拓扑、多种应用场景的多平台屏幕共享系统,包括组播屏幕共享、服务器转发屏幕共享、P2P屏幕共享,暂支持Windows屏幕共享给Windows,Windows屏幕共享给Android等,后续加入android、IOS的相互共享。下文进行简单的总结,具体细节请参考 www.mediapro.cc

     

    • 应用场景

       1、一对一屏幕共享

                                          

     

    同一局域网内,发送端将自身屏幕和音频共享给指定的接收端,常用于办公会议、游戏电影投屏等场合。

    系统通过集成QOS-FEC-NACK传输库点对点版SDK实现对弱网的支持(SDK支持Windows\Android\嵌入式Linux\IOS),系统总体延时可控制在120ms以内。注意SDK支持全双工通讯,本应用场景中仅使用到单向的传输。

          2、一对多组播屏幕共享

    同一局域网内,发送端将自身屏幕和音频共享给一组接收端,常用于教学等场合。

    优点:通过组播技术的使用,无需架设转发服务器即可实现一对多分发。

    缺点:由于WIFI(802.11)网络对于组播和广播在数据链路层无法提供类似单播的保障,WIFI下的组播容易出现较高的丢包率,因此本方案更适合有线网络。

                                   

           系统通过集成QOS-FEC传输库点对点版SDK实现对弱网的支持(SDK支持Windows\Android\嵌入式Linux\IOS),系统总体延时可控制在120ms以内。因为数据流是单向因此无法使用NACK丢包重传机制。

           3、一对多公网屏幕共享

            当需要实现异地跨公网一对多屏幕共享时,就需要在公网上架设媒体转发服务器。SRTP-Server是在RTP-FEC-QOS传输层基础上建立了一套轻量级RTP直播转发服务器集群,可用于一对多、多对多等场合的音视频实时互动,客户端支持全平台包括PC客户端、浏览器、Android、IOS、嵌入式Linux,关于SRTP-Server更详细介绍请移步:www.mediapro.cc

            SRTP-Server有集群版本和非集群版本,集群版本用于同一房间大规模的公开课等场合,非集群版本则用于同一个房间数十人规模的屏幕共享(房间数目、总的接收端数目受限于服务器带宽、内存、CPU)。

                            

           客户端(包括发送端和接收端)通过集成SRTP-Server配套的SDK可实现同一房间多路流直播,比如发送屏幕共享的同时发送摄像头数据。SRTP-Server基于房间模式,不同的房间相互隔离。

                                          

          通过公网服务器转发的方式可实现异地多人屏幕共享,但也存在无法避免的缺点:

          A、系统延时受网络线路影响较大,网络条件较好的阿里云服务器上,延时可以控制在300ms内。

          B、服务器带宽成本随用户数、视频码率而增长。

          当然本系统也可部署到内网,实现一对多的WIFI屏幕共享,解决组播对WIFI支持不佳的问题。

           4、一对一公网P2P屏幕共享

           公网上当仅需要一对一的屏幕共享时,我们可以使用P2P技术来节省服务器带宽成本。SRTP-Server-P2P版转发服务器支持客户端一对一P2P双向传输。SDK在P2P不成功或者丢包率较高的情况下会自动切换回服务器转发模式,实现了STUN和TURN的功能。

                                       

          P2P方式大幅节省了服务器带宽成本,但也对服务质量产生了一定影响,体现在以下几点:

          A、不同运营商的客户端之间P2P即便可以打通,或许可以承载低码率的视频通话业务,但无法承载高码率的屏幕共享业务。

          B、因网络原因在P2P和转发之间切换对用户的使用体验产生影响。

     

    • 一些注意事项

    • 组播需要关闭发送端的本地回环模式,降低发送端开销。
    • 对于内网两台机器走P2P时应使用内网地址通讯而不用对方的出口IP,虽然二者均可以互通,但内网IP效率更高。
    • 由于屏幕共享码率较高,尽量使用非阻塞的socket,设置socket的系统缓存到512KB以上,避免因socket缓存原因引入系统丢包。
    • 使用微软WASAPI采集扬声器音频时,会出现无音频播放时,采集回调无调用的情况,这对于直播没有影响,但会影响录制的TS素材。比如录制文件一开始没有音频数据仅有视频数据,则某些播放器会直接跳到存在音频的部分播放。解决的方法是:发送端自行输出静音数据。
    • 因为屏幕共享对于分辨率要求较高,高分辨率编码将对发送端机器形成压力,建议优先使用硬编码,若不支持再使用X264。PC上目前主流硬编码有Intel CPU自带的核心显卡QsvEncode和英伟达显卡带的NviEncode。高版本的ffmpeg对二者提供了支持,不过采集到的编码码流需要进行统一过滤处理,比如过滤直播中无用的NAL_AUD和NAL_FILLER_DATA,前者因为我们UDP自身加入了边界,后者纯属冗余数据,经过这样处理可以大幅节省带宽。
    • 由于屏幕共享码率较高,FEC处理需要开启动态Group模式,在不增加冗余度的情况下增强连续丢包的抵抗力。
    • 屏幕画面变化相比摄像头画面变化来得剧烈,使用硬编码时码率波动更大,发送端可开启Smooth平滑发送,接收端视业务情况开启接收缓存。

      组播接收端启动界面:

            

      发送端启动界面:

                                        

      屏幕共享客户端、服务器相关执行程序、硬编码封装源码等可从github获取:https://github.com/waterfoxfox

     

    展开全文
  • 屏幕共享 允许您与他人共享屏幕的应用程序 去做 潜在的图书馆 用于程序识别(名称,位置) OpenCV / pyscreenshot用于屏幕捕获 骑士
  • 屏幕共享,inletex

    2017-12-01 09:39:33
    屏幕共享,inletex
  • HydraForWin导师方屏幕共享可控制,非学生端屏幕共享,一款快捷方便的屏幕共享软件,可用于教学,项目介绍等,是培训,分享的利器
  • 桌面屏幕共享工具

    2018-04-24 15:52:49
    DeskTopShare(桌面屏幕共享),安装后直接使用,局域网内可直接共享桌面屏幕
  • 局域网屏幕共享软件InletexEMC
  • 【太平洋汽车网】使用宝马屏幕共享要先打开车载电脑多媒体功能,再选择屏幕共享手机投屏,勾掉宝马互联选项,然后再打开手机wifi,选择BMW输入密码即可使用屏幕共享。车手机互联映射即车机互联,就是将手机投屏到...

    【太平洋汽车网】使用宝马屏幕共享要先打开车载电脑多媒体功能,再选择屏幕共享手机投屏,勾掉宝马互联选项,然后再打开手机wifi,选择BMW输入密码即可使用屏幕共享。

    72bd2e5c4304b5d9a8853adcd10b5a59.gif

    车手机互联映射即车机互联,就是将手机投屏到车载显示器上,通过显示器可以操作手机里的导航,视频,音乐,游戏等功能,汽车手机映射功能的加入,可以方便利用车内大屏观看手机中的视频,以及使用手机里的导航。

    苹果手机可以通过iOS系统来实现车机互联(需iOS 8.3及以上系统)第一步,在Iphone手机中,打开Carplay的访问权限:设置>通用>访问限制中进行设置;第二步,使用 iPHone 原装USB数据线将手机与车机连接并配对;第三步,苹果手机连接后,自动弹出Carplay(中国版),如需退出,点击【GEELY】图标退出;第四步,连接成功后,打开手机里面的导航软件,输入目的地,此时车载屏幕就会同步手机上的导航内容。如果的的车上有HDMI(高清晰度多媒体接口)接口,那可直接拿一根MHL线接上手机,那也可以直接实现手机和车载屏幕共享。同理,车载导航也能够同步手机导航功能。(图/文/摄:太平洋汽车网 郭珊珊-兼职)

    展开全文
  • 屏幕共享软件代码

    2018-06-01 10:40:05
    以前使用C#编写的屏幕共享软件代码,大家可以下载下来玩玩,使用UDP广播方式实现,测试没问题,当然只是实现了屏幕共享,但是并没有考虑更多的细节。
  • 屏幕共享软件tigervnc

    2018-11-08 10:07:07
    一款屏幕共享软件tigervnc,适用多种操作系统,该版本为64位 1.9.0
  • 窗帘 OS X屏幕共享的本地屏幕锁定
  • 语言:中文 (简体) 会议屏幕共享录制插件 安装插件用来实现屏幕共享和屏幕录制。
  • 手机电脑屏幕共享

    2016-07-13 22:50:58
    支持手机与电脑的屏幕共享软件,适合使用真机调试时,在电脑端也能共享屏幕的内容

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,163
精华内容 2,865
关键字:

屏幕共享