jellyfin-media-player fork

Ian Walton 901d11502a Implement speed and time calls for SyncPlay. 3 anos atrás
.vscode 901d11502a Implement speed and time calls for SyncPlay. 3 anos atrás
CMakeModules 0f98ad5a1b More installer and packaging fixes. 3 anos atrás
bundle 0f98ad5a1b More installer and packaging fixes. 3 anos atrás
external a4be5c220a Apple Remote : Update HIDRemote, fixes https://github.com/plexinc/plex-media-player-private/issues/669 6 anos atrás
qt-patches a8d4578ce6 qt5 : update patch and README 6 anos atrás
resources da6f487835 Fix more branding. 3 anos atrás
scripts 678368bdfe Initial jf commit. 3 anos atrás
src 901d11502a Implement speed and time calls for SyncPlay. 3 anos atrás
.clang-format 3d4859f1b1 Initial public commit of Plex Media Player 9 anos atrás
.clang-tidy 40be8ac9a2 Adjust .clang-tidy for public struct member names 8 anos atrás
.gitignore add86cd9f4 Update .gitignore 6 anos atrás
CMakeLists.txt 678368bdfe Initial jf commit. 3 anos atrás
LICENSE 3510741dc1 License under GPLv2 9 anos atrás
README.md 0f98ad5a1b More installer and packaging fixes. 3 anos atrás
client-api.md 901d11502a Implement speed and time calls for SyncPlay. 3 anos atrás

README.md

Jellyfin Media Player

Based on (but not affiliated with) Plex Media Player.

Please see:

This build strips a lot of un-needed things from the player.

Building at a glance (Linux)

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++
mkdir jmp; cd jmp
wget http://download.qt.io/official_releases/qt/5.9/5.9.7/qt-opensource-linux-x64-5.9.7.run
chmod +x qt-opensource-linux-x64-5.9.7.run
sudo ./qt-opensource-linux-x64-5.9.7.run
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 git://github.com/iwalton3/jellyfin-media-player
cd jellyfin-media-player
mkdir build
cd build
wget https://github.com/iwalton3/jellyfin-web-jmp/releases/download/jwc-1.7.0/dist.zip
unzip dist.zip
cmake -DCMAKE_BUILD_TYPE=Debug  -DQTROOT=/opt/Qt5.9.7/5.9.7/gcc_64/ -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 file is huge. You also need to make a QT account...
    • Check "MSVC 2017 64-bit" and "Qt WebEngine".
  • VS2017 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
mkdir build && cd build
curl -L https://github.com/iwalton3/jellyfin-web-jmp/releases/download/jwc-1.7.0/dist.zip > dist.zip
unzip dist.zip

Open the "x86_x64 Cross Tools Command Prompt for VS 2017". 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/Qt5.9.9/5.9.9/msvc2017_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 (Old Instructions)

You need:

  • Qt 5.9.5
  • cmake 3.1 or newer
  • ninja is recommended for building
  • FFmpeg 3.x and mpv from github

Building on Mac OS X

I probably broke this...

Configure

If you're happy just building from the command line then run CMake for the ninja build tool:

  • Install ninja with homebrew:
    • brew install ninja
  • Install mpv and other dependencies with homebrew:
    • brew install mpv --with-shared --HEAD
  • mkdir build ; cd build
  • cmake -GNinja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=output ..

Build (ninja):

  • ninja

Make a distributable package:

  • ninja install (be patient, it's slow)

Or if you prefer working in Xcode, run CMake for the xcode build):

  • mkdir build ; cd build
  • cmake -GXcode ..

Building on Linux

Jellyfin Media Player officially requires Qt 5.9.5. Our users have indicated that Qt 5.10 and Qt 5.11 also builds correctly. However, Qt 5.11.0 and 5.11.1 versions are incompatible and should be avoided. Qt 5.12 may work for you. Please consider building PMP within a dedicated VM or Docker container if your system has a Qt version installed newer than 5.9.5. Downgrading a system Qt will cause issues in other applications depending on a newer Qt version.

These instructions are for Ubuntu 16.04 LTS and up. They were tested on a fresh install without extra options and with auto-updates applied.

First, some preparations:

  • 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
  • mkdir jmp
  • cd jmp

Systems not based on Debian/Ubuntu will have similar packages, but you'll need to figure out their names yourself.

Downloading and installing Qt

If your distro provides a Qt 5.9.5 package, try to use it. Otherwise, download a supported Qt version from qt.io.

Building mpv and ffmpeg

While most distros have FFmpeg and mpv packages, they're often outdated. It's recommended to build a current version, or to get them from 3rd party sources (some are listed on https://mpv.io/installation/).

Here are instructions how to build them locally. First you need to install some build prerequisites:

  • git clone https://github.com/mpv-player/mpv-build.git
  • cd mpv-build
  • echo --enable-libmpv-shared > mpv_options
  • you can also add echo --disable-cplayer >> mpv_options to prevent mpv CLI from being built
  • ./rebuild -j4 (this steps checks out all sources and compiles them and takes a while)
  • sudo ./install
  • sudo ldconfig

With this, libmpv should have been installed to /usr/local/. It does not conflict with the system. In particular, it does not install or use FFmpeg libraries. (The FFmpeg libraries are statically linked in libmpv when using mpv-build.)

You can also attempt to skip the installation step, and change the paths in the PMP build step to the build directory, but this is more complicated.

Building jellyfin-media-player

Assuming that everything else has installed correctly, building Jellyfin Media Player should now be fairly straightforward:

  • cd ~/jmp/
  • git clone git://github.com/iwalton3/jellyfin-media-player
  • cd jellyfin-media-player
  • mkdir build
  • cd build
  • cmake -DCMAKE_BUILD_TYPE=Debug -DQTROOT=/opt/Qt5.9.5/5.9/gcc_64/ -DCMAKE_INSTALL_PREFIX=/usr/local/ ..
  • make -j4
  • wget https://github.com/iwalton3/jellyfin-web-jmp/releases/download/jwc-1.7.0/dist.zip
  • unzip dist.zip
  • sudo make install

You should now be able to start PMP as jellyfinmediaplayer from the terminal.

If you use your distro's Qt, use -DQTROOT=/usr or similar.

Normally, the Ninja generator (via -GNinja) is preferred, but cmake + ninja support appears to be broken on Ubuntu 16.04.

If you want, you can wipe the ~/jmp/ directory, as the PMP installation does not depend on it. Only Qt and libmpv are needed.

Sometimes, PMP's cmake run mysteriously fails. It's possible that https://bugreports.qt.io/browse/QTBUG-54666 is causing this. Try the following:

  • locate Qt5CoreConfigExtras.cmake of your Qt build/installation
  • comment set_property(TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_FEATURES cxx_decltype) with #

Sometimes, PMP will pick up SDL 1.x libraries. This is not supported and will lead to build failures. You need SDL 2. You can disable use of SLD with -DENABLE_SDL2=off (it's used for some remotes).

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.