What we presently have is a less-than-perfect system. The problem with going the burn-in route as I see it is:
- When a user requests closed captions in their client, the client needs to notify the server that CCs need to be activated
- The server needs to change its transcode process to:
- Decode the video and extract CCs
- Render the CCs on to each decoded frame
- Encode the newly rendered frame
- The server needs to now feed this new transcoded stream to the requesting client.
That's a lot of overhead, over-engineering, and working around limitations of a small segment of use-cases, when 2 solutions already exist:
- Switch the DVR to use software transcoding, which preserves the CCs correctly
- Use the Original stream quality, which makes this entire situation moot (and if you are not using the Tuner sharing option, cuts down on bandwidth, because the stream goes directly from the tuner to your device and bypasses the DVR server completely)
Maybe I'm misunderstanding things, but this is how I see it. But working around limitations of older hardware seems like a poor use of resources when other fixes are already available. Also, the gymnastics required of the DVR server to switch its streams on the fly each time a CC request is made is crazy.
Other side effects of your burn-in proposal:
- The live buffer is local to the device, so CCs can only be activated from "now", and won't be present for any previous content
- The burn-in becomes the video, so when rewinding, there is no way to disable if the text obscured something on the screen you wanted to see by going back
These are just my opinions and how I see the situation, but I think the idea of a simple burn-in option is anything but.
Addendum: Also, while Ffmpeg can take the CCs out and re-encode them into SubRip (SRT) format, last time I looked into that a couple years ago it was a 2-stage process that was hardly trivial. And, because of the nature of how CCs are encoded, their text and positioning can change, nor are they necessarily encoded linearly.