Wow, I don’t know what I have done. But messing around with it so much, now it is working! I went back to get you a log. Set the bw to 1.5 (again) and now it works awesome! Take a look:
The second file does not appear to have been deeply analyzed yet, so PMS is relying on the “two times the average bitrate” algorithm to determine bandwidth requirements:
Note the missing “deepAnalysisVersion” and “requiredBandwidths” parameters in the second list.
I’m not sure if you can force deep analysis, it is usually performed (if enabled) during maintenance (Settings -> Scheduled Tasks). You can force a normal media analysis at any time, but, but I’m not sure if that adds the extra information gathered by the deep one:
Edit: I meant to also add that PMS may be able to play the second file (and any encoded like it) without transcoding (due to bandwidth limitations) if you up your restriction from 1.5 Mb/s to 2 Mb/s.
This is the key. Yea!
Every file I try that has the “requiredBandwidths” attribute streams perfectly without transcoding! I tried to force an analysis on select files but they don’t seem to go deep, or at least do not add the magic attribute.
Make sure this setting is enabled under Settings -> Scheduled Tasks:
This will cause PMS to perform deep analysis during its nightly maintenance. I’m not sure how long it takes to process a file though. It’s possible that it may not be able to get through your entire library in the time available during one maintenance period. It should make it through your entire library at some point though.
I have it selected. I am “forcing” the scheduled tasks by temporarily changing the time to run to right now. I am letting it run as long as it needs. The bandwidth and cpu are dancing around, so I am hopeful the deep analysis will occur…
I seem to always see Plex doing something about 12 hours outside the scheduled maintenance period - and it seems to always be Deep Analysis (if memory serves). The part of Plex Brain handling that - sniffed glue in it’s youth - 'cause it don’t know what time it is and apparently don’t care.
Okay, I can validate that deep analysis gives us the requiredBandwidths attribute needed to keep the server from transcoding when the needed bandwidth is close, but not over the available bandwidth, as identified by @pshanew:
And it does override the default “double” requirement as identified by @hokierulz.
The key here has to be the “requiredBandwidths” attribute in the individual media xml file and the “Deep Analysis” required to get that attribute. It allowed me to understand why two videos encoded by the same encoder using the same bitrate, resolution and audio would be acted on by the server so differently (one direct played one transcoded).
I hope this thread helps others and thank you to all who chimed in.