두 VLC 인스턴스의 대상을 얻는 방법

두 VLC 인스턴스의 대상을 얻는 방법

VLC 인스턴스를 하나만 실행하는 경우 org.mpris.MediaPlayer2.vlc를 대상으로 사용하여 dbus-send를 통해 VLC와 통신할 수 있습니다.

$ dbus-send --dest=org.mpris.MediaPlayer2.vlc  ...

두 개의 VLC 인스턴스가 실행 중인 경우 대상 xxxx와 yyyy가 다릅니다. 이들 중 한 명과 대화하려면 xxxx 또는 yyyy를 대상으로 사용해야 합니다.

$ dbus-send --dest=:xxxx   ...

다음을 통해 첫 번째 인스턴스의 대상을 찾을 수 있습니다.

$ dbus-send --print-reply --dest=org.freedesktop.DBus  /org/freedesktop/DBusorg.freedesktop.DBus.ListQueuedOwners  string:org.mpris.MediaPlayer2.vlc

method return time=1702494718.199915 sender=org.freedesktop.DBus -> destination=:1.1256 serial=3 reply_serial=2
   array [
      string ":1.1251"
   ]

그러면 목적지는 1.1251인 것으로 보입니다.

그런데 두 번째 인스턴스의 대상을 어떻게 얻을 수 있습니까?

답변1

나는 항상 전체 dbus 정보를 얻기 위해 Busctl을 사용합니다.
시스템 버스(busctl --system) 및 세션 버스(busctl --user) 또는 전체 목록(busctl -l)
입력이 있습니다.

busctl --user | grep "vlc"

그러면 다음과 같은 것을 얻게 될 것입니다.

:1.641                                              91266 vlc             xxxxx :1.641        session-c2.scope  c2      -
:1.642                                              91266 vlc             xxxxx :1.642        session-c2.scope  c2      -
:1.643                                              91266 vlc             xxxxx :1.643        session-c2.scope  c2      -
:1.644                                              91266 vlc             xxxxx :1.644        session-c2.scope  c2      -
:1.654                                              91361 vlc             xxxxx :1.654        session-c2.scope  c2      -
:1.655                                              91361 vlc             xxxxx :1.655        session-c2.scope  c2      -
:1.656                                              91361 vlc             xxxxx :1.656        session-c2.scope  c2      -
:1.657                                              91361 vlc             xxxxx :1.657        session-c2.scope  c2      -
org.kde.StatusNotifierItem-91266-2                  91266 vlc             xxxxx :1.644        session-c2.scope  c2      -
org.kde.StatusNotifierItem-91361-2                  91361 vlc             xxxxx :1.657        session-c2.scope  c2      -
org.mpris.MediaPlayer2.vlc                          91266 vlc             xxxxx :1.641        session-c2.scope  c2      -
org.mpris.MediaPlayer2.vlc.instance91361            91361 vlc             xxxxx :1.654        session-c2.scope  c2   

org 파일은 활성 서비스입니다.
org.mpris.MediaPlayer2.vlc.instance91361이라는 두 번째 서비스가 있음을 알 수 있습니다.
첫 번째 VLC 인스턴스는 PID 91266에 있고 두 번째 VLC 인스턴스는 PID 91361에 있습니다.

내 예에서는 다음과 같이 호출되었습니다.

dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListQueuedOwners string:org.mpris.MediaPlayer2.vlc.instance91361

두 번째 사례에 대한 정보를 제공합니다.

- - - - - - 덧붙여서

dbus 서비스에 대한 객체 트리를 확인할 수 있습니다.
busctl --user tree org.mpris.MediaPlayer2.vlc.instance91361

당신은 다음을 얻습니다:

└─/org
  └─/org/mpris
    └─/org/mpris/MediaPlayer2

그런 다음 개체를 검사할 수도 있습니다.
busctl --user introspect org.mpris.MediaPlayer2.vlc.instance91361 /org/mpris/MediaPlayer2

