我试图用来dbus
从终端控制VLC媒体播放器的多个实例。
dbus
对于单个VLC实例使用是没有问题的:在VLC启动后,立即执行诸如播放/暂停,
dbus-send --dest=org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause
按预期工作。但是,如果启动第二个VLC实例,dbus-send
则不会注册任何命令。第一个实例仍然可以很好地注册所有命令,但是第二个实例不响应。
我尝试使用dbus-launch vlc
。使用仅dbus-launch
创建会话总线实例,并打印其唯一的标识地址。您甚至可以使用查看正在运行的实例ps -aux | grep dbus
。使用该地址,您可以使用发送命令dbus-send --address=X
。
但是,使用时dbus-launch vlc
,它将不会将有关新总线的信息打印到标准输出(包括其标识地址)。因此,即使我可以使用发送命令给它dbus-send
,我也不知道该使用什么地址。没有办法指定新闻会话总线实例应使用哪个地址。
如果我能以某种方式获得由创建的新实例的地址,则dbus-launch
该问题(理论上)将得到解决。
与相似dbus-launch
,您可以dbus-daemon
用来创建会话总线实例,但也可以使用--address=X
标志来指定其地址。使用dbus-send --address=X
[...]会给我一个“无法打开连接”错误,即使我要解决这个问题,我也不知道如何将VLC实例连接到该特定会话总线实例。daccess-ods.un.org daccess-ods.un.org 我不知道该如何进行。
在寻找我自己问题的答案时找到了您的问题。dbus IRC频道的家伙帮了我忙。
dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListQueuedOwners string:org.mpris.MediaPlayer2.vlc
这将为您提供可以循环访问的目的地。它列出了它们,如:1.25:1.26,因此您的dbus发送看起来像这样(注意冒号是必需的!)...
dbus-send --print-reply --dest=:1.25 /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause
dbus-send --print-reply --dest=:1.26 /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Pause
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句