ffmpeg是跨平台和非常强大的软件来处理video/audio或stream。 在Linux上,ffmpeg可以用下面的命令捕获X11屏幕:
ffmpeg -f x11grab -r 25 -s cif -i :0.0 out.mpeg
但是有可能用ffmpeg来获取Windows桌面?
使用directshow屏幕捕获器:
http://code.google.com/p/ardesia/issues/detail?id=19
https://github.com/rdp/on-screen-capture-recorder-to-video-windows-free
使用内置的GDI screengrabber (不需要安装)像这样:
ffmpeg -f gdigrab -framerate 10 -i desktop [output]
这将把所有的显示器作为一个大的连续显示器来捕捉。
如果你想限制一个地区,并显示正在抓取的区域:
ffmpeg -f gdigrab -framerate ntsc -offset_x 10 -offset_y 20 -video_size 640x480 \ -show_region 1 -i desktop [output]
获取名为“计算器”的窗口的内容:
ffmpeg -f gdigrab -framerate 25 -i title=Calculator [output]
我发现framerate 10很适合屏幕捕捉(你可以改变它)。
我已经编码到文件和流输出,它工作得很好。
*此代码已成功地在Windows XP Sp3和ffmpeg(windows的最后一个版本2012年12月12日)上试用-ffmpeg.exe必须复制到c:\ windows \ system32目录中,以便从PC的任何地方访问)ScreenCapture可以免费下载(谷歌)。 安装它(msi文件)。 它从(ScreenCapture.ax文件)自动注册。 它也与一个IscrenCapture.h文件一起发送。
– 捕获屏幕视频和音频(调整您的设备音频 – 我的是RealTek AC97音频)我不能安装参数UscreenCapture params(甚至尝试在IscrenCapture.h文件)。它始终提供全面的scren捕获只。 在注册表位置,在参数类型(双字由作者指定,但reg_binary安装)中有一个错误…然后我使用crop()ffmpeg函数来捕获屏幕上的任何区域。命令行是:
xwidth
, xwidth
是区域要捕获的宽度和高度。 xleft
, xtop
矩形捕捉左上角的坐标。
ffmpeg -f dshow -i video="UScreenCapture":audio="Realtek AC97 Audio" -vf crop=xwidth:xheight:xleft:xtop c:\output.flv
捕捉视频只能使用
ffmpeg -f dshow -i video="UScreenCapture" -vf crop=xwidth:xheight:xleft:xtop c:\output.flv
注:x11grab不工作在Windows(它是专门为Linux / X11)可以使用wscript.shell静默编码行命令。 我用FLV格式的视频输出,因为我有最好的渲染和小容量。我没有成功与MP4。
你可以用ffmpeg知道你的媒体设备:
ffmpeg -list_devices true -f dshow -i dummy
你可以使用这个命令行来记录你的电脑上的任何声音(调整你的设备):
ffmpeg -f dshow -i audio="Realtek AC97 Audio" -acodec libmp3lame "c:\out.mp3"
一个补丁实现这个被发送到ffmpeg邮件列表 。 这将实现gdigrab
工作就像x11grab
。
此外, ffmpeg编解码器页面支持 “VfW”(Windows视频?也称为DirectShow?)捕获。
http://nerdlogger.com/2011/11/03/stream-your-windows-desktop-using-ffmpeg/
解释如何做到这一点。
基本上,安装uscreencapture dshow filter,然后ffmpeg -f dshow -i video =“UScreenCapture”out.mp4