Some AV1 videos will not play (on Android TV device)

Server: 1.41.0.8994 (Linux, Debian 12) (Pi 5)
Player: 10.24.0.1640 (Plex for Android TV)
Device: ONN Google TV 4K Pro (2024) (Android 12)
Device (More): Hisense U6G (TV), Denon S970H (AVR)
Logs: here (server, client, media info, 50 KB, MEGA)
Samples: here (6 files with errors, 160 MB)
Samples (More): here (4 files with DV HDR, 270 MB)

Problem: Plex will not play all AV1 videos.

Reproduce: Media files should contain AV1 video (any audio, MKV container, see samples). Device should be capable of Direct Playing these videos. Plex will not play all AV1 videos: Results include “Error: Unable to play media” (spinning its wheel for a while beforehand); Or app crash (Plex logo shows then returns home); Or audio only (no video, black screen).

Notes: I’m hoping this can be fixed, because Jellyfin will directly play these videos on same device (and ExoPlayer?). Possibly a problem with Plex’s ID or configuration with this new-ish device? About 1/3 of my AV1 movies are effected (possibly AOM encoded, all/most of my SVT-AV1 encodes play fine). I will continue investigating (media info, logs) and details will be added. Using GTV’s Dolby Vision “low latency” mode (12 bit YCbCr 422, “standard” default is 8 bit RGB 444 which caused problems with HDR). Videos also do not play on Android mobile (Google Pixel 6a). All videos play fine on Windows (both Plex and JF, thanks to MPV backend?).

Updates: Samples added (AV1 failures). Logs added (server and client). Samples added (HEVC Dolby Vision and HDR10+ for testing, plays fine). Device info added (TV, AVR, server). Results added (audio only). Small samples were cut from problematic videos (via MKVToolNix), however they are failing differently than full videos (blank screen with audio, no error or crash). Still not sure exactly what the cause of the problem is (device, Android, ExoPlayer, Plex, etc).

Not a Plex issue. On a GoogleTV device Plex will use Android’s internal Exoplayer. This issue should be directed there instead.

On Jellyfin if you have it set to Auto mode it will either use Exoplayer on libVLC. In this case it’s probably detecting that Exoplayer isn’t capable of playing this file and using libVLC instead.

LibVLC was removed from Jellyfin’s Android TV client. I think that happened at version 17.

Thanks for the info. I would probably assume that this is not exactly a Plex issue if all AV1 videos failed to play, or no others had a solution. Interested to learn exactly what Jellyfin and others are doing differently. (I’m new to JF and using mostly for testing so far.)

I’m just trying to figure out the cause of this, and help get it fixed. I wonder if the uncertainty around Android TV 13-14 has delayed some relevant work or updates.

That’s interesting. Are they also using Exoplayer exclusively now (and how is theirs different from Plex)? Hopefully I can find some good info about the specifics of JF’s operation.

For now, yes. I think they hope to add something more in the future, but no idea. mpv is a thing on Android, but the processing requirements are a bit too high for most streaming devices. But if you’re using an Android smartphone I recommend Findroid for a client. It has a mpv backend playback mode and recent Android smartphones are powerful enough to use it.

I can’t say how much Jellyfin’s Exoplayer is really different. I do recall Plex’s implementation of Exoplayer is customized by them. Honestly, Jellyfin’s Android TV clients are crap when it comes to watching subtitled content. I don’t think they natively support anything but SRT. The libVLC option helped with avoiding transcoding so much. Meanwhile, the Plex Exoplayer-powered client can do native playback of PGS, VOB (although the aspect ratio is not maintained), SSA and ASS, etc.

This is a situation where I really wish the Jellyfin team had added the new functionality first before removing libVLC – kinda like how Plex added the Experimental player to the iOS/tvOS app, but you could change it to use the old player in the settings, to avoid bugs in a new playback setup while they were fixed. Apparently libVLC has not been updated by VideoLAN in some time, and had some security-related issues. So that was why it was removed.

1 Like

Hardware: Fire Stick 4K Max (2nd gen)
Player version: 10.22.1.1607 (d108dc3f)

