[Feature Request] Forced Subtitle burning: Frame-Based / partial transcoding

We all hate it when selecting a forced subtitle with maybe 10 rows of text causes transcoding the whole movie. But why does Plex not burn-in subtitles only if the need to be displayed?

A) One idea would be to switch between Direct Play/Stream and Transcoding only if the subtitle needs to be displayed in specific frames. As the movie is loaded in chunks this does not sound like an impossible task for me.

or

B) To avoid buffering for non-hardware-accelerated / low-power servers it could be done x seconds/minutes in advance through a parallel running transcoding process while the movie plays and the direct stream uses this prepared “video stream frames package” instead of the original frames.

or (my favorite)

C) It is done through offline transcoding similar to the Video Preview Thumbnails, so live transcoding isn’t needed at all. To realize this, the movie is splitted (key-frame = no quality loss) into multiple MKV files, where subtitles are needed. Those parts now get their burned-in subtitles. By that we have a simple multiple-parts movie which can be streamed without any transcoding. In this example “002.mkv” and “004.mkv” would be ignored while playing the movie, if the user selected German Forced Subtitles:
Movie (1989) 001.mkv
M̶o̶v̶i̶e̶ ̶(̶1̶9̶8̶9̶)̶ ̶0̶0̶2̶.̶m̶k̶v̶
Movie (1989) 002.de.forced.mkv
Movie (1989) 003.mkv
M̶o̶v̶i̶e̶ ̶(̶1̶9̶8̶9̶)̶ ̶0̶0̶4̶.̶m̶k̶v̶
Movie (1989) 004.de.forced.mkv
Movie (1989) 005.mkv

Of course this would not be a good solution for Regular Subtitles, but with <100 text lines of Forced Subtitles in a whole movie this would save a lot of CPU power. And it would be much more eco-friendly.

plex (currently) does not/cannot switch between direct play/direct stream, to transcoding in the middle of a movie.

in other words, if something starts out direct play/stream, it stays that way.

that is why ‘automatically adjust quality’ only works when a video starts out transcoding.

whether or not it is technically feasible, or even would be implemented if is possible, is something only plex knows.

fwiw, its a nice idea

I split my Feature Request into three approaches to solves this. I hope its more clear now. Switching between Direct Stream and Transcoding is only one approach.

Honestly I don’t see any of that ‘saves energy’, it simply changes the time when that energy is used.

The more I think about it, when transcoding is done, it is done on the fly, because of varying client capabilities/configurations, and how much bandwidth is available for the number of streams playing at the same time.

If you want to save energy to avoid transcoding on local streaming, then get a client which supports the subtitles you use without transcoding at all.

Finally, it would have to be a very low powered server to not be able to transcode x264, however if you are talking about transcoding 4k, then again I have to suggest that you are doing it wrong and need to get a client that can direct play with subtitles.

Then I did not explained my idea very well. The idea is to use the original video file as Direct Stream in both situations (with or without subtitle). But if you want forced subtitles it will transcode only position 01:23 - 01:25 where the forced subtitles are displayed (in a parallel running process). If the movie has a length of two hours and around 10 text lines of forced subtitles you won’t transcode for 99% of the time.

I know how to solve it today. My clients run perfectly with SRT subtitles. But some people do not want to use/buy specific client hardware and of course the feature request would supersede exporting subtitles, too.

1 Like

+1 would be a smart feature