Proposal for a common D-Bus interface for media players
Sham Chukoury
eleusis at xmms.org
Wed Dec 6 03:01:24 UTC 2006
Hello world.
Seb Ruiz wrote:
> Actually, whilst I was in san francisco, I spoke with the xmms2 folks
> about the same thing. we totally agreed on the necessity for it.
Indeed, this was discussed a bit during a meeting: [1]
(full transcript at [2])
>> I've been working recently of a D-Bus [2] control interface for VLC,
>> to permit other applications to interact with VLC.
>> This implements basic functions such as:
>> - playback control (Play/Pause/Next..)
>> - information on medias (Meta-data/Length)
>> - playlist editing (Add new elements to play)
>>
>> I've been looking at how other media players already implemented that,
>> and I thought all their interfaces were highly redundant, and could
>> benefit of implementing a single, common, shared interface.
>>
>> That would let developers use this interface in their programs, and
>> let their users decide of which media player they wanna use. All about
>> FREEDOM.
I've done a bit of work on this, though in the form of a Python library (Chalyx
- for XMMS2 [3] and MPD [4] clients), not an open spec or interface of any kind.
You can see the class defining the methods to be used at [5]
It's a bit of a compromise between the interfaces provided by XMMS2 [6] and MPD
[7] (though biased a bit towards XMMS2). You can see a table comparing the
interfaces at [8] (Some MPRIS/BMP/BMPx calls are included, but they've never
been implemented in Chalyx)
>> I've copied this specification on the videolan wiki [6], and modified
>> it to my needs. I tried to keep it as general as possible. However
>> this still needs more work, and comments.
>>
>> This is why i'm reaching you, developers of some media players, to
>> comment what i've done or work with me, until that specification
>> fulfills your needs, and can be used in a real world.
>>
>> This specification should stay as generic as possible, because media
>> players that want to make specific methods available with D-Bus can do
>> it through their specific interface.
>>
>> For example, basic methods would be available on the service
>> org.freedesktop.MediaPlayer and VLC would make streaming methods
>> available on the service org.videolan.vlc. So, a basic control applet
>> for the KDE panel originally written for amarok would be able to
>> control VLC, and a complex pygtk script would control streaming
>> features of VLC.
Re: 'The Service' on the DBus-spec page, am I to understand that only one player
supporting the spec may be running at any one time? That makes sense from the
point of view that the user might want a single 'default' player to control, but
what if the user wants 2 such players running at a time? For example, listening
to music using VLC while debugging XMMS2? ;)
Re: generic interface, does that mean there could be standard interface
extensions? For example, players with access to a media library could have an
extended interface 'org.freedesktop.MediaPlayer.Library'.
Cheers.
-S
[1]
http://wiki.xmms2.xmms.se/index.php/IRC_Meeting/2006-11-27/Minutes#Amarok_and_XMMS2_Collaboration
[2] http://dan.chokola.com/files/xmms2-meeting/2006-11-27/transcript.txt
[3] http://xmms2.xmms.se/epydoc/public/xmmsclient.XMMS-class.html
[4] http://mpd.wikia.com/wiki/MusicPlayerDaemonCommands
[5] http://git.xmms.se/?p=chalyx-eleusis.git;a=blob;f=src/Chalyx/services/service.py
[6] http://git.xmms.se/?p=chalyx-eleusis.git;a=blob;f=src/Chalyx/services/xmms2.py
[7] http://git.xmms.se/?p=chalyx-eleusis.git;a=blob;f=src/Chalyx/services/mpd.py
[8] http://xmms2.xmms.se/~eleusis/misc/client-api-table.html
More information about the Amarok
mailing list