None of your files play back for me. I get audio but a black screen instead. Plex dashboard is indicating all of them were direct played.

I’m getting the same behavior on my phone with the Plex app – except for the Blade Runner 2049 sample. That is triggering a transcode on my server, so it does play (or tries to at least, my server is not quite up to transcoding 4k in software without occasional pauses)

Important Note: My phone is not using the SoC for decoding. There was an interesting development where Google has added a software AV1 decoder to Android via the Play Store. My phone is a 2021 model with a Snapdragon 888, so there is no AV1 hardware support, and running Android 13, but in the Plex app I now get direct play of AV1 files. It generally works, but I know of one TV series I have where this issue happens (black screen) with Google’s decoder (it plays in Findroid using the mpv setting).

The files play in the Windows Plex app (no surprises there).

1 Like

I wish mpv was an option on everything. It has been lovely and reliable for years (never fails on PC, plays all of these fine).

Thanks for testing! And for lots of info to check out and digest. Does your Fire Stick 4K Max usually directly play AV1 fine? I’ve yet to try, but see Fire OS is Android based as well. I forgot to test non-TV Android (Pixel 6a here), but yes it’s doing the same (black screen, audio only), even JF fails on half (BR49, Midsommar, Oblivion).

Any guesses as to why these files are problematic? I have not found any significant differences (via MediaInfo) versus playable AV1 files. It doesn’t help that AV1 encoding settings and metadata are not saved to the stream (like AVC, HEVC).

You can do that right now on Plex on mobile, at least.

  1. Install mpv for Android.
  2. On the Plex app go to Settings > Advanced > Player and turn on Use External Player at the bottom.
  3. Now go play a video, and you will be prompted to choose the app to do the function most likely.
  4. Choose mpv, and now your program will play there instead of within the Plex app.

Using mpv also gains you gesture controls (up/down on left side of screen for brightness adjust, up/down on right side for volume adjust, and left/right in the middle to scrub through the program). The only downside of this is Plex can’t track playback progress/or watch status this way. But it still makes it easier to browse and choose stuff.

I just tried a couple of your samples this way and Oblivion and the 4k Blade Runner sample both played on my phone fine. So mpv’s software AV1 decoder seems to be superior to Google’s.

Yes. Although it can’t play back that one show I have that fails on the Plex app on my phone, either. Here’s a sample of that, btw.

They worked fine on Findroid. I also tried Streamyfin and they are playing there but not… quite right? Seeing some HDR issues on a couple, and the player is acting like it can’t display in the control bar area (not truly full-screen).

They were made with encoding profiles/features the decoders don’t support most likely. Same reason hardware-accelerated transcoding doesn’t give as good a result as software (on recent graphics chipsets it’s good enough most people can’t tell the difference). As far as the software decoder on Android there’s always a chance it can be updated to make it more compatible. For a device that depends on hardware acceleration (like a Fire Stick or Google TV device) it’s more vague if it can be fixed.

Streaming services encode their video using profiles they know will be compatible with the streaming devices their customers are using, but people doing their own encoding at home generally target a computer as the playback device, so they are free to use more exotic encoder functions if they want.

1 Like

If only half of these apps and settings were available on Android TV. Definitely worth setting up as backup on mobile at least.

Appreciated. Yes, same as mine: Plays fine on JF but not on Plex (ONN GTV). BTW I transcoded all samples using SVT-AV1 and they all play fine everywhere, which was expected, but good to know.

Agreed. However I think the fault lies more with the AV1 decoders, less with encoders. It is too easy to create files that decoders are apparently not supporting. Clear documentation and bulletproof profiles could have also helped prevent widespread issues.

Maybe these problems are only temporary. SVT-AV1-PSY and new Google AV1 devices gave me hope, but once again AV1 seems perpetually “a year away” from being awesome.

That said, whatever the Jellyfin team is doing with AV1 support (on Android TV) is magical and should be studied. They’ve made it work. Hopefully Plex and others will get there soon enough.

Yeah, compatibility can change. The mpv-android app shows as “not available” for my Shield Pro now, but I had it installed on it in the past. Findroid tried an Android TV interface and experimental AV1 support once (ver. 0.7 I think, I still have the apk for it). But it got removed the next release.

