jellyfin-media-player fork

Kristian Vos d9e35c08db Fix window switching monitor when exiting fullscreen 11 months ago
.github 8cf2b9cadd Creates dependabot configuration for GitHub actions 1 year ago
.vscode 721e84f5b4 Switch from QsLog to regular QT logging. 1 year ago
CMakeModules 086fd6a521 Up version to 1.9.1. 11 months ago
bundle acffcd99cf Enable windows dark mode support. (#247) 1 year ago
debian 086fd6a521 Up version to 1.9.1. 11 months ago
deployment 2450ae1956 Allow running JMP with no bundled webclient! 1 year ago
external 721e84f5b4 Switch from QsLog to regular QT logging. 1 year ago
native 19773f1907 fix: skipintro plugin client freeze 9 months ago
resources 09ba544996 Add Default Playback Speed settings 10 months ago
scripts 965ea533e1 Comply with PEP8. 2 years ago
src d9e35c08db Fix window switching monitor when exiting fullscreen 7 months ago
.clang-format 3d4859f1b1 Initial public commit of Plex Media Player 8 years ago
.clang-tidy 40be8ac9a2 Adjust .clang-tidy for public struct member names 8 years ago
.gitignore 30db19d53e Initial test of linux builds. 3 years ago
CMakeLists.txt 2450ae1956 Allow running JMP with no bundled webclient! 1 year ago
LICENSE 3510741dc1 License under GPLv2 8 years ago
README.md 2fdd3efc65 Add build instructions for Fedora systems. 11 months ago
client-api.md dcc36e370f Cleanup settings, use tv setting, enable hwdec by default. 2 years ago
debian-webclient-rules 2450ae1956 Allow running JMP with no bundled webclient! 1 year ago
download_webclient.sh 9ee3cb4264 Fix macos sed being broken. 1 year ago
for-web-developers.md 43e068c5f7 Add extra transcoder settings and make global reactive settings object. 1 year ago

README.md

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:

Building at a glance (Linux)

To download the latest stable release, get the lattest version tag from the latest releases page and append the following to your pull command during the build phase for JMP "--branch $VERSIONTAG --single-branch"

Example:

git clone https://github.com/jellyfin/jellyfin-media-player.git --branch v1.9.1 --single-branch

Ubuntu based systems

Install dependancies:

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

Build commands for Ubuntu:

mkdir ~/jmp; cd ~/jmp
git clone https://github.com/mpv-player/mpv-build.git
cd mpv-build
echo -Dlibmpv=true > mpv_options
echo -Dpipewire=disabled >> mpv_options # hopefully temporary
./rebuild -j4
sudo ./install
sudo ln -s /usr/local/lib/x86_64-linux-gnu/libmpv.so /usr/local/lib/x86_64-linux-gnu/libmpv.so.1
sudo ln -sf /usr/local/lib/x86_64-linux-gnu/libmpv.so /usr/local/lib/libmpv.so.2
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/

Fedora based systems

Install dependancies:

sudo dnf install autoconf automake libtool freetype-devel libXrandr-devel libvdpau-devel libva-devel  mesa-libGL-devel libdrm-devel libX11-devel  mesa-libEGL-devel yasm  alsa-lib pulseaudio-libs-devel zlib-devel fribidi-devel git gnutls-devel mesa-libGLU-devel  SDL2-devel cmake wget python g++  qt-devel libcec-devel qt5-qtbase-devel curl unzip qt5-qtwebchannel-devel qt5-qtwebengine-devel qt5-qtx11extras-devel mpv.x86_64 qwt-qt5-devel.x86_64 qt5-qtbase.x86_64 meson.noarch ninja-build.x86_64 qt5-qtbase-private-devel mpv-libs.x86_64

Build commands for Fedora:

Note, the only real differences here is that libraries are in diffrent directories on Fedora systems.

mkdir ~/jmp; cd ~/jmp
git clone https://github.com/mpv-player/mpv-build.git
cd mpv-build/
echo -Dlibmpv=true > mpv_options
echo -Dpipewire=disabled >> mpv_options # hopefully temporary
./rebuild -j4
sudo ./install
sudo mkdir /usr/local/lib/x86_64-linux-gnu
sudo ln -s /usr/local/lib64/libmpv.so /usr/local/lib/x86_64-linux-gnu/libmpv.so.1
sudo ln -s /usr/local/lib64/libmpv.so /usr/local/lib/x86_64-linux-gnu/libmpv.so
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

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/jellyfin/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 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.

Unofficial Plugin Support

You can enable experimental support for Jellyscrub and Skip Intro in client settings. These are included for convenience only and is not an endorsement or long-term commitment to ensure functionality. See src/native for details on what the plugins modify code-wise.

Known Issues

If you build MPV from source, you currently need to disable pipewire or else the client will segfault.