如何从命令行启动 Gnome 屏幕录像机

如何从命令行启动 Gnome 屏幕录像机

我想使用 Gnome 的内置屏幕录像机。我知道我可以使用键盘快捷键 Ctrl+Shift+Alt+R 启动它。我正在寻找使用某些命令启动 gnome 屏幕录像机的选项,以便我可以在脚本中自动执行它。请帮忙。

答案1

屏幕录像机可通过总线名称处的 D-Bus 访问org.gnome.Shell.Screencast,并提供控制对象/org/gnome/Shell/Screencast。通过查看d-英尺,这些是可用的方法:

  • Screencast(Str file_template, Dict{Str,Var} options) → (Bool success, Str filename_used)
  • StopScreencast() → (Bool success)

参数文件模板是完整路径,或者只是视频文件的基本文件名(.webm无论哪种方式都需要有扩展名)。选项dict 可以保持为空。

不幸的是,屏幕录制会话与特定的 D-Bus 客户端绑定在一起 - 因此您无法通过常用的 shellscript 工具(busctl、gdbus、dbus-send)使用它们,因为一旦工具启动并退出,录制就会停止。因此您必须使用具有本机 D-Bus 客户端绑定的其他语言编写包装器。

答案2

import time
import dbus
session_bus = dbus.SessionBus()
session_bus.call_blocking(
    'org.gnome.Shell.Screencast',
    '/org/gnome/Shell/Screencast',
    'org.gnome.Shell.Screencast',
    'Screencast',
    signature='sa{sv}',
    args=["Screencast_%d_%t.webm", {'draw-cursor':True, 'framerate': 35}],
)

time.sleep(5)

result2 = session_bus.call_blocking(
    'org.gnome.Shell.Screencast',
    '/org/gnome/Shell/Screencast',
    'org.gnome.Shell.Screencast',
    'StopScreencast',
    signature='',
    args=[],
)

$ gdbus call --session --dest org.gnome.Shell.Screencast --object-path /org/gnome/Shell/Screencast --method org.gnome.Shell.Screencast.Screencast "Screencast_%d_%t.webm" "{'draw-cursor':<'true'>,'framerate': <35>}"
$ # "The screencast is stopped here, the command below is meaningless.'
$ gdbus call --session --dest org.gnome.Shell.Screencast --object-path /org/gnome/Shell/Screencast --method org.gnome.Shell.Screencast.StopScreencast

相关内容