Giter VIP home page Giter VIP logo

scrcpy-go's Introduction

scrcpy-go

原版 scrcpy 是 Genymobile 公司出品的 Android 设备显示与操纵开源工具,具备投屏、控制、截图等功能。scrcpy-go 是在其基础上制作的方便进行手机游戏的辅助工具,类似 TC-Games 出品的软件。

特别地,与 scrcpy 的主要不同点是:

  • 使用 Golang 编写 client 端,而不是 C
  • 增加了多点触控的支持(scrcpy 只支持单点触控)
  • 去掉了一些游戏时不需要的功能
  • 增加了 MacOS 上硬件解码的支持(VideoToolBox)

目前只支持在 MacOS 上运行(偷懒:-D),后面可以考虑支持 Windows 和 Linux。

依赖

  1. Golang 环境(设置 $GOPATH 环境变量)
  2. sdl2
  3. sdl2_ttf
  4. ffmpeg
  5. Android adb 工具
  6. yaml
  7. pkg-config 编译配置工具

构建

brew install sdl2 sdl2_ttf ffmpeg pkg-config go
go get -d github.com/ClarkGuan/scrcpy-go && cd $GOPATH/src/github.com/ClarkGuan/scrcpy-go && go build && ./scrcpy-go

使用说明

scrcpy-go -log {日志等级} -bitrate {H.264 码率} -port {adb 端口号} -cfg {settings.yml 配置文件路径}

一般情况下,直接双击 scrcpy-go 即可;如果想要查看日志信息可以使用 scrcpy-go -log 4 查看具体日志输出。

选项默认值:

  • log: 0
  • bitrate: 8000000
  • port: 27183
  • cfg: scrcpy-go 所在目录下 res/settings.yml

配置文件

res/settings.yml 是默认的配置文件所在位置。其内容是作者在玩刺激战场时配置的数值,可以根据自身机型和爱好自定义配置(而且不局限于射击类手游)。

属性说明

  1. code:对应 SDL 内键盘映射的字符串值。特别地,以 SCRCPY_ 开头的是作者自定义的常量值,为了完成一些特定的功能(与射击类游戏相关),具体细节可以参看代码实现。另,SDL 中不存在使用字符串反查鼠标按键的功能,所以将鼠标按键映射的字符串都是作者自定义的(BUTTON_LEFT、BUTTON_MIDDLE、BUTTON_RIGHT、BUTTON_X1、BUTTON_X2)。
  2. point:屏幕坐标映射。
  3. macro:宏定义,可以是一系列坐标点事件。
  4. delay:宏定义中,不同点击事件之间的时间间隔。
  5. type:可选值有 ctrl 和 mouse 两种,表示是否需要同时按下 ctrl 键或者是否是鼠标按键事件。
  6. show_pointer:是否切换鼠标状态
  7. comment:注释。

特殊功能

  1. ctrl + h:点击 Home
  2. ctrl + b:点击 Back
  3. ctrl + m:点击 Menu
  4. ctrl + p:点击 Power
  5. ctrl + s:点击 App Switch
  6. ctrl + ;:音量放大
  7. ctrl + ':音量缩小
  8. ctrl + x:切换鼠标状态

后续可能的计划

  1. 重构代码。因为该工具只是个人爱好而作,能用即可,代码无层次无章法。后续可能进行少许重构,调整一些代码结构,以求层次鲜明(勉强能看)。
  2. 支持 Windows 和 Linux,可能加入对应平台的硬解支持。
  3. 使用原生 UI 框架支持而非 SDL。

代码版权

代码随便 copy 随便用,但请记得署名一下~ :-D

scrcpy-go's People

Contributors

clarkguan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

scrcpy-go's Issues

你的开源协议应该是 MIT

随便用, 随便搞, 署名
http://choosealicense.online/licenses/mit/

MIT

  MIT是和BSD一样宽泛的许可协议,作者只想保留版权,而无任何其他了限制.也就是说,你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的.
有许多团体均采用MIT许可证。例如著名的ssh连接软件PuTTY与X Windows System (X11)即为例子。Expat, Mono开发平台库,Ruby on Rails, Lua 5.0 onwards等等也都采用MIT授权条款。

功能增强:请求增加【手机->电脑】拖拽文件

  1. scrcpy自带【从电脑拖拽文件到手机,但 拖拽文件夹会,仅仅会传送里面的文件,而不是这个文件解】
  2. 无法从手机拖拽文件出来到电脑【可以借助adb pull】,可否类似于huawei share,将 【adb pull】封装为【拖拽】。
  3. scrcpy可否避开第一次的usb开启网络adb调试呢? 而是通过扫码/或者其余方式呢? 目前在coolapk.com有一款【fastconnect】app。
    4 wifi链接下,可否改善下由于 2.4g路由器网速较弱,不如5ghz的,带来的帧渲染变慢,卡顿呢?因为golang适合于网络并发。

Error while fetching and compiling

$ go get github.com/ClarkGuan/scrcpy-go

github.com/ClarkGuan/go-sdl2/sdl

../go/src/github.com/ClarkGuan/go-sdl2/sdl/hints.go:107:50: could not determine kind of name for C.SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH

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.