Jellyfin Forum
Have Jellyfin automatically play supported version of a movie - Printable Version

+- Jellyfin Forum (https://forum.jellyfin.org)
+-- Forum: Support (https://forum.jellyfin.org/f-support)
+--- Forum: Troubleshooting (https://forum.jellyfin.org/f-troubleshooting)
+--- Thread: Have Jellyfin automatically play supported version of a movie (/t-have-jellyfin-automatically-play-supported-version-of-a-movie)

Pages: 1 2


Have Jellyfin automatically play supported version of a movie - Zippy1970 - 2023-09-28

I have the Jellyfin server running on an RPi 4 - which works perfectly as long as no transcoding is needed. As soon as it needs to transcode, movies become unwatchable (due to obvious reasons).

Most of my content is 4K HDR since my main tv is a 4K HDR tv. But sometimes, I also want to play content on other tvs or devices (when I'm away from home or when I want to watch something on my phone). What I've done now is store several versions of the same movie in the same folder, following the instructions here. So for instance, I stored both the 2160p HDR and the 1080p SDR version in the same folder like this:

Code:
Awesome Movie
  ├── Awesome Movie - 2160p HDR.mkv
  └── Awesome Movie - 1080p SDR.mkv

This indeed results in only one instance of the movie being shown in the list, but on the movie info page, you are able to chose which version you want to watch.

But what I really want is for Jellyfin to automatically pick the version that needs no transcoding and with the highest possible resolution. As it is now, it doesn't. It just picks whatever is default (which is in my case 1080p SDR since the alphabetical sorting causes it to be displayed at the top).

Is this possible?

(I don't want to better hardware since energy prices in my neck of the woods are about $0.45/kwh. Running the RPi costs me about $4 - $8 per month. Running even a small laptop would cost me $40 - $80 per month.)


RE: Have Jellyfin automatically play supported version of a movie - TheDreadPirate - 2023-09-28

This is not possible the current version of Jellyfin.


RE: Have Jellyfin automatically play supported version of a movie - Zippy1970 - 2023-09-28

It still isn't? That surprises me since I've seen posts dating back to 2019 of people requesting this feature... 🫤

And I can't imagine it's really that difficult to implement...


RE: Have Jellyfin automatically play supported version of a movie - TheDreadPirate - 2023-09-28

Implementing this so that it works well for a single kind of device for a limited set of codecs is probably easy. Implementing it so that it works on any kind of device with any kind of codec is pretty complicated.


RE: Have Jellyfin automatically play supported version of a movie - bitmap - 2023-09-29

This topic belongs in the developers hall of sh/fame.


RE: Have Jellyfin automatically play supported version of a movie - Zippy1970 - 2023-09-29

Well, not trying to trivialize the task at hand, but I don't see why - since everything needed is already in place:

- Jellyfin can already detect multiple versions of the same movie
- Jellyfin can already determine video format (encoding, resolution, etc)
- Jellyfin already decides if transcoding is needed or not (based on many different things so it rarely gets it wrong)

And in my opinion, that's all you need. Just iterate through all versions available, use the already existing checks to determine which don't need transcoding, then serve the version with the highest specs/resolution.

Granted, I haven't looked at the source code myself, but in a nutshell that's how to do it with the already existing functionality.


RE: Have Jellyfin automatically play supported version of a movie - skribe - 2023-09-29

I think there is a lack of interest in this feature relative to the intended purpose of the server. This is a feature only appealing to people trying to run the server on underpowered hardware that isn't recommended to begin with, and there already exist hls streaming solutions that can deliver a compatible stream from multiple pre-encoded options. This is, in fact, how commercial streaming services work.

Jellyfin's entire objective is to be the exact opposite of this. The goal is to format shift whatever existing files you have to be compatible with clients, because this is what generally works best for consumer grade solutions. This is accomplished by using hardware capable of transcoding content in real time, rather than selecting from multiple pre-encoded options.

All of this being said, such a feature probably wouldn't be out of scope if someone wanted to sit down and add it. I just don't think anyone has expressed any interest in putting something like this together. If you're confident that it's easy, you can always start this project yourself--or simply find someone who is interested in helping you. But the fact that it's sat so long suggests that no present contributor has been interested in taking it on.

I would also say that it's a terrible idea, in general, to make assumptions about what's involved in adding any feature to any code base--jellyfin or otherwise--with which you are not familiar. Such assumptions are rarely accurate.


RE: Have Jellyfin automatically play supported version of a movie - Zippy1970 - 2023-09-30

I would love to do it. The only thing holding me back is that the time to get familiar with the inner workings of Jellyfin (just to find out where the parts are that serve up the media files) would probably take a lot longer than it would take adding that feature. I really don't have much spare time (working on several other projects). So if someone could point me towards the proper source code, that would save me a lot of time.

I disagree that there isn't much interest for such a feature. A quick search on the internet results in a buttload of posts on several sites/forums where people are asking about just that.

Quote:I would also say that it's a terrible idea, in general, to make assumptions about what's involved in adding any feature to any code base--jellyfin or otherwise--with which you are not familiar. Such assumptions are rarely accurate.

Like I said, everything needed to do something like this is already there. When a request is made to play a movie, the server already iterates through all available versions, it already retrieves the information about codecs needed, resolution of the video, internal URLs, etc. Again, of every version. Then it picks the default file (the first in its internal sorted list), checks if it needs transcoding, then starts serving that video (with out without transcoding). Looking at the communication between the client and the server, I think that's a pretty accurate depiction of what is happening behind the scenes.

Now in my opinion, all you have to do is move the transcoding check to within the loop, and just keep track of which versions need transcoding or not. And instead of serving the first file of the list, serve the one that doesn't need transcoding. And if there's more than one version that doesn't need transcoding, pick the one with the highest resolution.

Again, I don't think it's all that difficult. But I won't know for sure until I have had a look at the source code (which I would love to do if I would know where to look for this source code)


RE: Have Jellyfin automatically play supported version of a movie - Zippy1970 - 2023-09-30

Oh, and I would like to add that more and more people are looking for low cost hardware to run the Jellyfin server on. I use a Raspberry Pi because of the cost of electricity. As mentioned in my first post, in my neck of the woods, running a small laptop would cost me between $40-$80 per month. The Pi only $4-$8. And that laptop would probably be able to only transcode one stream at a time. If you want to transcode multiple streams, then you probably need hardware that has even higher power consumption. And then you are completely missing the goal of such a media server in the first place. Because, let's be honest. Most people use Jellyfin as an alternative to having to have a subscription to multiple streaming services. So if the energy costs of your hardware are higher than the combined costs of those subscriptions, your are missing your goal.

On the other hand, storage is dirt cheap. I can get a 2TB SSD for under $50. That will store 200 4K movies. Or 150 4K movies plus their 1080p versions.

You say the objective of Jellyfin is to format shift files so they are compatible with the clients. Yet it offers the ability to store multiple versions of the same media in different formats so you can manually choose which version will play on the device you are watching on. The only reason people would do this is to prevent transcoding. Otherwise you would always choose the one with the best quality (= higher resolution, HDR, etc). So why not offer the option to do this automatically?


RE: Have Jellyfin automatically play supported version of a movie - Venson - 2023-09-30

(2023-09-30, 08:37 AM)Zippy1970 Wrote: Oh, and I would like to add that more and more people are looking for low cost hardware to run the Jellyfin server on. I use a Raspberry Pi because of the cost of electricity. As mentioned in my first post, in my neck of the woods, running a small laptop would cost me between $40-$80 per month. The Pi only $4-$8. And that laptop would probably be able to only transcode one stream at a time. If you want to transcode multiple streams, then you probably need hardware that has even higher power consumption. And then you are completely missing the goal of such a media server in the first place. Because, let's be honest. Most people use Jellyfin as an alternative to having to have a subscription to multiple streaming services. So if the energy costs of your hardware are higher than the combined costs of those subscriptions, your are missing your goal.

On the other hand, storage is dirt cheap. I can get a 2TB SSD for under $50. That will store 200 4K movies. Or 150 4K movies plus their 1080p versions.

You say the objective of Jellyfin is to format shift files so they are compatible with the clients. Yet it offers the ability to store multiple versions of the same media in different formats so you can manually choose which version will play on the device you are watching on. The only reason people would do this is to prevent transcoding. Otherwise you would always choose the one with the best quality (= higher resolution, HDR, etc). So why not offer the option to do this automatically?

Well first topic: Hardware.
We have a brand new Hardware Selection guide where we go into the ins and outs of Hardware selection. But you cannot expect to run an very hardware expensive process like jellyfin on an SBC that is just underpowered for it. Thoese two things just dont match up, we cannot bend the rules of physics. RPi is just so underpowered that even a single transcode will bring it to its knees. 
To be absolutly clear here: Jellyfin is __not__ here to replace any streaming service. Jellyfin is a __HOME__ media server, not an online streaming replacement. It is for your own selection of media, that might be movies or some of your vocation clips.

As Skribe already said, you are free to implement a feature that automatically selects the right version into the server and PR it. No one bothered with that yet so it is not there. We (the jellyfin team) are not the only ones working on Jellyfin, everyone can and many people outside the regular contributes do. There is no general red line, what the team implements or dont. Everyone is free to work on everything they like to and if they dont have time or dont feel like it, they will not to anything at all. Jellyfin is a FOSS project after all.