I have some movies available in two different qualities:
4K highly compressed H265, usually with ~5Mbps bitrate
4K “remux” 4k blu-ray with ~50-75Mbps bitrate
The first one is designed for remote access and the second one for local access.
My Plex media server has “Network”>“LAN Networks” configured with proper subnet and “Remote Access” > “Limit remote stream bitrate” is set to “25Mbps (4k)”.
The Windows media player works as expected. It picks the highly compressed file in mobility and the remux one when connected to the LAN. Everything works great in Direct Play.
In mobility, the Android TV (it that case on Nvidia Shield, but I believe this concerns all Android TV devices) selects the remux one and, as it is restricted to 25Mbps, generates a server side transcoding to 1080p/20Mbps.
I can manually select the other 4K content and them switch to 5Mbps in direct play mode but I have to do that on all movies everytime.
The app only chooses the lower file if it can direct play it, otherwise it uses the higher quality file to transcode. It looks like something in your file makes it not direct playable.
As I said, if I manually select the file version, the Direct Play is working as well on the lowest quality file.
I have ran another test this morning with another movie with the following qualities avaibles:
7.4 Mbps, 1080p
5.2 Mbps, 4K
53.5 Mbps, 4K
In that case the Plex media player on Android TV starts a Direct Play on the “7.4 Mbps, 1080p” version and I can manually select the “5.2 Mbps, 4K” manually which stays in Direct Play.
Personally, I suspect the Plex media player to not be able to select any 4K file in remote access. I’m thinking about this because I can only restrict to 1080p 20Mbps on client side and not 4K 25mbps like on the server.
Got the logs and I see what’s going on. Since you don’t have a limit set on your client, the client is asking for the highest bitrate version. PMS gets the request and says No, that’s more than the limit I have. So PMS overrides the decision. I’m checking to see what the decision should be. If you set the limit on the Android TV, it should work as expected.
I let the Android TV to “Maximum” resolution, the bitrate limit on server side and, with the movie “The Dark Knight - Le Chevalier noir”, the media plex DOES select the version “7.4 Mbps, 1080p” and not any 4K files.
Also, it works as expected on Plex media player for Windows.
In my mind, the Android TV media player fails to select the good movie only between 2 4K movies.
Do you have any update regarding the selection of the smallest available 4K files from Android TV when multiple formats are available and server has a bandwith restriction?
Yes I did. The client is responsible for requesting the version to use. In your case, you do not have any limits in the client so it will always pick the highest quality version. So the app first tells PMS, “I have no limit so send me the highest quality file you have”. PMS says “here’s the file”. At this point it’s already decided which version to use. But it then goes “wait, I have a limit so I can’t give you that file as is, here it is transcoded to stay within the limit”.
So, PMS is doing it correctly. If you want the lower quality version, you’ll need to set the limit in the client so that it will request the appropriate one.
So it is correct and proper for the CLIENT who is NOT THE ADMIN AND NOT EVEN IN THE SAME STATE/COUNTRY to OVERRIDE a decision made by THE SERVER OWNER AND ADMIN to limit (or not) a given bit rate of anything leaving the server - 'cause the OWNER AND ADMIN knows how many horses are in the barn and how big the pipe is leaving it - and wants to try to manage the material flowing through it?
Well - I wish the Social Security Folks would let me adjust the bit rate of the monthly stream I receive. Clearly I’d like to have more quality and if Plex was in charge, all I’d have to do would be to crank up the volume on my end.
The SSI Machine sets the quality of the stream.
I have to deal with the bit rate they send - even if I start buffering before the next episode.
The problem is the wording and operation of that function. The wording indicates server owners have some control over what leaves their server - when they absolutely DO NOT!
Please explain - how does that work?
What is that Limit for?
In what real world situation do those controls do something?
Plex media player on Android TV starts a Direct Stream on the “7.4 Mbps, 1080p” version and I can manually select the “5.2 Mbps, 4K” manually which stays in Direct Stream.
My conclusion is that Android TV client supports server sides restrictions but is unable to decide between 2 files in 4K.
Also, please keep in mind that the Plex media player for Windows works as expected even in 4K.
Yes it does. That controls how much information leaves your server. It has nothing to do with which file it will choose if a transcode is needed.
For this scenario, imagine getting change for a $100 bill when buying an $80 item. Since I (client) didn’t specify what type of bills I want (bitrate), the vendor (server) can choose what to give (1 - 20, 2- 10s, 4 - 5s, 20 -1s, or a mixup. If they have a rule to not give anything more than $10 bills (rate limit), then they will follow their rule. There is no rule on either side to say use $5 bills (the lower bitrate file).
I don’t understand what you mean. The client should be requesting whatever version would fit best within any quality limitations you’ve set within the app.
Does the app have a remote quality setting set? You don’t in your Android TV app.
I also don’t know if Plex Media Player (Windows) is able to select different versions. It may just be requesting the first stream which in your case is the 5.2 Mbps hevc version. Technically, if this was working as you expected, it should have picked the 7.2 Mbps h264 file since it has the highest bitrate within the 10 Mbps limit on your server.
I did not specify any bitrate restriction on client side.
On Windows, it works exactly as needed : on local network its selects the larger file, on remote network, it selects a smaller file but still in 4K. (Same device & configuration on both tests).
On Android, it’s almost there: on local network its selects the larger file, on remote network, it selects a smaller file but in 1080p or lower. (Same device & configuration on both tests).
I don’t know how, but the bandwith restriction appears to be known on client side… But the Android client will never select a 4K file even if it can.
Your logs showed it wasn’t picking the 1080 version, but instead was picking the high bitrate 4k version and transcoding it.
Like I said, I think it’s working because the 5.2 Mbps hevc version just happens to be first in the list. See if you have a file where the version you want isn’t first and if it still works as you expect.