Kazam 总是只录制 1/4 的屏幕

Kazam 总是只录制 1/4 的屏幕

我正在尝试使用 Kazam 录制屏幕视频。无论我做什么,它总是录制屏幕左上角的 1/4。无论我选择整个屏幕、一个窗口还是选择屏幕的一部分进行录制。

我猜这与缩放有关。我在 Ubuntu 中使用缩放功能,因为它是 4k 显示器。有办法解决这个问题吗?

答案1

确实,这和显示器的缩放配置有关。我也有 4K,我需要使用 200% 缩放。

此补丁解决了这个问题,应用起来非常简单。我在 Ubuntu 22.04.1 上测试过,运行完美。

答案2

在 kazam github 上发现了同样的问题https://github.com/hzbd/kazam/pull/47

@sllorente 仅为 1 个文件准备了路径(而不是 2 个),从而解决了该问题,请参阅https://bugs.launchpad.net/kazam/+bug/1283424/comments/13

补丁可以从以下网址下载:https://bugs.launchpad.net/kazam/+bug/1283424/+attachment/5499618/+files/kazam-1.4.5-patch

--- kazam-1.4.5/backend/prefs.py    2014-08-18 18:48:36.000000000 +0200
+++ kazam/backend/prefs.py  2021-05-23 15:30:44.876596507 +0200
@@ -312,22 +312,31 @@
             self.default_screen = Gdk.Screen.get_default()
             self.logger.debug("Found {0} monitor(s).".format(self.default_screen.get_n_monitors()))
 
+            combined_width = 0
+            combined_height = 0
             for i in range(self.default_screen.get_n_monitors()):
                 rect = self.default_screen.get_monitor_geometry(i)
-                self.logger.debug("  Monitor {0} - X: {1}, Y: {2}, W: {3}, H: {4}".format(i,
+                scale = self.default_screen.get_monitor_scale_factor(i)
+
+                self.logger.debug("  Monitor {0} - X: {1}, Y: {2}, W: {3}, H: {4}, scale: {5}".format(i,
                                                                                           rect.x,
                                                                                           rect.y,
                                                                                           rect.width,
-                                                                                          rect.height))
-                self.screens.append({"x": rect.x,
-                                     "y": rect.y,
-                                     "width": rect.width,
-                                     "height": rect.height})
+                                                                                          rect.height,
+                                                                                          scale))
+                self.screens.append({"x": rect.x * scale,
+                                     "y": rect.y * scale,
+                                     "width": rect.width * scale,
+                                     "height": rect.height * scale,
+                                     "scale": scale})
+
+                combined_width = combined_width + rect.width * scale
+                combined_height = combined_height + rect.height *scale
 
             if self.default_screen.get_n_monitors() > 1:
                 self.combined_screen = {"x": 0, "y": 0,
-                                        "width": self.default_screen.get_width(),
-                                        "height": self.default_screen.get_height()}
+                                        "width": combined_width,
+                                        "height": combined_height}
                 self.logger.debug("  Combined screen - X: 0, Y: 0, W: {0}, H: {1}".format(self.default_screen.get_width(),
                                                                                           self.default_screen.get_height()))
             else:

仅供参考,可以使用命令修补该文件

sudo patch /usr/lib/python3/dist-packages/kazam/backend/prefs.py < ~/Desktop/kazam-1.4.5.diff

相关内容