屏幕截图 - 命令行?


12

是否有一个命令行工具可以记录您的计算机屏幕和音频设备,然后将其保存到文件?


有什么理由需要成为CLI工具吗?您可以使用QuickTime免费获得屏幕截图。
igorw 2010年

我想在shell脚本中调用它并无人值守。

嗨Keith,欢迎来到StackOverlow。这看起来并不像编程相关,尽管实际上可能是你计划在批处理文件或其他东西中编写脚本。您可能想要重新编写它,以便它不会失控。
Brian MacKay 2010年

Answers:


9

Mac OS X提供了使用名为unimaginative的实用程序从命令行捕获静态屏幕截图的功能screencapture。您可以通过运行找到更多信息man screencapture

例如。 screencapture ~/Desktop/picture.png


至于录制动作和计算机音频,如果您使用的是Mac OS X 10.6或更高版本,可以使用QuickScript Player X通过AppleScript执行此操作。(但它绝对不是“沉默”,只会在有人登录时运行)

(记录屏幕5秒,只是一个可能的起点)

tell application "QuickTime Player"
    --activate
    new screen recording
    start document 1
    delay 5
    stop document 1
    save document 1 in file "/tmp/test.mov"
    quit
end tell

screencapture只允许静止图像,没有视频或录音。
MacLemon 2010年

@MacLemon:添加了一些说明。
Chealion 2010年

2
仅供参考,只是引用了一篇改进版本的博客文章,上面是Quicktime Applescript:netjunki.org/blog/...
David

1
@David提到的博客仍然可以在谷歌的缓存中找到,并注意到:“看起来当你尝试在10.7快速时间内调用保存只是忽略了这个电话。或类似的东西。脚本将永远挂在那里,然后超时。” 这对我来说是真实的10.8 ...
ptim

2

我使用SOX和VLC进行捕获,使用crontab进行调度,使用XLD创建m4a和MP4Box进行多路复用。它非常灵活,但需要了解Bash脚本(也许还有Apple脚本)我在Diego Massanti的mkmp4脚本中找到了我的灵感。

启动核心流程:

rec -q -c $C -r 48000 -b 16 $AFILE trim 0 $HH:$MM:00 &

VLC -I dummy screen:// --screen-fps=25 --quiet --sout "#transcode{vcodec=h264,vb=3072}:standard{access=file,mux=mp4,dst=$FILE}" --run-time $TIME vlc://quit

调度记录:

crontab -l
0       8       *       *       1-5     ~/capture.sh 3 0 recording-name 1

你可以知道剧本正在做什么:记录3小时捕捉,单声道声音,每个工作日上午8点


我没有找到也没有为MPEG音频流编译SOX,因此使用FLAC来节省一些空间; 我正在使用XLD将其转换为AAC-HE 16kbps,这足以满足语音需求。

下一步:多路复用音频和视频以创建mp4。如果你不介意使用GUI,那么MPEG StreamClip(或QuickTime)也很好用。

MP4Box -add $1.m4a -sbr -add $1.m4v -fps $2.0 -inter 500 $1.mp4

我每天都在使用这个来创建GoToWebinar的存档,但是当FFmpeg的下一个版本支持G2M4编解码器时,我不会再打扰了。是的,还有OSAscript发布网络研讨会,还需要摆脱com.apple.quarantine标志以禁用警告(你确定要打开它吗?)。

链接:

http://blog.massanti.com/2008/09/26/mkmp4-automated-h264-aacplus-encoder-script-mac-linux/


这也可能与VLC有关,在这篇博文中有一个关于如何使用它的小问题:netjunki.org/blog / ...
David

1

您可以使用软件ffmpeg。要在Mac上安装,请按照此处的说明进行操作。然后使用命令:

$ffmpeg -f alsa -ac 2 -i hw:0,0 -f x11grab -r 30 -s $(xwininfo -root | grep 'geometry' | awk '{print $2;}') -i :0.0 -acodec pcm_s16le -vcodec libx264 -vpre lossless_ultrafast -threads 0 -y output.mkv

1
我怀疑这对OSX有效,alsa和x11grab可能只适用于ffmpeg的linux版本。
Adam MW

0

对于捕获屏幕,有几个开源工具。您应该使用Linux上的软件包管理器搜索“屏幕截图”。类似的工具scrot可以在脚本中调用。如果您以编程方式执行此操作,则Imlib2中存在所需的入口点。

捕获声音实际上是麦克风声音设备的录音。这不是一个真正的快照,你应该管理录音应该完成多长时间。任何录音机都可以。

还有一些工具可以制作桌面视频。


0

将Linux帧缓冲设备的内容转储到文件可能与您要查找的内容类似。下面,我引用了Linux 2.2 Framebuffer设备编程教程的相关部分,看看。您需要配置系统以启用帧缓冲设备(检查系统上是否有/ dev / fb0),我的Ubuntu 9.04上没有它。

当你有高分辨率的文本模式,那么你可以开始尝试。您将拥有一个设备/ dev / fb0,您可以像任何普通文件一样查看它。要截取屏幕截图,您所要做的就是

cat / dev / fb0>〜/ sshot

你将拥有一个非常大的文件,里面有你的显卡内存。现在,如果清除屏幕,则键入

猫〜/ sshot> / dev / fb0

你应该有一个看起来和以前完全一样的显示器。当然,您开始键入显示的secon d恢复正常。


0

你可以使用ImageMagick的导入,但它只是Linux。然后你可以去一个终端并执行:

import screenshot.png

0

我也在老化的macbook上运行Snow Leopard,因为我正在尝试学习Objective C,所以我花了一些时间来构建一个可以捕获特定窗口的工具。

https://github.com/vorgos/QuickGrab

它是一个命令行工具,可以捕获最活跃的窗口或您指定的任何窗口。

希望有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.