在python上压缩adb screencap

时间:2019-02-26 04:28:11

标签: python adb screenshot

是的,我可以从外壳获取png流

adb exec-out screencap -p

像这样的python代码

start_time = time()

pipe = subprocess.Popen("adb exec-out screencap -p", stdout=subprocess.PIPE, shell=True)
img_bytes = pipe.stdout.read()
read_time = time()

img = cv2.imdecode(np.frombuffer(img_bytes, np.uint8), cv2.IMREAD_COLOR)
end_time = time()

print('stream size', len(img_bytes))
print('read cost', read_time - start_time)
print('decode cost', end_time - read_time)
print('screencap cost', end_time - start_time)

但是它仍然太慢了

size 2452217
read cost 2.630615234375
decode cost 0.0625
screencap cost 2.693115234375

我可以在输出之前压缩屏幕截图吗?

1 个答案:

答案 0 :(得分:0)

如果您的设备支持它,请尝试使用:

adb exec-out screenrecord --output-format=h264 -

这将输出一个h264电影流,该流将被压缩,而对adb主机和移动设备的要求都大大降低。

有关更多信息,请查看Use adb screenrecord command to mirror Android screen to PC via USB

此外,您还可以指定多个参数:

--help  Displays command syntax and options
--size WidthxHeight     Sets the video size: 1280x720. The default value is the device's native display resolution (if supported), 1280x720 if not. For best results, use a size supported by your device's Advanced Video Coding (AVC) encoder.
--bit-rate rate     Sets the video bit rate for the video, in megabits per second. The default value is 4Mbps.
--time-limit time   Sets the maximum recording time, in seconds. The default and maximum value is 180 (3 minutes).
--rotate    Rotates the output 90 degrees. This feature is experimental.
--verbose   Displays log information on the command-line screen. If you do not set this option, the utility does not display any information while running.

来源:https://developer.android.com/studio/command-line/adb#screenrecord