[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] ffmpeg录制指定应用程序窗口

请教大佬们:
怎么能使用ffmpeg来仅仅只录制指定的应用程序窗口(该窗口的音视频及图像)?
特别要求:无视遮挡,即使指定的应用程序窗口被其他窗口遮挡住了,也能完全仅仅只录制指定的那个应用程序的窗口的音视频及图像内容,而不会把其他的也录制起了!

求大佬们帮助指点!谢谢了!!

windows的图形显示不只有gdi ,还有dirextx ,先不考虑程序处理 ,黑屏很大概率是因为那个程序是用dirextx来显示的

TOP

回复 21# flashercs


    2年后,新版本是否有变化?

TOP

黑屏跟窗口标题是否中文无关;一个语言怎么会影响黑屏;好像是win10 1903版后修改了gdi函数,ffmpeg 似乎没有意 ...
flashercs 发表于 2022-8-25 17:31



   我确实在WIN10下测试的,但是,同样的代码 英文标题的窗口 就一切正常。
我也想法到WIN7中去测试一下。

TOP

黑屏跟窗口标题是否中文无关;一个语言怎么会影响黑屏;好像是win10 1903版后修改了gdi函数,ffmpeg 似乎没有意识到这个变化, 在低于此版本的Windows上测试,例如:win7,应该是正常录屏的.我测试win7是可以的.
微信:flashercs
QQ:49908356

TOP

回复 19# locoman

试一下用obs里的采集窗口和游戏源这两个方式那个能录到
如果只有游戏源能录到,就放弃ffmpeg吧

TOP

obs命令参数太少,但是可以绕一下在命令行通过websocket协议设置obs
设置窗口名的时候还要加上窗口的类名
...
idwma 发表于 2022-8-24 12:11



    您这个指导有道理有意思有功底——可以支持浏览器的中文标题,再不是黑屏了,且全程无视遮挡,总是能录制激活置前的浏览器窗口。

ffmpeg -f gdigrab -framerate 30 -i title="百度一下,你就知道 - 360安全浏览器 13.1" -b:v 3M  germ.flv

如此,能在百度搜索框中进行搜索,也能在浏览器标签页中增加新的浏览页面,浏览器中如果有多个标签页面,并不是总是在录制原先指定的那个页面,而是录制的被激活在最前面那个页面。

只要,FFMPEG确定找到了执行代码中的浏览器窗口了,就能开始正常录制,其后,它就不管浏览器的窗口标签是啥了!!找不到代码中的窗口标题,它就不会开始录制的。


不管咋样,这是一个值得深究探索的问题了,不同的方向和不同的方法,还是能发现很多的不同,但愿,最终能解决录制应用程序窗口,特别是我要的“腾讯会议”。

谢谢大佬一直热情不懈的研究和帮助指导!!谢谢了!!

TOP

本帖最后由 idwma 于 2022-8-24 12:21 编辑

obs命令参数太少,但是可以绕一下在命令行通过websocket协议设置obs
设置窗口名的时候还要加上窗口的类名

ffmpeg能录中文窗口的你换成浏览器的窗口名试试

TOP

本帖最后由 locoman 于 2022-8-24 09:27 编辑
dshow要安装一个过滤器才能录屏
如果有条件把obs里的截屏部分的代码搬过来用,那就什么窗口都能录了
idwma 发表于 2022-8-23 12:09



    ffmpeg -f dshow -list_devices 1 -i dummy

[dshow @ 00000210dd46b240] "Logitech HD Webcam C270" (video)
[dshow @ 00000210dd46b240] "OBS Virtual Camera" (video)
[dshow @ 00000210dd46b240] "立体声混音 (Realtek High Definition Audio)" (audio)
[dshow @ 00000210dd46b240] "麦克风 (HD Webcam C270)" (audio)
[dshow @ 00000210dd46b240] "线路输入 (Realtek High Definition Audio)" (audio)

我主要是想搞成一个批处理式的命令行工具自用,专门录制腾讯会议的窗口。
OBS如何搞成命令行使用,可惜我一团懵逼,根本弄不来啊!OBS也没有像FFMPEG那样遍地都有资料可查


-----------------------
还有,5.1是支持中文标题的窗口可录制了,不过全是黑屏!
但是,同样的执行代码,换成英文标题窗口,就一切正常的。
如此,也会与硬件加速问题有关吗?是不是还是FFMPEG没有把中文标题问题解决好呢?


ffmpeg -f gdigrab -i title="VCE Designer" -hide_banner -y out.mkv    ——(一切正常)
ffmpeg -f gdigrab -i title="腾讯会议" -hide_banner -y out.mkv   ——(全是黑屏)

ffmpeg -f gdigrab -framerate 30 -i title="VCE Designer" -b:v 3M  germ.flv    ——(一切正常)
ffmpeg -f gdigrab -framerate 30 -i title="腾讯会议" -b:v 3M  germ.flv   ——(全是黑屏)
----------------------------------

TOP

dshow要安装一个过滤器才能录屏
如果有条件把obs里的截屏部分的代码搬过来用,那就什么窗口都能录了

TOP

dshow 是用来录音和摄像头录像的;
需要先查看本机的输入设备:
  1. ffmpeg -f dshow -list_devices 1 -i dummy
复制代码
这不是用来桌面录屏的格式.
微信:flashercs
QQ:49908356

TOP

回复  locoman


    还可以试试-f dshow的方法,可能有些用了硬件加速的窗口还是会黑
idwma 发表于 2022-8-22 20:21



    这样报错:
ffmpeg -f dshow -i title="腾讯会议" -hide_banner -y out.mkv

TOP

回复 11# locoman


    还可以试试-f dshow的方法,可能有些用了硬件加速的窗口还是会黑

TOP

推荐
1、windows10+自带(win+g)
2、Nvidia Geforce Experence N卡自带录屏
3、OBS (开源)

TOP

本帖最后由 locoman 于 2022-8-22 17:38 编辑

千辛万苦下载回来了两个新版本(V5.0.1和V5.1),原先使用的V4.3。

原V4.3时不支持中文窗口标题(直接报错,不能启动录制);
现在的两个新版本都能对中文标题的窗口启动录制了,但是,同样的命令参数对有中文标题的窗口录制时,全都是一片黑屏根本看不见任何内容(但播放结果文件时,还是能看见黑框是在随着对象窗口大小变化的)

ffmpeg -version
ffmpeg version 5.0.1-essentials_build-www.gyan.dev Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 11.2.0 (Rev7, Built by MSYS2 project)

ffmpeg version 5.1-essentials_build-www.gyan.dev Copyright (c) 2000-2022 the FFmpeg developers
built with gcc 12.1.0 (Rev2, Built by MSYS2 project)


实测使用的命令参数:
ffmpeg -f gdigrab -i title="腾讯会议" -hide_banner -y out.mkv
ffmpeg -f gdigrab -framerate 30 -i title="腾讯会议" -b:v 3M  germ.flv
----------------------------------
注:下载回来的文件包中并不只是仅仅三个文件(ffmpeg.exe ffplay.exe ffprobe.exe),
而是还有一些其他目录文件,我就直接进入其中的BIN文件夹找到那三个文件运行的。
----------------------------------
是不是新版的指定录制窗口的运行参数不同了呢?
怎么才能解决黑屏呢?

希望大佬继续帮助研究解决,也只有大佬才有能力研究解决啊!
谢谢了!

TOP

返回列表