使用ffmpeg捕获Windows屏幕

kam*_*mae 40 windows ffmpeg screen-capture

ffmpeg的是跨平台的,非常强大的软件来处理视频/音频或流呢.在Linux上,ffmpeg可以使用以下命令捕获X11屏幕:

ffmpeg -f x11grab -r 25 -s cif -i :0.0 out.mpeg
Run Code Online (Sandbox Code Playgroud)

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

小智 53

使用内置的GDI screengrabber(无需安装),如下所示:

ffmpeg -f gdigrab -framerate 10 -i desktop [output]
Run Code Online (Sandbox Code Playgroud)

这会将所有显示捕获为一个大的连续显示.

如果要限制区域,并显示正在抓取的区域:

ffmpeg -f gdigrab -framerate ntsc -offset_x 10 -offset_y 20 -video_size 640x480 \
-show_region 1 -i desktop [output]
Run Code Online (Sandbox Code Playgroud)

要获取名为"Calculator"的窗口的内容:

ffmpeg -f gdigrab -framerate 25 -i title=Calculator [output]
Run Code Online (Sandbox Code Playgroud)

我发现帧率10适合屏幕捕获(你可以改变它).

我已编码到文件和流输出,它工作得很好.

  • @Royi 你也可以按“Q”退出 ffmpeg。 (3认同)
  • 在 Windows 10 中使用 gdigrab 进行 ffmpeg 的体验相当糟糕。 (2认同)

M. *_*. P 7

这将有助于捕获Windows上的工作屏幕:

ffmpeg -y -rtbufsize 100M -f gdigrab -t 00:00:30 -framerate 30 -probesize 10M -draw_mouse 1 -i Desktop -c:v libx264 -r 30 -preset ultrafast -tune zerolatency -crf 25 -pix_fmt yuv420p c: /video_comapre2.mp4

  • 怎么也抓音频呢? (2认同)

小智 6

*此代码在Windows XP Sp3和ffmpeg上成功试用(最新版本为28/12/2012 for windows)-ffmpeg.exe必须复制到c:\ windows\system32目录中,以便从PC的任何位置进行访问)ScreenCapture可以是免费下载(谷歌).安装它(msi文件).它自动从(ScreenCapture.ax文件)注册.它也与IscrenCapture.h文件一起发送.

- 捕获屏幕视频和音频(调整您拥有的设备音频 - 我的是RealTek AC97音频)我无法在注册表中安装UscreenCapture的参数(甚至在IscrenCapture.h文件中尝试过).它总是只提供完整的scren捕获.有一个在注册表中的位置错误,在参数类型(双字是由作者指定的,但安装REG_BINARY)......然后我用作物()函数的ffmpeg捕捉到任何区域的屏幕的屏幕,命令行是:

xwidth,xheight是想要捕捉的区域的宽度和高度. xleft,xtop矩形捕获的左上角的坐标.

ffmpeg -f dshow -i video="UScreenCapture":audio="Realtek AC97 Audio" -vf crop=xwidth:xheight:xleft:xtop c:\output.flv
Run Code Online (Sandbox Code Playgroud)

捕获视频只能使用

ffmpeg -f dshow -i video="UScreenCapture" -vf  crop=xwidth:xheight:xleft:xtop c:\output.flv
Run Code Online (Sandbox Code Playgroud)

注意:x11grab不能在Windows上工作(它专门用于Linux/X11)可以使用wscript.shell来静默编码行命令.我使用格式视频输出作为flv因为我有最好的渲染和小容量.我不用mp4成功.

你可以通过ffmpeg了解你的媒体设备:

ffmpeg -list_devices true -f dshow -i dummy
Run Code Online (Sandbox Code Playgroud)

- 您可以使用此命令行从您的电脑录制任何声音(调整您的设备):

ffmpeg -f dshow -i audio="Realtek AC97 Audio" -acodec libmp3lame "c:\out.mp3"
Run Code Online (Sandbox Code Playgroud)


小智 5

ffmpeg windows静态版本4.2.2,带音频的屏幕录制

检查你的麦克风

ffmpeg -list_devices true -f dshow -i dummy
Run Code Online (Sandbox Code Playgroud)

接下来复制您的音频=“您的麦克风或立体声混合”,我的是“麦克风(Realtek 高清晰度音频)”。

ffmpeg -rtbufsize 1500M -f dshow -i audio="Microphone (Realtek High Definition Audio)" -f -y -rtbufsize 100M -f gdigrab -t 00:00:30 -framerate 30 -probesize 10M -draw_mouse 1 -i desktop -c:v libx264 -r 30 -preset ultrafast -tune zerolatency -crf 25 -pix_fmt yuv420p "d:\ffmpeg_testing.mp4"
Run Code Online (Sandbox Code Playgroud)


小智 2

http://nerdlogger.com/2011/11/03/stream-your-windows-desktop-using-ffmpeg/

解释了如何做。

基本上,安装 uscreencapture dshow 过滤器,然后 ffmpeg -f dshow -i video="UScreenCapture" out.mp4

  • 我收到错误:“[dshow @ 01065fc0] 找不到视频设备。视频=UScreenCapture:输入/输出错误转换失败!` (2认同)