MPRIS (媒體播放器遠程接口規範) 是一個標準的 D-Bus 接口,旨在提供用於控制媒體播放器的通用編程API。
它為兼容媒體播放器的發現、查詢和基本播放控制提供了一種機制,還提供了一個曲目列表界面,用於為活動媒體項目添加上下文。
支持的客戶端
- Audacious
- celluloid包
- Chromium
- clementineAUR
- cmus
- deadbeefAUR (using deadbeef-mpris2-pluginAUR)
- dragon包
- Firefox
- gmusicbrowserAUR
- guayadequeAUR
- KDE#KDE Connect
- mpv#mpv-mpris
- Music Player Daemon/Tips and tricks#MPRIS support
- ncspot包
- Quod Libet
- rage包
- resonanceAUR
- smf-dsp-gitAUR
- Spotify#MPRIS
- spotube-binAUR
- Telegram
- tidal-hifi-binAUR
- VLC
- brave-nightly-binAUR
控制工具
Playerctl
playerctl包 工具提供了一個命令行工具,用於將命令發送到 MPRIS 客戶端。最常見的命令是 play-pause
, next
與 previous
:
$ playerctl play-pause $ playerctl next $ playerctl previous
playerctl 會向它找到的第一個播放器發送命令。要手動選擇播放器,請使用 --player
選項,例如 --player=vlc
。為了更好地實現自動化,playerctl 附帶了一個守護進程,它能跟蹤媒體播放器的活動,並將命令發送給最近有活動的播放器。你可以使用以下命令將它轉入後台:
$ playerctld daemon
為了在登錄時啟動 playerctld,您可以創建以下 systemd/用戶服務
~/.config/systemd/user/playerctld.service
[Unit] Description=Keep track of media player activity [Service] Type=oneshot ExecStart=/usr/bin/playerctld daemon [Install] WantedBy=default.target
然後,您應該在啟用帶有--user
標誌的服務之前執行daemon-reload 。
此外,playerctld 還能夠更改活動播放器,這在您同時擁有多個媒體流時非常有用:
要切換到下一個播放器,請使用:
$ playerctld shift
要切換到上一個播放器,請使用:
$ playerctld unshift
mpris-player-control
mpris_player_control 是一個 shell 腳本,它集成了 dbus-send
和 pactl
以控制 MPRIS 客戶端。它支持播放、暫停、暫停播放和停止操作,以及 Spotify 的音量控制(靜音/靜音/上/下)。
運行 mpris_player_control -h
以顯示基本腳本用法。
D-Bus
上述方法的替代方法是手動使用 D-Bus,默認情況下它應該可用,因為它是 systemd 的依賴項。
例如,可以使用以下命令通過支持的 Methods 來控制 Spotify:
$ dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Method
類似地,使用 busctl(1):
$ busctl --user call org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player Method
藍牙
來自藍牙耳機和類似設備的媒體控制可能會轉發到 MPRIS。
安裝 bluez-utils包 軟體包並運行 mpris-proxy
。為了在後台和/或系統啟動時啟動 mpris-proxy,您可以創建一個 systemd/用戶 服務:
~/.config/systemd/user/mpris-proxy.service
[Unit] Description=Forward bluetooth media controls to MPRIS [Service] Type=simple ExecStart=/usr/bin/mpris-proxy [Install] WantedBy=default.target
然後,在啟動/啟用帶有--user
標誌的服務之前執行daemon-reload。