Jellyfin

From LinuxReviews
Jump to navigationJump to search
Playvideo.png

Jellyfin is a free software multimedia server for managing and streaming audio and video collections. You can install it on a NAS server or a desktop computer and stream audio and video files to tablets, phones, smart televisions and other devices. Available media files on the server are indexed and browsable in its interface. On the fly video transcoding using hardware acceleration is supported. There are several Android apps available. The Jellyfin server is available for Linux, Windows and macOS.

History

Jellyfin came about as a fork of version 3.5.2 of the now proprietary Emby media server.

Features

Jellyfin Itzy Not shy.jpg
Jellyfin Web Interface playing "Not Shy" by ITZY.

Jellyfin will index the folders you configure to be part of your media collection and make them available to be enjoyed through both its built-in web interface and hardware and applications with support for the DLNA protocol. Auto-discovery is part of this protocol; many applications and devices will be able to find Jellyfin on the local network once it is up and running.

Jellyfin supports the Chromecast protocol and Chromecast compatible devices. You can play videos directly to a Chromecast-aware TV or top-set box.

Jellyfin can transcode video on the fly. You can play video foramts not supported by the device you are playing the video on and you can down-scale video if the original video is in 4K and the device you are playing on is incapable of playing video above 1080p.

The Jellyfin web server interface, available on port 8096 once the server is installed, has a very simple and easy to use interface where you can do basic configuration, browse your collections and play files. There is a nice useful search button in the upper right corner. Jellyfin seems to find movies, music videos, music tracks as long as you search for a keyword that are part of the path or name of the files you are looking for.

Jellyfin media server 10.6.3 browsing media folder.jpg
The Jellyfin web interface browsing a folder full of sub-folders filled with music videos.

There are two different Android apps available for Jellyfin if you do not want to use the web interface from a browser on phones and tablets and televisions. One app is called Jellyfin Mobile and the other is Jellyfin AndroidTV (for televisions). Both are available for free in the Google App Store. They are not available in the F-Droid free software app-store.

Hardware Accelerated Transcoding

Jellyfin media server 10.6.3 hardware transcoding settings.jpg
Jellyfin supports hardware video encoding. VAAPI is what you want to use on GNU/Linux if you have Intel or AMD hardware (not sure about Nvidia binary blob driver).

Jellyfin can transcode videos in your collection on the fly and hardware accelerated encoding is supported. The "Settings" menu in the web user interface allows you to choose between "AMD AMF", "Intel Quick Sync", "MediaCodec Android", "OpenMAX OMX", "Nvidia Nvenc", Video Acceleration API (VAAPI)", "Exynos V4L2 MFC" and "Video Toolbox". It is quite idiotic that Jellyfin shows all those options to GNU/Linux users since VAAPI is the only actual choice on GNU/Linux regardless of what hardware you have. You can also choose what codecs can be trancoded using hardware acceleration. Type vainfo | grep Enc on the server/box you are running Jellyfin on to get a list of the encoding profile your hardware supports. Jellyfin will stay on the safe side and only propose that you use hardware acceleration for H264 and VC1 when you select VAAPI. There is a fair change you can use it for HEVC if you have a modern AMD GPU or APU and you can likely use it for VP9 too if you have a Intel integrated graphics.

You can visit Admin ▸ Dashboard ▸ Advanced ▸ Logs and look at the transcode logs to see if VAAPI hardware accelerated video encoding is working or not.

HTTPS And Other Advanted Features

Jellyfin will, by default, only listen on HTTP. You can configure it to listen on HTTPS if you have a SSL certificate (you can get a short-lived one for free from Let's Encrypt). Jellyfin will propose to listen for HTTPS connections on port 8920 but it does not have to. Binding to ports below 1024 is not supported (it can apparently not bind to a low port and fork to a non-root user).

HTTPS is likely not required or desired if you will only be using Jellyfin at home (and your server is at home). It is totally worth configuring if you plan on using Jellyfin remotely. There is one small problem you should be aware of if you plan on using free short-lived Let's Encrypt certificates: They have to be renewed every two months and that process requires a working web server the Let's Encrypt certbot can write to. You will have to setup something like boa or httpd or nginx and a certbot cron/systemd timer job.

Verdict And Conclusion

Jellyfin media server 10.6.3 in Chromium.jpg
Jellyfin playing a I.O.I (아이오아이) Downpour (소나기) cover by Boramiyu (보라미유) in its web interface.

Jellyfin is a really nice, easy to use and fully featured multimedia server suitable for any decently modern GNU/Linux box, NAS or desktop computer. It supports transcoding on the fly, file browsing, searching, service discovery and all the goodies you want from a media server.

It is a great choice if you want/need a streaming media server. That may be something you want if you play video files on Android devices or "smart" televisions regularly. If you are one of those people who have a HTPC networked to a NAS somewhere and you usually play files on that directly using mpv or VLC or Kodi then you probably don't need something like Jellyfin. It fills some people's needs and it will likely be a good choice for you if you and/or your family consumes media files in ways where streaming is preferable (As someone who has a HTPC networked to a NAS and doesn't watch movies on key-hole size mobile screens... it's hard to see the point of using Jellyfin, even though it is a very nice media server).

Installation

Jellyfin for Linux comes as two packages: jellyfin-server and jellyfin-web. The web package provides a web interface for Jellyfin. It is required if you want to access it from a web browser but it is not required to use Jellyfin with programs like Kodi and Gelli.

The server component is configured in /etc/sysconfig/jellyfin

The server can be started with systemctl start jellyfin.service once you have looked over the configuration file.

Jellyfin will by default listen on http port 8096 on IPv4 and IPv6 on all interfaces and it will allow anyone, from anywhere to access and configure it. It presents a "Welcome to Jellyfin!" page the first time you access the web interface. It will ask you to configure language, username and password (optional) and proceed to ask you to "Setup your media libraries".

Media folders need to be tagged with a "content" type which can be Movies, Music, TV Shows, Books, Photos, Music Video or "Mixed Content". Each folder can have a "Display Name" used by Jellyfin in the web interface and when devices connect to it.

Jellyfin will ask for "Preferred Metadata Language" once media folders are setup.

The last configuration step is "Configure Remote Access". You can allow Jellyfin to be accessed remotely or not. This configuration page offers an option of using uPnP to configure your Internet gateway to the web interface port is forwarded to the box Jellyfin is running on (using miniupnpd or similar. Jellyfin itself is not capable of providing any port forwarding services if it is running on a Internet gateway.

It will take quite a while from the time you are done configuring it to the time most media files are available in the interface if you configured one or more fairly large folders to be part of your media collection. The files will initially be available without any thumbnails. Jellyfin will create them in the background over time. Don't expect all your media to have thumbnails until Jellyfin has been running for a day or two if your collection is large.

You will want to navigate to Settings ▸ Admin ▸ Dashboard and Advanced ▸ Networking in the Admin Dashboard immediately upon installation. Jellyfin will, by default, listen on HTTP port 8096 on all IPs and interfaces. This can be a huge problem if you are running Jellyfin on your Internet gateway, you will much likely want to ensure that is is only listening to the local network if that is the case (unless you want to use it remotely). The defaults are fine if you configure it on a NAS behind your firewall and you are only using IPv4 like it's 2002.

Links

Android Applications:

Add your comment
LinuxReviews welcomes all comments. If you do not want to be anonymous, register or log in. It is free.