Coming from an off-topic post on Killing PMP per request of @DaveBinM
This is a long standing issue with the Android TV app on Nvidia SHIELD TV (the android app in general actually, as this also affects mobile, but as they generally have less capable hardware decoders there is more of an excuse).
When playing certain video files (mostly fansubbed anime or Japanese TV in my case) with complex ASS subtitles, be they embedded or external, one of two things will happen depending on how the client is configured:
-
(Burn in subs set to Auto or Always) The server will transcode and burn the subs into the stream. This absolutely murders quality and stutters like crazy in many cases - possibly due to the codecs typically used in this scene - to the point of being unwatcheable, even with a 720p or lower resolution file.
-
(Burn in subs set to “Image Formats Only”) It will direct play and the video stream will be fine, but all the formatting of the subtitles are lost and only plain text is displayed, which becomes unreadable when the subs contain multiple lines intended to be placed in different parts of the screen (eg, during an opening song where both a transliteration and translation of the lyrics are displayed, often at top and bottom).
The way the server is configured for transcoding makes no difference. I have a reasonably powerful server (i7 4790K) with a good cooling solution and this occurs regardless of what setting I use (I usually have it at “make my CPU hurt”). Hardware transcoding via a Nvidia GT730 is the same or worse. This appears to be a client-side problem with whatever backend player the Plex app is using not being able to handle these subs correctly.
As a result, I use Kodi for Android and the Plex add-on for all my local streaming to the Shield which direct plays everything perfectly while rendering even complex ASS subs correctly, up to and including karaoke stuff. But as that add-on won’t be maintained going forward, I’m a little worried it’ll just stop working at some point.
For an example of what I mean, here are some screenshots taken directly from my Shield during playback of the same file:
The first is with sub burn in set to Auto - It renders the subs correctly, but is transcoding (lol at that quality - it stutters like crazy too as a bonus)
The second is with sub burn in set to Image Formats Only - It direct plays, but the subs are only rendered in plain text and are unreadable due to multple lines being mashed together (see here its only rendering a credit line, the lyrics kind of flash in and out or are mashed together seemingly at random)
The third is via the Kodi Plex Add-on - Directly play, original quality, correctly rendered subs
Here is the media info Plex spits out for the file itself:
Media
Duration 24:26 Bitrate 549 kbps Width 1280 Height 720 Aspect Ratio 1.78 Video Resolution 720p Container MKV Video Frame Rate 24p Audio Profile he-aac Video Profile high
Part
Duration 24:26 File Polar Bear's Cafe - S01E02 - Everyone's Café _ The Café's Flower Viewing Party.mkv Size 98.09 MB Audio Profile he-aac Container MKV Video Profile high Codec H264 Bitrate 482 kbps Language English Bit Depth 8 Chroma Location left Chroma Subsampling 4:2:0 Frame Rate 23.976 fps Height 720 Level 4.0 Profile high Ref Frames 6 Scan Type progressive Width 1280 Display Title 720p (H.264) Codec AAC Channels 2 Bitrate 64 kbps Language 日本語 Audio Channel Layout stereo Profile he-aac Sampling Rate 48000 Hz Title Japanese audio Display Title 日本語 (HE-AAC Stereo) Codec ASS Bitrate 3 kbps Language English Title English styled subtitles Display Title English (ASS)
This is one of my most egregious examples, probably due to how compressed the file is to begin with, but it happens with most of my ASS/SSA subtitled stuff.
I’m fairly sure there’s nothing to do configuration wise on my client and server and I spent a couple of weeks screwing around with it, going through old threads here and trying various solutions. But I thought I’d least report it and see if anybody has any new ideas or if maybe there is going to be some work done in moving a different backend on Android or giving the user a way to choose their own or something.