From 3df69eab9521e2760e32549a39cba3ccc55d24e1 Mon Sep 17 00:00:00 2001 From: Barry <870709864@qq.com> Date: Sat, 22 Jun 2019 19:41:47 +0800 Subject: [PATCH] =?UTF-8?q?update:=E6=9B=B4=E6=96=B0readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 178 ++++++++++++++++++++++++++++++++++++++------- screenshot/run.png | Bin 0 -> 32378 bytes 2 files changed, 151 insertions(+), 27 deletions(-) create mode 100644 screenshot/run.png diff --git a/README.md b/README.md index 1b0788d..ab0d907 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,161 @@ -# QtScrcpy +# QtScrcpy(v1.0.1) +此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限。 -#### 项目介绍 -jjj +单个应用程序最多支持16个安卓设备同时连接。 -#### 软件架构 -软件架构说明 +它适用于GNU/Linux,Windows和MacOS。 + +![win](screenshot/win.png) + +![mac](screenshot/mac.png) + +![linux](screenshot/ubuntu.png) + +基于[Genymobile](https://github.com/Genymobile)的[scrcpy](https://github.com/Genymobile/scrcpy)项目进行复刻,重构,非常感谢它。和原版scrcpy区别如下: + +关键点|scrcpy|QtScrcpy +--|:--:|:--: +界面|sdl|qt +视频解码|ffmpeg|ffmpeg +视频渲染|sdl|opengl +跨平台基础设施|自己封装|Qt提供 +编程语言|C|C++ +编程方式|同步|异步 +控制方式|单点触控|单点/多点触控 +编译方式|meson+gradle|Qt Creator + +- 使用Qt可以非常容易的定制自己的界面 +- 基于Qt的信号槽机制的异步编程提高性能 +- 方便新手学习 +- 增加多点触控支持 -#### 安装教程 +## 学习它 +如果你对它感兴趣,想学习它的实现原理而又感觉无从下手,可以选择购买我录制的视频课程, +里面详细介绍了整个软件的开发架构以及开发流程,带你从无到有的开发QtScrcpy: -1. xxxx -2. xxxx -3. xxxx +课程介绍:[https://blog.csdn.net/rankun1/article/details/87970523](https://blog.csdn.net/rankun1/article/details/87970523) -#### 使用说明 +或者你也可以加入我的QtScrcpy群,和志同道合的朋友一块互相交流技术: -1. xxxx -2. xxxx -3. xxxx - -#### 参与贡献 - -1. Fork 本项目 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request +群号:901736468 -#### 码云特技 +## 要求 +Android部分至少需要API 21(Android 5.0)。 -1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md -2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) -3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 -4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 -5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) -6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) \ No newline at end of file +确保在您的设备上[启用了adb调试][enable-adb]。 + +[enable-adb]: https://developer.android.com/studio/command-line/adb.html#Enabling + + +## 下载这个软件 + +### Windows + +对于windows平台,你可以直接使用我编译好的可执行程序: + + - [`QtScrcpy-win32-v1.0.1.zip`][direct-win32] + +[direct-win32]: https://github.com/barry-ran/QtScrcpy/releases/v1.0.1/QtScrcpy-win32-v1.0.1.zip + +你也可以[自己编译](#如何编译) + +### Mac OS + +对于Mac OS平台,你可以直接使用我编译好的可执行程序: + + - [`QtScrcpy-mac64-v1.0.1.zip`][direct-mac64] + +[direct-mac64]: https://github.com/barry-ran/QtScrcpy/releases/v1.0.1/QtScrcpy-mac64-v1.0.1.zip + +你也可以[自己编译](#如何编译) + +### Linux + +目前只提供了windows和mac平台的可执行程序,如果需要linux平台的可执行程序, + +您通常需要[自己编译](#如何编译)。别担心,这并不难。 + +目前只在ubuntu上测试过 + +## 运行 + +在你的电脑上接入Android设备,然后运行程序,按顺序点击如下按钮即可连接到Android设备 + +![运行](screenshot/run.png) + +## 界面按钮介绍: + +- 启动配置:启动服务前的功能参数设置 + +分别可以设置本地录制视频的比特率、分辨率、录制格式、录像保存路径等。 + + - 仅后台录制:启动服务不现实界面,只是录制Android设备屏幕 + - 窗口置顶:Android设备视频窗口置顶显示 + - 自动息屏:启动服务以后,自动关闭Android设备屏幕节省电量 + - 使用reverse:服务启动模式,出现服务启动失败报错more than one device可以去掉这个勾选尝试连接 + + +- 刷新设备列表:刷新当前连接的设备 +- 启动服务:连接到Android设备 +- 停止服务:断开与Android设备的连接 +- 停止所有服务:断开所有已连接的Android设备 +- 获取设备ip:获取到Android设备的ip地址,更新到“无线”区域中,方便进行无线连接 +- 启动adbd:启动Android设备的adbd服务,无线连接之前,必须要启动。 +- 无线连接:使用无线方式连接Android设备 +- 无线断开:断开无线方式连接的Android设备 +- adb命令行:方便执行自定义adb命令(目前不支持阻塞命令,例如shell) + + +## 主要功能 +- 实时显示Android设备屏幕 +- 实时键鼠控制Android设备 +- 屏幕录制 +- 无线连接 +- 最多支持16台设备连接(PC性能允许的情况下可以增加,需要自己编译) +- 全屏显示 +- 窗口置顶 +- 安装apk:拖拽apk到视频窗口即可安装 +- 传输文件:拖拽文件到视频窗口即可发送文件到Android设备 +- 后台录制:只录制,不显示界面 + + +## 为什么开发QtScrcpy? +综合起来有以下几个原因,比重从大到小排列: +1. 学习Qt的过程中需要一个项目实战一下 +2. 本身具有音视频相关技能,对音视频很感兴趣 +3. 本身具有Android开发技能,好久没用有点生疏,需要巩固一下 +4. 发现了scrcpy,决定用新的技术栈(C++ + Qt + Opengl + ffmpeg)复刻一下 + + +## 如何编译 +尽量提供了所有依赖资源,方便傻瓜式编译: +- 目标平台上安装QtCreator +- 克隆该项目 +- 使用QtCreator打开项目根目录all.pro +- 编译,运行即可 + + +## Licence +由于是复刻的scrcpy,尊重它的Licence + + Copyright (C) 2018 Genymobile + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +## 关于作者 + +[Barry的CSDN](https://blog.csdn.net/rankun1) + +一枚普通的程序员,工作中主要使用C++进行桌面客户端开发,一毕业在山东做过一年多钢铁仿真教育软件,后来转战上海先后从事安防,在线教育相关领域工作,对音视频比较熟悉,对音视频领域如语音通话,直播教育,视频会议等相关解决方案有所了解。同时具有android,linux服务器等开发经验。 \ No newline at end of file diff --git a/screenshot/run.png b/screenshot/run.png new file mode 100644 index 0000000000000000000000000000000000000000..93460b5174533d08835fa2b2049f3baf14f461db GIT binary patch literal 32378 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 AkN^Mx literal 0 HcmV?d00001