It has a native macOS companion app that instantly finds your TVs with Kino installed on your network, pairs securely and lets you upload to the TV or download the videos back into your mac and stream the files from the TV into your mac. If you don't have a mac it does offer a WebUI.
The TV app can play the videos, supports subtitles(both embedded into the video container and as separate files like .srt) and remembers the last playback location of the videos so you can continue watch them later from where you left.
It supports seamlessly switching from watching the videos on the TV to streaming them from the macOS app and back again. I made a short video demonstrating that: https://www.youtube.com/watch?v=IECSIlrNBDw
The macOS app is still in review, so not yet on the App Store, but you can download it from the website(it is notarized, should run with no problems): https://appwared.com/apps/kino
The app(both the TV app and the macOS companion app) doesn't collect any data(beyond what Apple or Google may collect in their systems), its completely private.
I made this app for myself and then decided to publish it and see what happens, so feedback is greatly appreciated. I had access to just one TV, so I'm sure you will be able to find bugs, apologies.
You can download and use it for free but it has 10 video limit and asks you for a one time purchase to remove the limit but I find that the free limit is good enough for most casual use.
Oh almost forgot, the API of the TV app is completely open and documented and can be viewed on http://TVIPADDRESS:PORT (the Web UI url sans-/web). It can be used to do things like automatically moving the downloaded to the TV storage etc.
I find it very useful for my use cases and I hope you like it too. If you do, can you please support it on producthunt: https://www.producthunt.com/posts/kino-your-tv-becomes-a-med...
Here's some promo codes that can be used to upgrade to the full version for free:
JP5HKCSGKEU60GFHGYBHWLU QF7MRAQQNUFMS3TJ08JFXBB X6MEL8Y8BQBNGF12T4S5X6A C0M7FUWF8QKU54RE8Z4LH63 K5GE2MSZMYVA2EX13LV3CKV XD08EAZ6YSPM0H0YW2F1JCF DHQB3ZDXM5X4F9T0RN6XJJ7 5FBCSLXUZK7KYXVDD69GPVK KKEDRFVP8J92Q1ER1DKLJJV ELQ6D1WKUZNUL8PQ11RLK9B E82BDAQD703WXA41990RYBY 97PSQVGB2C0U181YJFCF42R GR5FN0ZM87LZ55UFMQ4JQ2S R2EFC0FN0GUWAGF8BSREK01 NNLBY4MV2J2H4LECXP2HJMU B4328WWZW0XWG78RYZCM7EQ G81F1F1CSDNYVHHHQ12XN86 C784YTSH6NDXRBD7GCQHJ3Z GSSFUFLXDSF93R6BWUU98WT 5P6WURXGNG2GZ93C0UQ2GNR