使用 ADB 捕捉屏幕

我正在尽快截取手机屏幕的截图。 目前,我正在做:

adb shell screencap -p /sdcard/screencap.png && adb pull /sdcard/screencap.png

然而,它太慢,需要长达3秒钟。 有没有更好的方法来做到这一点? 我打算使用这一功能与一个非根手机。

还有什么不同的参数我可以用来屏幕盖?

谢谢。

编辑(额外信息) : 我打算使用这种方法,以便能够得到一个屏幕上的实时饲料到我的电脑。当前的方法可以工作,但是速度太慢。我不能使用 adb shell screenrecord,因为我将无法访问视频文件,而它正在被记录。

204248 次浏览

很抱歉告诉你 screencap只是一个简单的命令,只接受很少的参数,但没有一个可以为你节省时间,这里是 -h帮助输出。

$ adb shell screencap -h
usage: screencap [-hp] [-d display-id] [FILENAME]
-h: this message
-p: save the file as a png.
-d: specify the display id to capture, default 0.
If FILENAME ends with .png it will be saved as a png.
If FILENAME is not given, the results will be printed to stdout.

除了命令 screencap,还有另外一个命令 screenshot,我不知道为什么从 Android 5.0中删除了 screenshot,但是它在 Android 4.4下面,你可以从 给你中检查源代码。我没有比较这两个命令之间哪个更快,但是您可以在您的真实环境中进行尝试并做出最终决定。

要开始记录设备的屏幕,请运行以下命令:

adb shell screenrecord /sdcard/example.mp4

该命令将使用默认设置开始记录设备屏幕,并将生成的视频保存到设备上的/sdcard/example.mp4文件中。

录制完成后,在命令提示符窗口中按 Ctrl + C 停止屏幕录制。然后可以在指定的位置找到屏幕录制文件。请注意,屏幕记录保存在设备的内部存储器中,而不是计算机中。

默认设置是使用设备的标准屏幕分辨率,以4Mbps 的比特率对视频进行编码,并将最大屏幕录制时间设置为180秒。有关可以使用的命令行选项的详细信息,请运行以下命令:

adb shell screenrecord --help

这个工作没有根设备。希望这有所帮助。

您可以从标准输出读取二进制代码,而不是将 png 保存到 sdcard 中,然后将其拉出:

adb shell screencap -p | sed 's|\r$||' > screenshot.png

这会节省一点时间,但不会太多。

来源: 从 adb shell 读取二进制标准输出数据?

保存到 Windows、 OSX 和 Linux 上的文件

adb exec-out screencap -p > screen.png

在 Linux 上复制到剪贴板

adb exec-out screencap -p | xclip -t image/png

利用这篇文章和其他几篇文章中的一些知识,我发现最适合我的方法是:

adb shell 'stty raw; screencap -p'

我在 GitHub 上发布了一个非常简单的 Python 脚本,它基本上反映了通过 ADB 连接的设备的屏幕:

Https://github.com/baitisj/android_screen_mirror