Using mpv as a backend is not a real 100% solution because mpv is heavier than other players. That 4K AV1 sample of Blade Runner 2049 you have plays fine on my phone using mpv as external player for Plex, but then I tried playing my own copy of the movie (which is a remux of my 1080p bluray). I got a slight hiccup in playback every 3 seconds. I assume it’s from handing a full size remux stream (32 Mbps for video+audio). I changed back to the normal Exoplayer engine and playback was smooth.

1 Like

Interesting read. I am having a similar problem with an Onn TV 4K Pro streaming box that I am discussing in the following thread:

The problem is present in both the Plex and Channels apps, but not in the VLC app. The problem doesn’t happen on my Nvidia Shield, Apple TV, FireTV Cube, phones (both iOS 18 and Android 14), or web players in Edge running on Windows 11. Nvidia Shield is on Android 11 though, while Onn TV 4K Pro is on Android TV OS 12.

Via looking at info about the problematic videos in MediaInfo, I have narrowed down that the problematic videos are interlaced, while working videos are progressive. Transcoding fixes the problem (makes sense since it changes the format). Additionally turning on Software decoder in the Channels app also fixes the problem. Not sure if there is a similar option in the Plex app. Since it works with the Software decoder, I have narrowed down the problem with something with the hardware decoder on the Onn TV 4K Pro box not properly decoding interlaced videos. Interesting to read that it might be related to the backend software used by newer versions of Android. Unfortunately, I don’t have any other Android TV/Google TV boxes with Android TV OS 12 or newer to test with.

1 Like

I think that’s basically how the Plex team thinks about it. Transcoding will “fix” most issues for now. Testing and updating to perfectly Direct Play everything on every device takes time.

Unfortunately not on Android TV, there is only an “external player” mode on mobile. I would love to see software decoding on Plex for Android TV (this is probably what allows JF to play everything fine without transcoding). But again I think they view transcoding as their solution. I’ve always tried to avoid it (wasteful, inefficient, not ideal for some servers). My goal is to use a device that directly plays everything.

I’m hoping the AV1 problems are due to Plex’s Android TV config shared across all devices, which will be fixed with Plex updates. Maybe the interlacing problems are related, or even more easily fixed.

I agree. My ideal situation is that I am direct playing everything, both in Plex and in Channels. Forcing transcoding was just part of my troubleshooting process. I call it a workaround, but definitely not a fix or long-term solution. In fact, forcing transcoding has brought on some new unrelated issues, so I definitely don’t want to use it long term.

1 Like

I do have an interesting update. I also had an older Onn TV 4K (non-Pro) device laying around. I assumed it would have the same issue, but I decided to test anyways. To my surprise, the non-Pro version worked with the “bad” videos and didn’t have the issue, either in Plex or Channels! I checked versions between the two, and the Android TV OS version, the Android TV OS security patch level, Kernel version, and Android TV OS build are all the same between the two devices. App versions were also the same. In my case, this really seems to be pointing to something wrong with the hardware decoder on the Pro model. Next I am going to compare hardware components between the two devices to see what’s different.

1 Like

You can use Kodi and the PM4K add-on. That would play using Kodi’s player, which is a “full” player with its own software decoding support. I use it to direct play standard-def AV1 files on my Shield.

1 Like

Cross posting over here just for FYI:

Onn 4K:
CPU: Quad-core Cortex-A35 (Amlogic S905Y4)
GPU: Mali-G31 MP2
RAM: 2GB

Onn 4K Pro:
CPU: Quad-core Cortex-A 55 (Amlogic S905X4)
GPU: Mali-G31 MP2
RAM: 3GB

Different CPUs, but same GPU. I was almost expecting different GPUs with the hardware decoding issues I am seeing. Pro version also has more RAM which usually means LESS issues, not more issues.

1 Like

:thinking: You mean your interlaced videos? I guess this is good news that some of these issues are just bugs that need squashing, and the Pro is a fairly new device.

Thank you for reminding me to try this. Haven’t used Kodi in a while. Although I may wait until Jellyfin gives me problems (none so far, but UI could be improved).

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