MPV Cast Client for Jellyfin
Go to file
2019-08-20 03:12:47 -04:00
plex_mpv_shim Persist autoplay settings. 2019-08-20 03:12:47 -04:00
.gitignore Switch to human-readable config files, and store them in an ideal location. 2019-08-17 18:10:58 -04:00
LICENSE.md Add license. 2019-08-18 18:54:12 -04:00
README.md Add ability to execute commands from config: media_ended_cmd, pre_media_cmd, stop_cmd 2019-08-20 03:12:14 -04:00
run.py Add option to run without installing. 2019-08-18 02:09:42 -04:00
setup.py Fix more code quality issues. 2019-08-19 18:23:24 -04:00

Plex MPV Shim

This project allows casting of content from a Plex server to MPV, with minimal dependencies to prevent the project from becoming unmaintained. This project is 1/17th the size of Plex Media Player and is all python.

The project supports the following:

  • Direct play of HEVC mkv files with subtitles.
  • Switching of subtitles and audio tracks.
  • Casting videos from the iOS mobile app and web app.
  • Seeking within a video using the seek bar and buttons.
  • Play, pause, and stop.
  • Using the built-in MPV controls. (OSD and keyboard shortcuts.)
  • Configuration of mpv via mpv.conf.
  • Connecting to shared servers.
  • Installing the package system-wide.
  • Skipping between videos.
  • Autoplaying the next video. (Can be disabled.)
  • Extra keyboard shortcuts: < > skip, u unwatched/stop, w watched/next
  • Playing multiple videos in a queue.
  • The app doesn't require or save any Plex passwords or tokens.
  • Executing commands before playing, after media end, and when stopped.

You'll need libmpv1. To install plex-mpv-shim, run:

git clone https://github.com/iwalton3/plex-mpv-shim
cd plex-mpv-shim
sudo pip3 install --upgrade .

The current Debian package for libmpv1 doesn't support the on-screen controller. If you'd like this, or need codecs that aren't packaged with Debian, you need to build mpv from source. Execute the following:

sudo apt install autoconf automake libtool libharfbuzz-dev libfreetype6-dev libfontconfig1-dev libx11-dev libxrandr-dev libvdpau-dev libva-dev mesa-common-dev libegl1-mesa-dev yasm libasound2-dev libpulse-dev libuchardet-dev zlib1g-dev libfribidi-dev git libgnutls28-dev libgl1-mesa-dev libsdl2-dev cmake wget python g++ libluajit-5.1-dev
git clone https://github.com/mpv-player/mpv-build.git
cd mpv-build
echo --enable-libmpv-shared > mpv_options
./rebuild -j4
sudo ./install
sudo ldconfig

After installing the project, you can run it with plex-mpv-shim. If you'd like to run it without installing it, run ./run.py.

Keyboard Shortcuts:

  • Standard MPV shortcuts.
  • < > to skip episodes
  • q to close player
  • w to mark watched and skip
  • u to mark unwatched and quit

You can execute shell commands on media state using the config file:

  • media_ended_cmd - When all media has played.
  • pre_media_cmd - Before the player displays. (Will wait for finish.)
  • stop_cmd - After stopping the player.

This project is based on https://github.com/wnielson/omplex, which is available under the terms of the MIT License. The project was ported to python3, modified to use mpv as the player, and updated to allow all features of the remote control api for video playback.