Hi everyone.
Wonder if anyone has the answer here, I’ve got a 4k movie on my sever, that does have hardware encoding available via GPU
When I try to play this on my TV ( lg oled ) at 8mbps. ( Yes I can play this direct play without issue however this is testing for when I’m remote or my family want to watch )
It burns the subtitles and causes buffering
You can see my transcode speed is terrible,
When I do the same thing on my Nvidia shield at 8mbps , I can see the srt subs get converted to .ass and that seems to work great, conversation speed in the 4.6-6.0 range
Why is this ?? And why doesn’t the TV app just do the same as the shield ?
Because there are worlds between the playback abilities of the Shield and any “Smart TV”.
In your case, the transcoding is triggered because you have both subtitles and an audio track that needs transcoding.
You might have better luck if your file contained a basic AAC stereo audio track. (additionally to the surround audio stream)
Ok no problem, second question, is there a reason it can’t use the GPU for transcoding ?
It does use the GPU. Both your screenshots show (HW).
Right so, why on the TV is it unwatchable… it transcodes at 0.1-0.8 , this is with a 1080ti btw . If I turn off subs it transcodes at 7.0
Burning in of subtitles cannot be performed by the GPU. This needs to be done in software. And the CPU of the Shield has already enough on its plate with transcoding the audio stream.
As I said, things might improve if you supply a generic AAC stereo audio stream, so the audio trancoding can be avoided.
It doesn’t hurt to try with one or 2 files first.
You might wanna get some tools:
Ah right , so the CPU of my server is dealing with the burning of the subtitles and that’s what is causing the issue ?
I understand, thanks for the clarification.
Just to further get a better understanding, if a video transcode is triggered does that audio have to transcode as well ?
My TV does support EAC-3 as when it direct plays it’s fine .
How is that done ,
I wish there was a way to get Plex to force transcode subtitles , for me it’s burning SRT subs which means my GPU isn’t really being utilized.
My TV burns in the subs but me shield transcodes them to .ass. which works much better
What works for the Shield doesn’t necessarily work for your TV.
Yea I get there different, but how’s it possible they can both direct play the file ( which means they support everything the file has right )
But when it comes to a transcode they both so radically different things, so much so that on the TV it’s unusable.
When it transcodes the subs I get speeds of 6.0 out of the transcoder, when it burns then in it’s at 0.6. that can’t be right can it
It look at it differently then. Why does the Nvidia shield transcode the subtitles when it supports STR ?
When burning subtitles, Plex does the following for each video frame:
- HW decode the frame
- Add the subtitles to the frame using the CPU
- HW encode the frame
Adding the subtitles is CPU intensive. When using text subtitles, the CPU creates an image of the text, then merges that image into the video frame.
That is why burning subtitles is a slower process than just a straight hardware decode/encode of the video.
To provide some more info, if the video needs to be transcoded for some reason, it will automatically burn in the subtitles. Or if subtitles can’t be direct played and need to be burned, the video will also transcode. You’ll need to look to see which is causing the transcode. Best way is looking at the logs. Enable logging in the TV app, which sends the info to your server. Then provide your server logs.
Ok I think I understand then ,
So let’s say someone streams this movie from my server with subtitles ( they’ll have to transcode due to bandwidth limitations ) , then the subs will be burnt in.
I guess my last question is why do the burn in subs when it’s possible to transcode the subs as seen by the shield ?
The Shield is able to play subtitles embedded into the HLS stream (that’s the protocol used when a video cannot be direct played). Most Smart TV’s cannot do the same thing. They only support audio and video in the HLS stream, so the only way to get the subtitle in there is to burn it into the video.
This goes back to Otto’s suggestion of including a supported audio in your file, this way the file can be direct played and HLS is not needed. Transcoded subtitles can be used with direct play.
1 Like
Sorry to keep bugging you all on this but ;
Out of curiosity I tried out jellyfin ( just to see how it would react ) and it does seem to do much better .
This image is from my phone played using jellyfin app
Is there no way to get Plex to react the same way ? As you can see from the FPS it’s using my GPU for transcoding and the subtitles are on and not being burnt in
This next image is played from the web browser on the same TV I’m using Plex on
:
You can see it transcodes the video down but is direct playing the audio .
So my Second question is , if I decide to transcode down to 10mbps is there a way to leave the audio untouched ? So that direct streams ? Like jellyfin is doing
In all these examples SRT subs are active.
I know Plex is very different to jellyfin but it just seems there’s an issue here that could be resolved
I don’t know what Jellyfin does so I can’t say why their app works differently.
You can see it transcodes the video down but is direct playing the audio .
Plex will direct stream the audio if it’s supported. If it works with direct play, it should work with transcoding the audio too. Would need to see logs from the TV why it wants aac.
For the Shield, it only supports EAC3 for passthrough. Do you have it connected to a receiver that supports EAC3?