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種錄屏模式,
yosemite
和
ffmpeg
,
默認情況下,都是使用yosemite
錄屏模式 。
1)如何選擇合適的Android錄屏模式
上述兩種錄屏模式的區別如下:
yosemite
:原有的默認模式,錄屏清晰度和質量較高,但兼容性較差,部分機型可能有問題;
- 支持的參數:
max_time
, orientation
, bit_rate
, bit_rate_level
ffmpeg
: 在1.2.9之後加入的新模式,錄屏幀率和質量較低,但兼容性更好,能兼容絕大多數設備;
- 支持的參數:
max_time
, orientation
, max_size
,fps
, snapshot_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
,節省內存。