/jellyfin-media-player

Jellyfin Desktop Client based on Plex Media Player

Primary LanguageC++GNU General Public License v2.0GPL-2.0

Jellyfin Media Player

Desktop client using jellyfin-web with embedded MPV player. Supports Windows, Mac OS, and Linux. Media plays within the same window using the jellyfin-web interface unlike Jellyfin Desktop. Supports audio passthrough. Based on Plex Media Player.

Screenshot of Jellyfin Media Player

Downloads:

Related Documents:

  • Corresponding web client: Repo Release
  • API Docs in client-api.md
  • Tip: For help building, look at the GitHub Actions file!

Building at a glance (Linux)

sudo apt install build-essential 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++ qtwebengine5-dev qtquickcontrols2-5-dev libqt5x11extras5-dev libcec-dev qml-module-qtquick-controls qml-module-qtwebengine qml-module-qtwebchannel qtbase5-private-dev curl unzip
mkdir ~/jmp; cd ~/jmp
git clone https://github.com/mpv-player/mpv-build.git
cd mpv-build
echo --enable-libmpv-shared > mpv_options
echo --disable-cplayer >> mpv_options
./rebuild -j4
sudo ./install
sudo ldconfig
cd ~/jmp/
git clone https://github.com/jellyfin/jellyfin-media-player.git
cd jellyfin-media-player
./download_webclient.sh
cd build
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr/local/ ..
make -j4
sudo make install
rm -rf ~/jmp/

Building for Windows

Please install:

  • cmake - cmake-3.20.0-windows-x86_64.msi
    • Add cmake to the path.
  • ninja
    • Place this in the build directory.
  • QT
    • This package is huge. You also need to make a QT account...
    • Check "MSVC 2019 64-bit" and "Qt WebEngine" under QT 5.15.2.
  • VS2019 Build Tools
    • Again this will use a lot of disk space. The installer is small though.
  • libmpv1
    • Place the contents in the build directory, in a subfolder called mpv.
    • Move the contents of the include folder to an mpv folder inside the include folder.
    • Move the mpv-1.dll to mpv.dll.
  • WIX

You need to run these commands in git bash.

git clone https://github.com/iwalton3/jellyfin-media-player
cd jellyfin-media-player
./download_webclient.sh
cd build

Open the "x86_x64 Cross Tools Command Prompt for VS 2019". cd to the build directory. Run:

set PATH=%PATH%;C:\Program Files (x86)\WiX Toolset v3.11\bin
cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=output -DCMAKE_MAKE_PROGRAM=ninja.exe -DQTROOT=C:/Qt/5.15.2/msvc2019_64 -DMPV_INCLUDE_DIR=mpv/include -DMPV_LIBRARY=mpv/mpv.dll -DCMAKE_INSTALL_PREFIX=output ..
lib /def:mpv\mpv.def /out:mpv\mpv.dll.lib /MACHINE:X64
ninja
ninja windows_package

Building for MacOS

Install QT 5.15.2, remember to check Qt WebEngine.

Then run the following commands (replace <QT_DIR> with your QT installation location):

brew install mpv ninja
./download_webclient.sh
cd build
cmake -GNinja -DQTROOT=<QT_DIR> -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=output ..
ninja install

To create redistributable bundle, some library paths need to be fixed. At the project root directory, run:

python3 ./scripts/fix-install-names.py ./build/output/Jellyfin\ Media\ Player.app

Log File Location

  • Windows: %LOCALAPPDATA%\JellyfinMediaPlayer\logs
  • Linux: ~/.local/share/jellyfinmediaplayer/logs/
  • Linux (Flatpak): ~/.var/app/com.github.iwalton3.jellyfin-media-player/data/jellyfinmediaplayer/logs/
  • macOS: ~/Library/Logs/Jellyfin Media Player/

Config File Location

The main configuration file is called jellyfinmediaplayer.conf. You can also add a mpv.conf to configure MPV directly.

  • Windows: %LOCALAPPDATA%\JellyfinMediaPlayer\
  • Linux: ~/.local/share/jellyfinmediaplayer/
  • Linux (Flatpak): ~/.var/app/com.github.iwalton3.jellyfin-media-player/data/jellyfinmediaplayer/
  • macOS: ~/Library/Application Support/Jellyfin Media Player/

Web Debugger

To get browser devtools, use remote debugging.

  • Run the application with the command argument --remote-debugging-port=9222.
  • Open Chromium or Google Chrome.
  • Navigate to chrome://inspect/#devices.
  • You can now access the developer tools.

If you have problems:

  • Make sure "Discover Network Targets" is checked.
  • Make sure localhost:9222 is in the list under "Configure...".
  • Make sure --remote-debugging-port=9222 is specified correctly.

License

Jellyfin Media Player is licensed under GPL v2. See the LICENSE file. Licenses of dependencies are summarized under resources/misc/licenses.txt. This file can also be printed at runtime when using the --licenses option.