Skip to main content

Cast media from Plex Mobile and Web apps to MPV. (Unofficial)

Project description

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.
  • Configurable transcoding support based on remote server and bitrate.

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

sudo pip3 install --upgrade plex-mpv-shim

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.
  • idle_cmd - After no activity for idle_cmd_delay seconds.

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.

UPDATE: It looks like we have a reversal on the Plex Media Player situation. That being said, this project has proven to be interesting as a hackable Plex client. I plan to maintain this client, although I may not work on adding new features unless someone requests them.

Building on Windows

There is a prebuilt version for Windows in the releases section.

  1. Install Python3 with PATH enabled. Install 7zip.
  2. After installing python3, open cmd as admin and run pip install pyinstaller python-mpv requests.
  3. Download libmpv.
  4. Extract the mpv-1.dll from the file and move it to the plex-mpv-shim folder.
  5. Open a regular cmd prompt. Navigate to the plex-mpv-shim folder.
  6. Run pyinstaller -cF --add-binary "mpv-1.dll;." run.py.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

plex-mpv-shim-1.0.1.tar.gz (21.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

plex_mpv_shim-1.0.1-py3-none-any.whl (24.8 kB view details)

Uploaded Python 3

File details

Details for the file plex-mpv-shim-1.0.1.tar.gz.

File metadata

  • Download URL: plex-mpv-shim-1.0.1.tar.gz
  • Upload date:
  • Size: 21.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for plex-mpv-shim-1.0.1.tar.gz
Algorithm Hash digest
SHA256 74b1eb116716e91f4a84d55f6db65dc90f0fe0e2968af1f34f205a84941dc169
MD5 077cceed574857b1d5eb7a588296fcde
BLAKE2b-256 65bbb6ca18561e277b5045fdb333c35eb187155ccccb9672b2351bc0f67a7741

See more details on using hashes here.

File details

Details for the file plex_mpv_shim-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: plex_mpv_shim-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 24.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for plex_mpv_shim-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7a16851df7593856f03eb9d2c99d6f5fc63ea7d7cb162d612a3611ae0d564a6e
MD5 8f9bcf0d3961a49fd1a65a639d5b413d
BLAKE2b-256 ddcf9bc07bd8f5da5c9d210da712887db6656beb92a1552fc12861c73fce50de

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page