1、起因
使用ffmpeg做录屏功能,开启自带的gdigrab录屏时,鼠标指针闪烁严重,录屏电脑性能较低时甚至看不清鼠标。我受安排解决鼠标闪烁问题,解决方案较多,但考虑性价比与通用性(下到XP上到WIN11),使用现成且技术较为成熟的screen-capture-recorder.dll较为合适,但使用此dll录屏时,若屏幕有缩放,会导致录像无法录全整个屏幕,而我们无法控制用户行为,只能解决此问题。
2、问题所在
screen-capture-recorder.dll处理了屏幕缩放的问题,而ffmpeg同样处理了,这导致,如果屏幕有125%的缩放,ffmpeg裁剪一次录屏区域,screen-capture-recorder.dll裁剪一次录屏区域,导致了录不全屏幕的现象出现。
3、解决方式
去除两次缩放中的一次即可,考虑性价比,我们选择在ffmpeg.exe上禁用高DPI缩放,个人用户可右键→属性→兼容性→更改高DPI设置→替代高DPI缩放行为,而如果想自动给用户设置,可通过bat脚本,集成在自动安装中,附上bat脚本代码,脚本改自 百度用户:依梦琴瑶 的脚本,去除了输入选项,改为直接修改同目录下ffmpeg的属性。因对bat脚本语言不熟悉,修改的并不优雅,见谅。
4、bat脚本代码
新建txt,粘入代码,另存为所有类型,后缀.bat即可使用
@echo off
::设置ffmpeg.exe的完整路径
set App_path= %~dp0ffmpeg.exe
:Mai