GithubHelp home page GithubHelp logo

asdlei00 / avremotecontrol Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zhangf911/avremotecontrol

0.0 2.0 0.0 406 KB

全新概念的远程控制,控制端支持直接在网页上操作。

JavaScript 16.28% HTML 7.05% CSS 9.51% C++ 67.15%

avremotecontrol's Introduction

AVRemoteControl

简述

最初由AVPlayer社区成员共同讨论提出的一种全新概念的远程控制解决方案,特点在客户端为浏览器,无需额外下载安装控制软件,随时随地想连接受控端均可。

主要功能

查看受控端实时桌面、控制受控端(传输全部鼠标、键盘事件)、查看受控端摄像头

项目组成

分为服务端(受控端)客户端(控制端)两个子项目

服务端(受控端)

由社区成员讨论一致决定 服务端 采用C++编写,可能依赖的库有:ffmpegboostopensslzlib,ffmpeg主要会用到的是获取桌面图像以及编码为视频流,boost主要会用到asio库用于与客户端网络数据传输以及实现简易webservice功能,openssl和zlib为librtmp库所依赖项。

客户端(控制端)

预计目前客户端有几套方案:

HTML5

需要用到HTML+CSS+JavaScript,采用HTML5最潮流的技术——WebRTC,目前主要问题是需寻找是否有现有库方便实现其协议,该方案用户体验特好,开启浏览器输入对应地址即可实现远程控制客户端所需的全部功能。

Flash

需要用到ActionScript语言采用Flex框架做界面,服务器需要依赖LibRTMP,同样借助浏览器UI实现控制,相比前者此方案有缺陷,因为Flash Player的右键事件并未开放,故使用者会无法以正常的习惯控制受控机;另该方案需要用户浏览器已安装Flash Player Plugin; 视频流协议可参考red5fms类似的RTMP技术,开发途中还需分析Flash流媒体协议,可能对服务端开发要求较高,另外该方案可能受限于RTMP协议需要RTMPServer,有可能会包含CRTMPServer部分进程序中。

QT

需要依赖QT框架,客户端要自行用ffmpeg解码并处理接收到的视频流数据,控制音视频同步、断线重连等问题,相对前者对客户端开发人员编程素养要求较高。

服务端启动命令设计

Options:

  • -b [BindIP]:[BindPort] (defalut:0.0.0.0:8848)
  • -camera [enable|disable] (defalut:enable)
  • /?
  • -h
  • -help
  • --help
  • -v
  • -version

示意图

   +---------+     video stream    +---------+
   |         |     ------------>   |         |
   |  server |                     |  client |
   |         |     control data    |         |
   +---------+    <------------    +---------+
     console                         browser

界面设计

 +---------------------------------------------------------------------------+
 |   +--------------------------------------------+       +---------------+  |
 |   |                                            |       | IP:[        ] |  |
 |   |                                            |       | Port:[      ] |  |
 |   |                                            |       | Type:[      ] |  |
 |   |                    screen                  |       | Quality:[   ] |  |
 |   |                         |                  |       | FPS:[       ] |  |
 |   |                        |                   |       | HasAudio:[  ] |  |
 |   |                       |                    |       |               |  |
 |   |                      |                     |       |               |  |
 |   |                     |                      |       |               |  |
 |   |                    |                       |       |               |  |
 |   |                   |                        |       |               |  |
 |   |                  |                         |       |               |  |
 |   |                  video                     |       |               |  |
 |   |                                            |       |               |  |
 |   |                                            |       |               |  |
 |   |                                            |       |               |  |
 |   |                                            |       |               |  |
 |   |                                            |       |               |  |
 |   |                                            |       |               |  |
 |   +--------------------------------------------+       +---------------+  |
 |                                                                           |
 +---------------------------------------------------------------------------+
 

网络协议设计

1.0版,先只实现桌面画面观看,计划使用先已成熟的RTMP协议作为视频传输协议。

2.0版,实现鼠标键盘的控制,键盘消息鼠标消息的控制协议也在第二版再考虑。

编译方法

Windows 请设置以下第三方库的环境变量:

FFMPEG_LIBRARY_DIR

FFMPEG_INCLUDE_DIR

Boost_LIBRARY_DIR

Boost_INCLUDE_DIRS

Zlib_LIBRARY_DIR

Zlib_INCLUDE_DIR

Openssl_LIBRARY_DIR

Openssl_INCLUDE_DIR

SDL_INCLUDE_DIR (debug only)

SDL_LIBRARY_DIR (debug only)

avremotecontrol's People

Contributors

omegacoleman avatar rabbitte avatar whyb avatar zwkno1 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.