산출:

NAME                                TYPE      SIGNATURE RESULT/VALUE                             FLAGS
org.freedesktop.DBus.Introspectable interface -         -                                        -
.Introspect                         method    -         s                                        -
org.freedesktop.DBus.Properties     interface -         -                                        -
.Get                                method    ss        v                                        -
.GetAll                             method    s         a{sv}                                    -
.Set                                method    ssv       -                                        -
.PropertiesChanged                  signal    sa{sv}as  -                                        -
org.mpris.MediaPlayer2              interface -         -                                        -
.Quit                               method    -         -                                        -
.Raise                              method    -         -                                        -
.CanQuit                            property  b         true                                     emits-change
.CanRaise                           property  b         false                                    emits-change
.CanSetFullscreen                   property  b         false                                    emits-change
.DesktopEntry                       property  s         "vlc"                                    emits-change
.Fullscreen                         property  b         false                                    emits-change writable
.HasTrackList                       property  b         false                                    emits-change
.Identity                           property  s         "VLC media player"                       emits-change
.SupportedMimeTypes                 property  as        29 "audio/mpeg" "audio/x-mpeg" "video/m… emits-change
.SupportedUriSchemes                property  as        21 "file" "http" "https" "rtsp" "realrt… emits-change
org.mpris.MediaPlayer2.Player       interface -         -                                        -
.Next                               method    -         -                                        -
.OpenUri                            method    s         -                                        -
.Pause                              method    -         -                                        -
.Play                               method    -         -                                        -
.PlayPause                          method    -         -                                        -
.Previous                           method    -         -                                        -
.Seek                               method    x         -                                        -
.SetPosition                        method    ox        -                                        -
.Stop                               method    -         -                                        -
.CanControl                         property  b         true                                     emits-change
.CanPause                           property  b         false                                    emits-change
.CanPlay                            property  b         false                                    emits-change
.CanSeek                            property  b         false                                    emits-change
.LoopStatus                         property  s         "None"                                   emits-change writable
.MaximumRate                        property  d         32                                       emits-change writable
.Metadata                           property  a{sv}     0                                        emits-change
.MinimumRate                        property  d         0.032                                    emits-change writable
.PlaybackStatus                     property  s         "Stopped"                                emits-change
.Position                           property  i         0                                        emits-change
.Rate                               property  d         1                                        emits-change writable
.Shuffle                            property  d         false                                    emits-change writable
.Volume                             property  d         0                                        emits-change writable
org.mpris.MediaPlayer2.TrackList    interface -         -                                        -
.AddTrack                           method    sob       -                                        -
.GetTracksMetadata                  method    ao        aa{sv}                                   -
.GoTo                               method    o         -                                        -
.RemoveTrack                        method    o         -                                        -
.CanEditTracks                      property  b         true                                     emits-change
.Tracks                             property  ao        0                                        emits-change
.TrackAdded                         signal    a{sv}o    -                                        -
.TrackListReplaced                  signal    aoo       -                                        -
.TrackMetadataChanged               signal    oa{sv}    -                                        -
.TrackRemoved                       signal    o         -                                        -

정의된 모든 인터페이스와 메소드가 표시됩니다.

예를 들어 인터페이스 org.mpris.MediaPlayer2.Player에서 "OpenUri" 메서드를 가져옵니다.

busctl --user call org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player OpenUri s "your url"
-- 먼저 비디오를 엽니다

busctl --user call org.mpris.MediaPlayer2.vlc.instance91361 /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player OpenUri s "your url"
-- 동영상을 두 번째로 엽니다.

호출 구문:
=============
SERVICE OBJECT INTERFACE METHOD [SIGNATURE [ARGUMENT...]]를 호출하여
자세한 내용을 확인하세요. - Busctl - 도움말을 참조하세요.

좋은 하루 보내세요!

관련 정보