FFMPEG 没有记录整个窗口

Posted

技术标签:

【中文标题】FFMPEG 没有记录整个窗口【英文标题】:FFMPEG is not recording the whole window 【发布时间】:2018-12-16 14:15:56 【问题描述】:

我正在使用 FFMPEG 录制一个窗口,如下图所示。在所有情况下,记录窗口的右侧都会被裁剪。我给出的命令是

ffmpeg -f gdigrab -i title="example.txt - Notepad++" output.mkv

非常感谢任何有关如何解决此问题的建议。

以下是一些附加信息:

运行 Windows 10 使用 ffmpeg-20181215-011c911-win64-static,但我在使用其他版本的 FFMPEG 时遇到同样的问题 桌面分辨率为 3200x1800(dpi 缩放问题?)

这就是上例中记录区域的样子

更新 1:

录制整个桌面可以正常工作,但是,当使用 x 和 y 偏移量录制区域时,捕获的区域是正确的,但指示的区域是错误的。我在下图中说明了这一点,它显示了录制期间桌面的屏幕截图。背景图片为网格,任务栏已隐藏。

要捕获的区域大小指定为 1280x720,但指示的区域为 1600x900。此外,x 偏移量指定为 400px,但指示的区域从 500px 开始。

记录的区域是正确的!下图是vlc回放时录制的截图,注意可以看到“错位”区域指示符

更新 2:

我注意到从桌面捕获时光标(鼠标)未正确放置,请参见下面的记录。录制过程中一切正常,但播放时光标错位。

为上述记录发出的命令是:

ffmpeg -f gdigrab -framerate 30 -offset_x 1820 -offset_y 100 -video_size 1280x720 -i desktop output5.mkv

Windows 10 / ffmpeg-20181215-011c911-win64-static

【问题讨论】:

用窗口大小指定桌面是否会给出正确的结果? 可以使用 x 和 y 偏移量捕获桌面的一部分,但区域指示器存在问题。我更新了问题并显示了一些额外的屏幕截图。 我还注意到,在录制屏幕的一部分时,鼠标放错了位置。我添加了一段录音来说明,请参阅更新 2。 如果你改变你的缩放比例会消失吗?听起来像 gdigrab 中的一些错误,请随时提交 trac,有人会在...年内解决它,或者修复补丁是理想的,或者提供资金,干杯! 根据我所见,如果输入是标题,则不会执行 dpi 缩放。此外,ffmpeg 的清单不会将自己标记为 dpi 感知。 【参考方案1】:

如问题的 cmets 所述,ffmpeg 不处理 Windows 中的不同 DPI 设置。但是我相信有一个解决提到的缩放问题的方法。如下:

    ffmpeg.exe的安装位置,打开属性窗口, img: ffmpeg property window 如果您是管理员,请单击“更改所有用户的设置”按钮 img: all users properties window 单击“更改高 DPI 设置”按钮 img: DPI scaling override 勾选“覆盖高 DPI 缩放行为。并确保选择了“缩放执行者:自动”

参考:

https://github.com/rdp/screen-capture-recorder-to-video-windows-free/issues/56#issuecomment-306900403

【讨论】:

这样就解决了问题。我一直在寻找这个问题的解决方案很长一段时间,如果我能更多地投票给这个答案,我会的。 接受答案是我最大的希望。多年来一直在使用 SO,但这是我第一次真正可以做出贡献:) 当我试图找出为什么工作中的自动化难以让我记录时,你的问题出现在我的搜索中(我是我唯一的 Windows 用户)找到答案)我找到了答案,很乐意为您提供帮助。

以上是关于FFMPEG 没有记录整个窗口的主要内容,如果未能解决你的问题,请参考以下文章

如何使用ffmpeg一次记录两个窗口?

FFmpeg使用显卡进行转码硬件加速的记录,以及和软压的比较

有没有办法限制哪些表面铬可以屏幕记录?

如何用FFMPEG分块记录UDP流?

ffmpeg常用的命令记录

ffmpeg记录