FFmpeg搭配UScreenCapture无法录制1920x1080全屏:输出分辨率仅1280x720求助
解决FFmpeg UScreenCapture录制分辨率不符的问题
我明白你现在遇到的困扰——明明设置了1920x1080的全屏参数,但最终录制的视频只有1280x720,还漏了部分屏幕内容。这大概率是参数顺序错误或UScreenCapture捕获源的默认限制导致的,下面给你几个可行的解决办法:
方案1:调整FFmpeg参数顺序(适配UScreenCapture)
你之前的命令把-video_size放在了-i之后,这时候这个参数是作用于输出视频的,而非告诉UScreenCapture要捕获多大的区域。正确的做法是把屏幕捕获相关参数放在输入流之前,也就是-f dshow之后、-i之前:
C:\Users\Totzfreelance\ffmpeg.exe -f dshow -video_size 1920x1080 -offset_x 0 -offset_y 0 -i video="UScreenCapture":audio="Microphone (Realtek High Definition Audio)" -pix_fmt yuv420p c:\Users\Totzfreelance\testing3.mp4
这样FFmpeg会先指令UScreenCapture捕获1920x1080的区域,再进行后续编码输出。
方案2:改用更可靠的gdigrab捕获源
UScreenCapture是第三方DirectShow滤镜,有时会存在分辨率限制或兼容性问题。FFmpeg自带的gdigrab是专门针对Windows桌面捕获的工具,稳定性和分辨率支持更出色,推荐试试这个命令:
C:\Users\Totzfreelance\ffmpeg.exe -f gdigrab -video_size 1920x1080 -framerate 30 -i desktop -f dshow -i audio="Microphone (Realtek High Definition Audio)" -pix_fmt yuv420p c:\Users\Totzfreelance\testing3.mp4
这里的-framerate 30是设置录制帧率(可按需改成60),-i desktop表示捕获整个主桌面;如果有多显示器,还能通过-offset_x和-offset_y指定具体屏幕区域。
额外验证步骤
如果方案1无效,可以先确认UScreenCapture是否支持1920x1080分辨率,运行以下命令查看它的可用选项:
ffmpeg -f dshow -list_options true -i video="UScreenCapture"
在输出结果里查找video_size相关条目,如果没有1920x1080,说明该滤镜不支持此分辨率,直接使用方案2的gdigrab即可。
内容的提问来源于stack exchange,提问作者The Mr. Totardo




