screcord

A python wrapper for Android/iOS screen recording.


License
MIT
Install
pip install screcord==0.0.8

Documentation

screcord

一个手机屏幕录制库,基于python3.6+,支持安卓系统和iOS系统,详细原理见 #Python移动端录屏库

操作系统

因为底层录制工具,安卓端使用scrcpy,iOS端使用xrecord,所以操作系统依赖与底层工具保持一致即可。 通常iOS手机录屏需要使用MacOS系统,安卓手机录屏使用Win、MacOS、Linux皆可

快速使用

第一步,安装screcord库,要求py3.6+

pip3 install screcord

第二步,安装底层录制工具依赖

第三步,在需要录制的case上引入record这个装饰器即可,可参考example/demo.py

record 方法入参格式如下:

  • platform - 安卓/iOS可缩写为:a/i
  • file_path - 录屏视频的文件路径,建议mp4格式
  • offset - 偏移量,tuple类型,表示录屏开始后,在case开始前等待几秒,case执行完等待几秒,通常用于case前后的等待缓冲期
  • pre_kill - 在开始录屏前是否需要kill掉已有的进程
from screcord import record

# 安卓端
device_id = "xxxxx"
video_fp = "./demo.mp4"
@record('android', device, video_fp, offset=(1, 2))
def start_app():
    # your case
    ......
    
# iOS端
udid = "xxxxx"
video_fp = "./demo.mp4"
@record('ios', udid, video_fp, offset=(1, 1), pre_kill=False)
def start_app():
    # your case
    ......

值得注意的是:

  • 因为scrcpy同一时刻只允许一个进程运行,所以安卓端建议将pre_kill置为True
  • iOS端建议将pre_kill置为False,因为每次启动xrecord时候都会重连设备,这会导致WDA自动化测试中断

常见问题

运行demo

正确运行demo.py方式如下

  1. 连接设备,修改device为自己手机的device_id/udid
  2. 在终端(如:iterm2、cmd等)执行:cd screcord/example ; python3 demo.py
    ➜  example git:(master) ✗ python3 demo.py
    2021-11-18 19:18:51.759 | INFO     | screcord:_update_offset:128 - current case offset: (2, 1)
    2021-11-18 19:18:51.759 | INFO     | screcord:_cmd:111 -
    ===== CMD INFO =====
    platform: ios
    name: xrecord
    cmd: "/usr/local/lib/python3.7/site-packages/screcord/xrecord" -q -i="00008020-001D1D900CB9002E" -o="./demo2.mp4" -f
    ====================
    2021-11-18 19:18:51.812 | INFO     | screcord:start:57 - ========= START RECORD ==========
    5
    4
    3
    2
    1
    2021-11-18 19:18:59.838 | INFO     | screcord:stop:69 - ========== STOP RECORD ==========
  3. 录制结束后会在example目录下生成demo1.mp4demo2.mp4文件

安卓端

  1. 安卓手机录制失败请先检查scrcpy是否已经正常安装,并配置好环境变量,配置正常执行以下命令展示如下
    (venv) ➜  screcord git:(master) ✗ scrcpy -v
    scrcpy 1.10
    
    dependencies:
     - SDL 2.0.9
     - libavcodec 58.35.100
     - libavformat 58.20.100
     - libavutil 56.22.100

iOS端

  1. iOS手机录制报错先检查Quicktime是否打开正常,详情见运行报错 #3
  2. iOS手机录制需在终端上运行,不能在IDE下运行,原因见Using IntelliJ IDEA command line tool, xrecord process is killed #13
  3. iOS端录屏会中断WDA,解决方案见pre_kill置为False,iOS端录屏会中断WDA #5