基于 MPV 的 Jellyfin 软件,支持离线同步
AI 翻译
MPV-Based Jellyfin Client with Offline Sync
媒体Python · LuaGitHub @jellyfin自行安装运营者未确认
试用过了吗? 点一下就好,无需登录。
正在加载完整 README。 以下为已保存的摘录。
Jellyfin MPV Shim is a cross-platform client for Jellyfin. It can run in the background as a cast target or act as a fully-featured desktop client with offline sync support.
It has support for all your advanced media files without transcoding, as well as tons of
features which set it apart from other multimedia clients:查看完整 README ↗Jellyfin MPV Shim is a fully featured Jellyfin client built on top of MPV with support for offline sync, media browsing, background casting, syncplay, music, live TV, books, and photos. It does not depend on or use a webview and doesn't mess with MPV's video output pipeline, allowing for HDR and tone mapping support.
Download for Windows · Flathub (Linux) · pip (Linux) · macOS
| Playback | Music |
| Detail page | TV shows |
| Live TV guide | Comic reader |
| Audiobook | Epub reader |
Install it (below), launch it and log in. Enter your server's address, e.g.
http://192.168.1.10:8096 or https://jellyfin.example.com, including any subpath; port
8096 is assumed if you leave it out, so a server on port 80 needs :80. Quick Connect works
too.
Then browse from the window, or cast to it from another Jellyfin app. When a system tray is available, closing the window keeps it running there as a cast target; you can change that in Settings.
Download the installer from Releases.
There are ARM64 builds, and LEGACY64 builds for CPUs without x86-64-v3 support
(roughly pre-2013).
The Flatpak is the
most integrated option. To install with pip instead you need libmpv (or mpv). MPV 0.41
or newer is recommended:
pip3 install --upgrade jellyfin-mpv-shim
Optional extras:
pip3 install 'jellyfin-mpv-shim[systray]', plus GObject and AppIndicator from your
distribution (on Debian: python3-gi gir1.2-ayatanaappindicator3-0.1). The virtualenv must
have --system-site-packages; with pipx,
pipx install --system-site-packages 'jellyfin-mpv-shim[systray]'.pip3 install 'jellyfin-mpv-shim[discord]', then enable it in
Settings.With MPV older than 0.41, minimizing to the tray closes MPV rather than hiding its window, and
copy/paste in text fields needs wl-clipboard (Wayland) or xclip/xsel (X11).
If your distribution's MPV is old, mpv-build builds
a current one with libmpv by default; run sudo ldconfig afterwards. Add
-Dsdl2-gamepad=enabled to its mpv_options for controller support.
MacOS is not officially supported or released by this project, but unsigned builds are provided on a best-effort basis via CI. If anything breaks, feel free to to submit a PR (AI is allowed subject to review) to fix it.
Download the latest development build here:
Then to actually use the application, since it is unsigned, use System Settings > Privacy & Security > Open Anyway to run the application or use the following command in your terminal to allow it:
xattr -dr com.apple.quarantine "/Applications/Jellyfin MPV Shim.app"
Or install from PyPI:
brew install python mpv pipx
pipx ensurepath
pipx install 'jellyfin-mpv-shim[systray]' # drop [systray] if you don't want the menu bar icon
jellyfin-mpv-shim
Use the mouse, or the arrow keys, Enter and Esc. The mouse's thumb buttons go back and forward a page; right-click Back (or Home at the top level) to jump anywhere in the history.
From a Jellyfin remote, use the arrows, OK, Back and Home. Menu opens the context menu of the selected item (Play, Queue, Mark Watched, Favorite, Download) or, during playback, the player's settings menu. Search jumps to the search box. Opening a film or episode lands on its Play button, so OK twice plays it.
During playback the controls have audio, subtitle and quality pickers, and the gear menu (or
c) holds speed, aspect, shader profiles, subtitle style, SyncPlay and screenshots.
Most of MPV's keyboard shortcuts work. The app adds:
| Key | Action | Key | Action | |
|---|---|---|---|---|
< > | Previous / next item | c | Player settings menu | |
q | Stop | k | Unload the shader profile | |
w | Mark watched and skip | u | Mark unwatched and stop |
And the MPV ones you are most likely to want: space pause, ←/→ seek 5 s, ↑/↓ seek
1 min, f fullscreen, m mute, s / S screenshot with / without subtitles, , . step a
frame, [ ] speed ±10%, backspace reset speed, d deinterlace, Ctrl+Shift+←/→
subtitle delay.
All of these can be changed. See Keyboard shortcuts
and input.conf.
With a tuner on your server, Live TV appears with your libraries, with the web client's six screens: Programs, Guide, Channels, Recordings, Schedule and Series (recording rules). Right-click any programme to record it or the series. Guide Settings are stored on the server, shared with the web client.
The guide shows one window of time and pages with the arrows, rather than scrolling sideways through 24 hours.
Books libraries browse by folder, as in the web client.
cbz, cbt) open in a built-in reader with fit-width and fit-page zoom.pdf, mobi, azw3, cbr, cb7) open in your desktop's own
application.The built-in readers save your position to the server as you turn pages, in the same form the web client uses, so you can carry on elsewhere. For formats read outside the app, use Progress… on the book's page to pull or push your page.
Jellyfin can only hand over a book as a whole file, so reading downloads it first, and your account needs the "Allow media downloads" permission to read books at all.
Several people can share one player, each with their own servers and logins. In Settings → Servers, Add User, switch to it and add its servers. Once there is more than one user, a user picker appears beside the server picker in the top bar.
headless)For a machine that should only be a cast target, such as a shared TV, set headless to
true in the config file. It then shows "Ready to cast" instead of the library: casting,
playback and the player controls work; browsing, search and settings are not reachable from
the machine.
This is not a security feature. It stops casual use, not anyone with access to the config file or the tray menu.
The bundled shader pack offers upscaling and
enhancement profiles (FSRCNNX, Anime4K). Choose one from the player's gear menu under Change Video
Playback Profile. If video breaks, pick a different Graphics API for Shaders in Settings →
Playback → Video Enhancement; opengl is the most compatible. If the app won't start after
choosing a profile, launch it once with --reset-shaders; if the picture is merely garbled,
press k.
SVP can be controlled from the menu too; it needs some setup. See SVP integration. Please note that I don't have an SVP license (it used to be free on Linux), so the support is untested.
Almost everything is in Settings, which has a search box. The complete reference, including options with no UI, is docs/configuration.md, along with where the config folder is (the tray icon can open it).
In mpv.conf in the config folder, add fs-screen=N
(with fs=yes to open fullscreen), where N counts from 0. On Windows, the monitor number in
Display Settings minus one. If X11 reports your monitors as one screen, use geometry= with the
position xrandr shows instead, e.g. geometry=1920x1080+0+0. Restart the app after editing.
Add to input.conf:
WHEEL_UP add volume 5
WHEEL_DOWN add volume -5
--config /path/to/folder runs another, independent copy. Launching again with the same
folder just brings the running one forward. jellyfin-mpv-shim stop (with the same
--config, if any) shuts an instance down cleanly.
Some text is drawn with Pillow, which needs FriBiDi for right-to-left scripts and kerning; without it nothing errors, but RTL titles come out reversed and captions are slightly mis-measured. The Windows installer and the Flatpak include it. Elsewhere, check:
python3 -c "from PIL import features; print(features.check('raqm'))"
If this prints False, install FriBiDi (libfribidi0 on Debian/Ubuntu, fribidi on Fedora
and Arch). If pip built Pillow from source rather than using a wheel, also install libraqm's
development package and run pip3 install --force-reinstall --no-binary=pillow pillow.
Building, translating and testing: docs/development.md.