If you’re planning to use different watermarks for each viewer then you should understand that transcoding itself is a very CPU-heavy thing.
So basically what you can do is to use ffmpeg to pre-transcode videos for later playback.
I sometimes do things like that for my clients, however this way has own disadvantages, like more load on HDD (because it has to keep many files (each for certain viewer) instead of 1 file)