Plex Server won't direct play VP9 video streams on Plex Web on VP9 supported browsers

Server Version#: Version 1.26.0.5715
Player Version#: Version 4.79.4

So a few days ago I had this (well it was supposed to be) brilliant idea to make it so I could get more mileage with my Plex server’s meager internet upload speeds and watch at higher resolutions and bit depth on the Plex Web App. The solution? Convert video streams to VP9! Chrome, Firefox, Microsoft Edge, Opera, (Except for Safari [curse you Apple]) all support VP9 playback and it gets near H265 levels of compression. Logically, direct play should be supported because the browser supports the file type.

For some reason, this is not what Plex does. Instead, even though the codec and bit-depth of the video stream is supported by the browser, Plex Server still transcodes the video to the less efficient, but more ubiquitous H264 type encoding.

Now, I want to note that I am a software engineer. So I tried to figure out what was going on. I noticed that Plex has client profiles that are used to define the server behavior for Plex Server in relationship to its clients. But it’s unclear if that will even do anything to fix it. In addition there is no XML schema definition files or documentation for me to understand specifically how to tell Plex Server specifically how to direct play VP9 video streams packaged in MKV files.

Plex’s own help documentation states that Plex would transcode audio and video separately in order to support it’s clients, so I want to tell Plex exactly what kind of codecs, both audio and video are supported by Chrome and other Chromium based browsers.

I am perfectly willing to do some experimentation with profiles with or without documentation, but I think many people like me would stand to benefit from having one of the Plex Devs post some documentation about the XML profiles I won’t be working with a black box.

It’s that or could you guys please update Plex Web and Plex Server to maximally support browser decoding capabilities? You could do something like Modernizr but for browser transcoding and tell the server what kinds of formats it can accept (just like browsers already tell servers what kind of compression formats it can accept from servers that respond to requests through request headers).

Plex is awesome in that it’s created a robust do-it-yourself streaming solution. But if you look at a competitor like Jellyfin and when they put up support matrix documentation like this Codec Support | Documentation - Jellyfin Project for their web client, I’m kinda stuck wondering why this was not addressed sooner. I would assume at this point, the kind of work necessary to make VP9 direct play possible in supported browsers may be tedious but a not a challenging thing to implement (but that’s based on assumptions I’m making about how Plex Web and Plex Server work, otherwise please go into gory detail about why this might be a non-trivial issue to address).

I hope that someone in-the-know will shed some light on this apparent deficiency. (I’m not even asking for AV1 support here!)

References:
https://www.chromium.org/audio-video/
https://caniuse.com/webm

P.S. I also researched FFMPEG, VP9, Transcoding, MKV containers, and a bunch of other stuff. I’m seriously looking for an answer!

Seems to direct play fine. May be something else causing transcode

Dinosaur_Train_-S4·_E9

I’m obviously doing something wrong then.

Could you give me some information about how the file was encoded? What container was used? Etc? Some guidance on how to use VP9 properly would be appreciated.

I did not encode that myself. Just a sample from the Kodi samples wiki I got from here. it was #28 in the 4k samples section

Okay. Will investigate.

@BigWheel

Here’s evidence of my problem. I will try to reproduce your POC example. If I can verify that I can direct play VP9 then I would like to be able to track down the conditions that are causing the transcode of VP9. I tried eliminating subtitles as a cause by turning them off. Still transcoding.

is it local? Is that 2 mbps the originals bitrate?

@BigWheel It’s playing over WAN/Internet. The server’s max internet up-speed is 12 Mbps.

Here is information about the source file which you might find helpful.

Screen Shot 2022-04-25 at 9.03.13 AM

@BigWheel I played the sample file you suggested on my local network on my laptop. It does not transcode. I will try to do tests on the file played through the internet next.

@BigWheel playing it over the internet on my phone Android Chrome, it transcodes.

I don’t see an option to allow direct play from my phone. Will try again on my laptop when I am no longer on my network.

check if auto adjust quality is enabled on your phone. if it decided to auto adjust it always does a transcode because that is how it adjusts on the fly.

Does it not work in Android app?

So the max up speed of the internet connection for the server is 12 mbps, and the sample file is encoded to have a 13 mbps bit rate. I will have to test a different file with a lower bitrate I think. And to answer your question, I am looking for direct play over the Plex Web App not the Plex Android app.

Thanks!

Keeping this alive. I have not had time to follow up because life gets in the way. Still plan to!

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.