HTTPLiveStreamURL, support different bandwidth settings for clients

So, say there is a site which has a nice m3u8 file. This file contains a list of stream of varying bandwidths, resolution, etc. I was hoping that HTTPLiveStreamURL would parse the file, and, pick the appropriate settings and stream based on the client remote quality setting, my testing showed it did not, it picked fastest.

So, is it the plugins jobs to read in the m3u8 file, parse it, and, present as multiple MediaObjects so that Plex can pick from the ones presented per the settings on the client? Or, is there a better way or more automatic way?

I have been told not to define any bitrate/resolution for HLS media objects if there are multiple bitrate/resolution options in one m3u8 file. The Plex player should choose the best one based on the users quality settings. And this is also best for PMS, if it needs to transcode on demand HLS videos.

But each client may be different in how it determines the quality used for channel content. Though remote quality was used for channels, now, on some clients, remote quality is just used for accessing remote libraries that have been shared with you.

For example, the Roku app uses the local quality setting for determining the quality for online content. The Plex Pass version now has local (for accessing your local PMS), remote (for accessing remote PMS libraries), and online (for channels and Watch Later) quality options. Hopefully that will be approved by Roku soon and be available to all Roku users. And the Classic version used the remote quality for channels and would transcode if there was a resolution set for an HLS video that was higher than your remote quality setting…

Appreciate your comments shopgirl284. A few comments though.

Dealing with the clients I currently have, I can see none of them work the way you describe as far as multiple options in a m3u8 file. Perhaps that’s the way it is going to work, that may well be true. There is no choice even in Plex web if I just pass the master.m3u8. I have gone through and parsed the m3u8, and, made multiple MediaObjects (and set url to the appropriate speed m3u8), and that seems to work very well within Plex Web which then offers a choice of which one I want to play. I like having the choice. If, for example, wife is on the phone talking to someone, I might pick a lower speed video to be nice. Even though a higher speed would be allowable based on say the online quality setting. But if it’s nighttime, and, everyone is in bed, perhaps I want the highest possible speed that my connection allows.

I see, my Roku (not Plex Pass) does not have an online quality setting. I guess it is coming.

What I would like to see happen is this… Only the master.m3u8 is needed. That in turn causes an option to pick the speed and resolution one wants to play, in all clients, not just Plex web. If none is picked, and it’s simply played, then, it picks the highest bandwidth or resolution available based on the online quality setting.

For now, I am parsing the m3u8, and, using my own logic to pick the highest quality under a plugin setting quality limit. This works well for clients like Roku and Apple tv although it forces them to one speed instead of giving me an option.

It is my hope this is coming though. I’ve been reading a lot of your posts lately actually, as I have learned the environment.

OK, yes, if you want to be able to choose the media options within each individual videos, then you are right, you must define each resolutions and/or bitrate option for that HLS video in the media object. The client can automatically choose the best quality in a m3u8 based on your overall quality settings. But to see that “media” option for each individual video in a channel (shown as the 3 cable icon in Plex Web) you must define those options in the media object code of your channel or URL service.

The Plex Pass version of the Roku app allows you to view and choose those “media” options for each individual video of a channel and it has local, remote, and online qualities as options in the overall settings. It also supports InputDirectoryObjects() like Search in channels. They are hoping Roku approves this new version soon.

A lot of Plex players are either new or being redone (so those are pretty much going through the same stages as a new app), so what is available in each client varies widely. But my understanding is that all these updates are occurring right now so that eventually there will be more continuity among all the Plex players. So channel design can be frustrating right now, but hopefully all the growing pains will be worth it once all the redevelopment is done.

And since Plex is first and foremost a software to manage your local media, first they will get all the kinks out of the local media player and add all the extras for local media management. Once they know that part of the app is working and stable, then they will start adding the extras for channels. And it takes time for all these steps in the development, especially waiting for the official app store to approve and release updates.

Since the point of all of these current updates is to have continuity and the Plex app for Roku is a little further along in the development process, it is usually a good indicator of what will be coming in the other client apps. So the features on the current Plex Pass version of the Roku app should eventually be available in all clients.

And do keep in mind while reading my posts, that I am by no means an expert on this stuff. There are a lot of people here who are much smarter and much better programmers. I am just able to explain the basics. I often use the analogy that people who know advanced Calculus may not make the best Algebra teachers. So I am just an algebra teacher.

I know you are not necessarily an expert. However, I see you have asked tons of questions, which means I often encounter you in questions I am looking for answers to. If you merely repeat answers I may not have found, that’s an expert to me right now! But how do you think one becomes an expert? By experience, and, asking questions!

Hey, I know advanced calculus!

I always say never trust anyone who says they know everything or are an expert. This is an especially true of technology, since it changes so much, you cannot know it all or be an expert.

The smartest people I have ever known have always been the first to admit what they did not know and ask questions. They were just very good at being lifelong students.

As for the wanting clients to show what is in a m3u8 without it being in the channel code, you would have to talk to one of the app developers to know the process for sure. But channels produce an xml document that the clients read and uses to display the channel info. When the client reads the media object, it pulls the stream url and decides what to do with it based on the other info you included in the media object.

So I would think trying to combine what the client does with that m3u8 stream after it accesses it with what it does with displaying the details of that channel XML that it pulled that stream from would be difficult for the client.

If you want to see what the clients are seeing from channels, give localhost:32400/channels/all a look. To look deeper in a channel, just put whatever is in the key value after “localhost:32400.”

You can change the platform by adding “?X-Plex-Platform=”, for example ?X-Plex-Platform=Roku", to the end and if you are using Home you would also have to include the token.

Also Gerk wrote a great add-on for Chrome called Plex Media Server XML Helper to see the Plex XML better.

Well, one exception to your rule. If the person is the coder of something, generally, I tend to trust them.