The rendering is 100% done with the WebCodecs API, so it runs completely on the frontend. I was using WXT as a chrome extension development framework and MediaBunny for a wrapper above WebCodecs and I absolutely recommend both of them. Saved me a ton of time.