如何设置MPRIS SetPosition方法参数及dbus-send调用语法
关于MPRIS SetPosition方法的参数与dbus-send调用说明
1. TrackId参数的取值
SetPosition的第一个参数TrackId是当前播放媒体的唯一对象路径标识,你需要从当前播放项的元数据中获取:
- 通过调用MPRIS播放器接口的
GetMetadata方法(或直接读取Metadata属性),提取其中的mpris:trackid字段值,这个值就是要传入的TrackId。 - 对于VLC来说,这个值通常是类似
/org/mpris/MediaPlayer2/Track/1的对象路径格式。
2. 设置当前播放进度的步骤
- 先获取当前正在播放媒体的
TrackId(参考下方dbus-send命令)。 - 调用
SetPosition方法,第二个参数传入微秒单位的目标进度值(例如:跳到1分钟位置,传入60000000,即6010001000)。
3. dbus-send调用语法示例
获取当前TrackId
dbus-send --print-reply --session \ --dest=org.mpris.MediaPlayer2.vlc \ /org/mpris/MediaPlayer2 \ org.freedesktop.DBus.Properties.Get \ string:'org.mpris.MediaPlayer2.Player' \ string:'Metadata'
执行后在返回结果中找到类似如下的行,提取其中的对象路径:
variant objectpath "/org/mpris/MediaPlayer2/Track/1"
调用SetPosition设置进度
将上面获取到的TrackId替换到以下命令中,同时修改目标进度的微秒值:
dbus-send --session \ --dest=org.mpris.MediaPlayer2.vlc \ /org/mpris/MediaPlayer2 \ org.mpris.MediaPlayer2.Player.SetPosition \ objpath:'/org/mpris/MediaPlayer2/Track/1' \ int64:60000000
注意事项
- 如果VLC有多个实例运行,服务名可能会变成
org.mpris.MediaPlayer2.vlc.instanceXXX,可以用以下命令查看当前所有MPRIS服务:dbus-send --session --type=method_call \ --dest=org.freedesktop.DBus \ /org/freedesktop/DBus \ org.freedesktop.DBus.ListNames
内容的提问来源于stack exchange,提问作者şahin
相关产品推荐
相关产品推荐

