我想使用 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