ffmpeg - FFMPEG 没有记录整个窗口
问题描述
我正在使用 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 偏移量指定为 400 像素,但指示的区域从 500 像素开始。
记录的区域是正确的!下图是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
解决方案
如问题评论中所述,ffmpeg 不处理 Windows 中的不同 DPI 设置。但是我相信有一个解决提到的缩放问题的方法。如下:
- 到安装ffmpeg.exe的地方打开属性窗口, img:ffmpeg属性窗口
- 如果您是管理员,请单击“更改所有用户的设置”按钮 img: all users properties window
- 单击“更改高 DPI 设置”按钮 img:DPI 缩放覆盖
- 勾选“覆盖高 DPI 缩放行为。并确保选择了“缩放执行者:自动”
参考:
推荐阅读
- javascript - 为对象数组中的每个唯一用户名生成平均时间
- php - 在 WooCommerce 中更改订单运费总额
- python-3.x - Pandas 根据当前值计算数据列的新值
- teradata - Teradata SQL 语法错误:无效的 FORMAT 字符串 'hh:mi:ss.s(7)'
- github - 如何在 GitHub 表格中使用较小的字体?
- docker - Dockerfile 在 azure devops 中实施时面临问题
- android - MVVM - 从存储库类检索后在哪里格式化数据?
- php - 在 Windows Nanoserver 上安装 PHP 7.3 NTS-64 需要哪些 DLL?
- python - 使用用户输入在python中循环和求和
- mysql - 如何在 MySQL 中将已删除的值设置为变量