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 | 174 ++++++++++++++++++++++++++++++++++++++------- screenshot/run.png | Bin 0 -> 32378 bytes 2 files changed, 149 insertions(+), 25 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) -1. xxxx -2. xxxx -3. xxxx +![linux](screenshot/ubuntu.png) -#### 使用说明 +基于[Genymobile](https://github.com/Genymobile)的[scrcpy](https://github.com/Genymobile/scrcpy)项目进行复刻,重构,非常感谢它。和原版scrcpy区别如下: -1. xxxx -2. xxxx -3. xxxx +关键点|scrcpy|QtScrcpy +--|:--:|:--: +界面|sdl|qt +视频解码|ffmpeg|ffmpeg +视频渲染|sdl|opengl +跨平台基础设施|自己封装|Qt提供 +编程语言|C|C++ +编程方式|同步|异步 +控制方式|单点触控|单点/多点触控 +编译方式|meson+gradle|Qt Creator -#### 参与贡献 +- 使用Qt可以非常容易的定制自己的界面 +- 基于Qt的信号槽机制的异步编程提高性能 +- 方便新手学习 +- 增加多点触控支持 -1. Fork 本项目 -2. 新建 Feat_xxx 分支 -3. 提交代码 -4. 新建 Pull Request +## 学习它 +如果你对它感兴趣,想学习它的实现原理而又感觉无从下手,可以选择购买我录制的视频课程, +里面详细介绍了整个软件的开发架构以及开发流程,带你从无到有的开发QtScrcpy: -#### 码云特技 +课程介绍:[https://blog.csdn.net/rankun1/article/details/87970523](https://blog.csdn.net/rankun1/article/details/87970523) -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 +或者你也可以加入我的QtScrcpy群,和志同道合的朋友一块互相交流技术: + +群号:901736468 + + +## 要求 +Android部分至少需要API 21(Android 5.0)。 + +确保在您的设备上[启用了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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