这个问题在这里已有答案:
我正试图尽快获得手机屏幕的截图。目前,我正在做:
adb shell screencap -p /sdcard/screencap.png && adb pull /sdcard/screencap.png
但它太慢,需要3秒钟。有没有更好的方法来做到这一点?我打算在没有根据的手机上使用此功能。
还有什么我可以用于screencap的不同论点?
谢谢。
编辑(额外信息):我打算使用这种方法能够将屏幕的实时馈送到我的电脑上。目前的方法有效但速度太慢。我不能使用adb shell screenrecord
,因为在录制时我无法访问视频文件。
使其工作@ OSX和Linux
adb exec-out screencap -p > screen.png
https://stackoverflow.com/a/37191719/75579回答不知何故在Android 7中停止了为我工作。所以我必须以手动方式进行,所以我想分享它。
~/.bash_profile
或~/.profile
文件中:
snap_screen() {
if [ $# -eq 0 ]
then
name="screenshot.png"
else
name="$1.png"
fi
adb shell screencap -p /sdcard/$name
adb pull /sdcard/$name
adb shell rm /sdcard/$name
curr_dir=pwd
echo "save to `pwd`/$name"
}
source ~/.bash_profile
或source ~/.profile
命令,使用时不指定文件名:
$ snap_screen
11272 KB/s (256237 bytes in 0.022s)
Saved to /Users/worker8/desktop/screenshot.png
使用文件名:
$ snap_screen mega_screen_capture
11272 KB/s (256237 bytes in 0.022s)
Saved to /Users/worker8/desktop/mega_screen_capture.png
希望能帮助到你!
**如果插入了多个设备,则无法使用此功能
您可以从stdout读取二进制文件,而不是将png保存到SD卡,然后将其拉出:
adb shell screencap -p | sed 's|\r$||' > screenshot.png
这应该节省一点时间,但不多。
利用本文和其他几篇文章中的一些知识,我发现对我来说最有效的方法是:
adb shell 'stty raw; screencap -p'
我在GitHub上发布了一个非常简单的Python脚本,它基本上反映了通过ADB连接的设备的屏幕:
要开始录制设备的屏幕,请运行以下命令:
adb shell screenrecord /sdcard/example.mp4
此命令将使用默认设置开始记录设备的屏幕,并将生成的视频保存到设备上/sdcard/example.mp4文件中的文件中。
完成录制后,在“命令提示符”窗口中按Ctrl + C可停止屏幕录制。然后,您可以在指定的位置找到屏幕录制文件。请注意,屏幕录制将保存到设备的内部存储,而不是计算机。
默认设置是使用设备的标准屏幕分辨率,以4Mbps的比特率对视频进行编码,并将最大屏幕录制时间设置为180秒。有关可以使用的命令行选项的更多信息,请运行以下命令:
adb shell screenrecord --help
这可以在不设备的情况下工作。希望这可以帮助。
很抱歉告诉你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
,我不知道为什么screenshot
从Android 5.0
被移除,但它可以在Android 4.4
下面,你可以检查来自here的来源。我没有在这两个命令之间做出比较更快的比较,但你可以尝试在你的真实环境中做出最终的决定。