Airtest1.2.10.2版本Android錄屏功能

1. 前言

本次是Airtest庫更新,版本提升至1.2.10.2,內容主要是Android錄屏功能的改動。

2. 更改部分

  • 在Airtest1.2.9中提供的cv2模式已經被捨棄,因爲容易引發錯誤,效果也不如ffmpeg
  • 只有Android需要mode參數,默認爲yosemite模式;Window/iOS的start_recording不再需要有mode參數;
  • 錄屏的ffmpeg模式增加了max_size參數,能夠指定錄屏結果的圖像大小,因爲屏幕圖片越大,在錄屏時造成的系統負載越大(CPU和內存佔用);
代碼示例:
dev = connect_device("android:///")
dev.start_recording(output="test.mp4", mode="ffmpeg", max_size=800)
# Android 支持mode指定使用ffmpeg模式

3. 其他改動

  • 去掉了numpy 的版本號限制
  • 如果Android出現了屏幕有一半黑屏的情況,可以再次重連

 

4. Android錄屏功能介紹【重點】

1.2.10.2版本的Airtest支持2種錄屏模式,yosemiteffmpeg默認情況下,都是使用yosemite錄屏模式 。

1)如何選擇合適的Android錄屏模式

上述兩種錄屏模式的區別如下:
  • yosemite :原有的默認模式,錄屏清晰度和質量較高,但兼容性較差,部分機型可能有問題;
    • 支持的參數:max_timeorientationbit_ratebit_rate_level
  • ffmpeg : 在1.2.9之後加入的新模式,錄屏幀率和質量較低,但兼容性更好,能兼容絕大多數設備;
    • 支持的參數:max_timeorientation , max_size,fpssnapshot_sleep
由此可見,如果對錄屏清晰度有要求的話,可以使用默認的錄屏模式 yosemite (前提是設備能使用這種錄屏方式),不用額外指定錄屏模式的參數;如果對錄屏清晰度沒有很高要求的話,可以指定錄屏模式爲 ffmpeg :
dev = connect_device("Android:///")
dev.start_recording(mode="ffmpeg",output="test.mp4")
pass
dev.stop_recording()

2)重要參數:指定錄屏時長 max_time

2種錄屏模式均有一個默認的錄屏時長:1800s,也就是半小時;用戶可以自由修改這個默認的錄屏時長:
dev = connect_device("Android:///")
dev.start_recording(max_time="10",output="test.mp4")
sleep(11)
示例沒有結束錄屏的腳本,則會按照啓動錄屏時的 max_time 時長去錄屏,也就是錄屏10s後就自動結束錄屏了。但是這裏有一點比較特別:如果這種情況下,使用yosemite錄屏模式,則錄屏文件仍會保存在手機內存裏,沒有被拉取出來(添加結束錄屏腳本可以解決);如果使用ffmpeg模式,則錄屏文件會保存在log目錄下。所以,不論有沒有特殊指定最大錄屏時長,我們還是按照規範添加開啓錄屏和結束錄屏的腳本,避免一些問題。

3)重要參數:指定錄屏時屏幕方向 orientation

  • 當跑測過程中大部分時間是豎屏時,可以考慮將 orientation=1 ,或 orientation="portrait"
  • 當跑測過程中大部分是橫屏,可以 orientation=2 ,或 orientation="lanscape" ,適合遊戲等橫屏應用;
  • 橫豎屏都有可能的話,可以不指定參數,默認值爲0,會用一個正方形來容納視頻內容,方便橫豎屏轉換
示例詳情可以參考我們的往期推文 Airtest新增iOS、Windows錄屏功能,真香! 。

4)重要參數:指定錄屏的圖像大小 max_size

錄屏的ffmpeg模式有一個 max_size參數,能夠指定錄屏結果的圖像大小:
# 指定錄屏圖像大小爲800
dev = connect_device("Android:///")
dev.start_recording(mode='ffmpeg',max_time=10,output="test_800.mp4",max_size=800)
sleep(11)
# 指定錄屏圖像大小爲1080
dev = connect_device("Android:///")
dev.start_recording(mode='ffmpeg',max_time=10,output="test_1080.mp4",max_size=1080)
sleep(11)
在相同設備,相同畫面下錄屏,運行後可以知道,圖像大小爲800的清晰度比1080的差,但錄屏文件比1080的小。由此可見,如果不介意錄屏清晰度,但是比較介意錄屏大小,可以適當調低 max_size ,節省內存。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章