"Chromecast only supports a handful of subtitle formats, .srt not included. But it does support WebVTT. So we extract whatever subtitles are in your video, convert them to WebVTT, and then reattach them to the video through Chomecast's API."
>If media codecs are supported by your Chromecast device, VLC only acts as a streaming server (which is battery consuming). If not, VLC will transcode and stream media, which is highly cpu and battery consuming.
i actually wrote this to transcode on the fly (if you look at the code there's "wait_for_byte" etc), but there are certain limitations i discovered. mp4 files have what's called a "MOOV atom" which is a descriptor stored at either the beginning or the end of the file. but you can only write it once you're completed transcoding. so that pretty much kills it for mp4. vlc uses webm which doesn't have this limit, but you can't put a h264 stream in a webm container, so you HAVE to transcode it to V8, which is slow as balls. (0.1x in my testing, tho you can force 1x if you accept lower quality.) considering almost no one has media in V8, i decided to opt for mp4. but it works if you switch it back to v8+webm.
Plex works on Linux/windows/OS X and does transcoding and subtitles, but I don’t know if it can directly cast from the PC or if you have to also run a client on your phone to start the the cast.
i haven't tried, but you're right in theory very possible. i'm really a fan of OS specific GUIs tho - i'd advise someone use the same underlying python casting API to write a native windows frontend.