是的,我可以从外壳获取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
我可以在输出之前压缩屏幕截图吗?
答案 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