用ffmpeg捕获Windows屏幕

ffmpeg是跨平台和非常强大的软件来处理video/audio或stream。 在Linux上,ffmpeg可以用下面的命令捕获X11屏幕:

ffmpeg -f x11grab -r 25 -s cif -i :0.0 out.mpeg 

但是有可能用ffmpeg来获取Windows桌面?

使用内置的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函数来捕获屏幕上的任何区域。命令行是:

xwidthxwidth是区域要捕获的宽度和高度。 xleftxtop矩形捕捉左上角的坐标。

 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