使用 minicap 推流说明
  1. 使用 shell getprop ro.product.cpu.abi 检测手机 cpu 型号
  2. 使用 shell getprop ro.build.version.sdk 查询系统 sdk 版本
  3. 根据 cpu 从 Docs\ReleaseFolder\usr\minicap 中 rebuilt 中得到对应的 minicap 文件
  4. 根据型号从 Docs\ReleaseFolder\usr\minicap 中 aosp 目录得到对应的的 minicap.so 文件 (某些型号的手机如果待会运行失败,则要从 brand 目录得到对应的文件,执行命令时加入 -t 参数 )
  5. 使用 shell getprop ro.product.brand 查询手机品牌
  6. 将 minicap 与 minicap.so 文件推送至手机,比如 /data/local/tmp/ 目录下
  7. 判断文件是否存在 shell head -1 \"{remotePath}\" , 返回返回 No such file or directory 则文件不存在
  8. 调用 adb 设置两个文件的权限为 shell chmod 777 xxx , shell chmod 777 /data/local/tmp/minicap , `shell chmod 777 /data/local/tmp/minicap.so
  9. 调用 adb 查询手机尺寸 shell wm size, 如果有多个返回值,使用后面那个
  10. 调用 adb 启动工具 LD_LIBRARY_PATH=/data/local/tmp/ /data/local/tmp/minicap -P 1080x2280@189x400/0 -Q 75 -S -r 5
    手机宽x手机高@输出图宽x输出图高/方向
    -Q 75 图片质量 1-100
    -S 来不及输出就跳过帧
    -r 5 每秒显示帧数
    -t 为了测试是否能正常运行,可以加参数 -t 输出一个工作信息
  11. 使用 adb 创建与手机的映射端口 , 参数 Forward pc 端使用 tcp:port 手机端使用 localabstract:minicap, 比如 .\adb.exe forward tcp:1313 localabstract:minicap
  12. 查看程序是否启动及 id .\adb.exe shell ps | ? { $_ -like 'mini' }
  13. 打开映射的 socket 端口 127.0.0.1:1313 开始接收手机端 minicap 的数据
  14. 每一块数据 24 字节
    1 版本号,固定为 1
    1 数据块长度, 固定为 24
    4 minicap 运行的进程号
    4 手机宽度
    4 手机调试
    4 显示图像的宽度
    4 显示图像的高度
    1 方向
    1 忘了什么定义
  15. 剩下的每一块都是图像数据
    前 4 个字节为图像字节的尺寸, 比 1234, 那么接下来 1234 个字节就是图像的内容
  16. 使用完成后记得关闭 映射的端口

调用例子

.\adb.exe -s R38MB00Y5SY shell getprop ro.product.cpu.abi
.\adb.exe -s R38MB00Y5SY shell getprop ro.build.version.sdk
.\adb.exe -s R38MB00Y5SY push C:\Users\xu\Desktop\temp\minicap  /data/local/tmp/
.\adb.exe -s R38MB00Y5SY push C:\Users\xu\Desktop\temp\minicap.so  /data/local/tmp/
.\adb.exe -s R38MB00Y5SY shell chmod 777 /data/local/tmp/minicap
.\adb.exe -s R38MB00Y5SY shell chmod 777 /data/local/tmp/minicap.so
.\adb.exe -s R38MB00Y5SY shell wm size
.\adb.exe -s R38MB00Y5SY shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@200x400/0 # 调用进程会阻塞 
.\adb.exe forward tcp:1313 localabstract:minicap
.\adb.exe -s R38MB00Y5SY  forward --list  # 列出已映射端口
.\adb.exe -s R38MB00Y5SY  forward --remove tcp:1314 # 移除中转的窗口
.\adb.exe -s C7YVB20511003744 shell " ps -A | grep minicap" # 列出 minicap 的进程编号 
.\adb.exe -s C7YVB20511003744 shell kill 21320 # 强制关闭 minicap 进程 
上一篇
下一篇