在Windows下编译与运行minicap
来源:互联网 发布:显卡降频软件 编辑:程序博客网 时间:2024/06/05 22:55
在Windows下编译与运行minicap
minicap是一个可以远程获取android屏幕画面的开源库,它在低版本的android系统上采用截屏的方式获取画面,在4.2以上的android系统上采用创建VirtualDisplay的方式来获取画面、性能大大提高。
minicap的核心功能都在minicap.so中实现,如果要进行二次开发直接引用即可,这里编译与运行的是自带的示例,用于预览效果。
编译示例服务端
需要安装git,以及android编译和调试相关的ndk、adb、lldb(这里直接安装的Android Studio),然后首先获取工程代码,目录不要含有中文,比如我把所有工程都放在D:\Android\project下面。
D:\Android\project>git clone https://github.com/openstf/minicap.gitD:\Android\project>cd minicapD:\Android\project\minicap>git submodule initD:\Android\project\minicap>git submodule update
执行完毕后,会发现新增了一个minicap目录:
minicap |-example 简单的示例客户端,连接minicap服务端,转换为web显示 |-jni 源代码,minicap为纯c/c++ | |-minicap 简单的示例服务端,实现将捕获到的帧通过网络传输的功能 | |-minicap-shared 核心功能库,实现捕获画面、并通知listener的功能 | | |-aosp 实际实现 | | |-libs 已经编译好的so库 | | |-android-xx 对应API版本为xx的so库,实现方法有所不同 | | |-src 源代码 | | |-mock 空实现 | |-vendor 依赖的第三方库 | | |-libs 编译后的输出目录
然后调用ndk-build进行编译。安装后默认是没有添加环境变量的,需要手动添加,这里在命令行中临时将ndk-build和adb运行目录添加到path环境变量,比如我把android SDK安装在D:\Android\sdk下面。
D:\Android\project\minicap>set path=%path%;D:\Android\sdk\ndk-bundle;D:\Android\sdk\platform-toolsD:\Android\project\minicap>ndk-build.cmd APP_PLATFORM=android-25 APP_ABI=armeabi-v7a
ndk-build可以通过APP_PLATFORM参数设置目标平台,默认是android-14,这里指定的是android-25(7.0),实际并没有什么影响,因为只有minicap-shared的实现是平台相关的,但我们使用编译好的库;通过APP_ABI可以指定指令平台,如果不指定默认将编译全部的armeabi-v7a、arm64-v8a、x86、x86_64平台。
执行完毕后,在libs/armeabi-v7a下会生成minicap、minicap.so、minicap-nopie三个文件,实际用到的只有minicap,这里生成的minicap.so是一个空实现。
运行示例服务端
部署与运行服务端,需要用到adb工具。
首先将需要用到的minicap、minicap.so两个文件拷贝到android设备的/data/local/tmp目录:
D:\Android\project\minicap>adb push libs\armeabi-v7a\minicap.so /data/local/tmpD:\Android\project\minicap>adb push jni\minicap-shared\aosp\libs\android-25\armeabi-v7a\minicap.so /data/local/tmp
注意,这里拷贝的minicap.so是已经预先编译好的,版本不可超过android设备的版本,比如我使用的Android 7.0的手机测试,拷贝的是对应的android-25的库。
由于我们是在windows下面编译的,文件是没有linux文件系统的运行权限的,所以需要赋予运行权限:
D:\Android\project\minicap>adb shell chmod 777 /data/local/tmp/minicapD:\Android\project\minicap>adb shell chmod 777 /data/local/tmp/minicap.so
然后,使用adb工具进行端口映射,将服务端的端口映射到1717:
D:\Android\project\minicap>adb forward tcp:1717 localabstract:minicap
接下来,需要查看我们的android设备屏幕分辨率,在启动时需要用到:
D:\Android\project\minicap>adb shell wm sizePhysical size: 1080x1920
这里得到我的手机屏幕分辨率是1080x1920,可以启动服务端了,这里设置了LD_LIBRARY_PATH环境变量、不然会找不到minicap.so库:
D:\Android\project\minicap>adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0
如果没有意外,服务端就启动成功了。
运行示例客户端
示例客户端是采用nodejs编写的,因此需要先下载并安装nodejs,在https://nodejs.org/download/release/latest/可以找到最新的安装包,进行安装。
安装完毕后,还需要安装ws和express这两个示例客户端所依赖的组件:
npm install -g wsnpm install -g express
如果此时运行程序,仍然会报缺乏组件错误,额外的组件是安装到用户目录下的,需要设置环境变量,比如当前是Administrator用户登录,临时添加NODE_PATH变量并运行:
D:\Android\project\minicap\example>set NODE_PATH=C:\Users\Administrator\AppData\Roaming\npm\node_modulesD:\Android\project\minicap\example>node app.js
如果没有意外,客户端端就启动成功了,在浏览器中打开http://localhost:9002/就可以看到实时的屏幕画面了。
- 在Windows下编译与运行minicap
- 在 Windows 下编译运行 MUMPS
- 在Windows下编译运行QuantLib
- 在windows下编译运行lua源程序
- java SE运行环境在windows下的配置和命令行方式编译与运行java程序
- 在windows命令行下编译*.java文件,并运行
- cocos2dx在windows下编译运行移植android项目
- WINDOWS下编译MYSQL5.1.73,在VS2008中运行
- Windows下使用MinGW在命令行编译运行C++程序
- Windows环境下MPI程序的编译与运行
- Windows下Erlang的编译与运行问题
- Windows环境下MPI程序的编译与运行
- Picoc在Ubuntu下的编译与运行测试
- 在Windows与Linux下查看运行的服务
- flume 1.7在windows下的安装与运行
- OpendTect4.0.1在Windows的编译过程,在Debug状态下运行出R6034错,Release状态下可以运行!
- windows下,Tulip在VS2010中的编译与配置
- Qwt在windows下的安装与编译
- 小游戏之---三子棋----
- Executors.newSingleThreadScheduledExecutor()
- 关于IDE软件(Dev cpp/VS/Code Blocks)出现ld returned 1 exit status的改正措施
- Android应用内存优化
- [bzoj1017]:[JSOI2008]魔兽地图DotR
- 在Windows下编译与运行minicap
- hive sql数据库跑批插件(hive,impala)
- selenium-下拉框选择
- linux中netlink机制的实例讲解
- Mysql 对数据统计百分比的四舍五入
- 不允许使用“{...}”对”std::vector<int,std::allocator<int> >“类型的对象进行初始化
- Java8 新添两宝——默认方法和静态方法
- 计算机维护
- 事务中的四种隔离级别