Hopefully this is the right kind of question for this community, my apologies if not.
I'm looking for some sort of device that will let me load my own media from a USB / SD card, and play it to my TV. Does such a device exist? Some sort of remote controlled box that can just load mp4 / mkv files from locally hosted storage? I have been using my PC over HDMI but it can get annoying having an awkward room layout because my computer always has to be next to the TV to do this.
It can be a bit overkill for your use case if you only need to stream the USB media on your tv, but take a look at Jellyfin, it's a program you can install on any PC and as long as this is up and running on the same network you can access your media on that PC (in your case with the USB plugged in) from any other device (TV, other PCs, Tablets, smartphones)
Like kylian said: Kodi.
You can install it even on an android device (like a firestick) or you can go for some distro giving an out of the box good experience like LibreELEC.
I suggest to avoid the temptation to get one of the many cheap Android boxen meant for media playback from Ali Express or the like, as they have a strong tendency to be heavily loaded with malware. Definitely not all of them, but it's really hard to tell which specific one you'll get.
There are a lot of tiny PCs these days that can output 4k video and audio. Look for something with an N100 or N200 CPU if you want to go as cheap as possible, they tend to be super-cheap and perform well. I've got one of the GMTecs and this wireless keyboard+mouse, works really well from the couch.
My solution is a bit old school: A raspberry pi connected to my network and running miniDLNA. It has an externally powered USB hard drive. My TV runs Android and I have VLC installed. Any DLNA client works including Xbox and mobile phone apps too.
I don't think mini DLNA is even updated anymore so eventually my solution might stop working but it's been running solid for 10 years
Just a note, the orange pi drivers are not in great shape. It’s getting better but I have a cluster of raspberry pi’s for development, bought an orange pi without first checking out much about them and it’s rough. Rockchip CPUs are great, and the driver / firmware situation is getting better, but something I’d read up on before buying one.
I’d still look at the N100, it’s about 2.5x the performance of raspberry pi 5, and being x86 you have more options than arm.
Maybe get a reputable one, the other ones are sadly malware infected in way to many cases. It's a way for the manufacturer to make an extra buck from the sale.
Most TVs these days have a USB port for exactly this purpose, you can load media files up onto a flash drive and plug it in, then you should be able to browse the files and play it from there.
However, if you want to be able to play files hosted on your PC without having to copy them to a drive, you would have to set up a media server like Jellyfin on your PC and either buy or build a compatibility for your TV. Fire TV sticks or a Chromecast would work as cheap options to buy, or you could look into hosting a Kodi instance if you have spare hardware lying around.
There are really a ton of options, my above suggestions are only scratching the surface.
My TV is a dumb TV (for lack of a better name). It does have a USB port, but it only displays photos and can't play external footage. I keep all of my downloaded media on an external HDD. I did look into the whole XBMC aka Kodi / jellyfin combo stuff for a bit.
Jellyfin on a NAS plus a cheap little box attached to the TV should be fine.
An old RPi3 could be enough. Only complications might be transcoding. If the player can't handle the format, you might need to transcode, which could be taxing on the NAS.
Let's not overcomplicate things. OP expressly wants a device that will play media off a USB drive. That's basically Kodi on a mini PC or single board computer, as many others have suggested — or like you say, plug the USB directly in your TV. No need for "hosting" anything or other server lingo.
And "a Kodi instance"? It's just an installation on a local device, it's not like it's going to federate or anything... Sorry if this is nitpicking, your second paragraph phrasing just feels like an unnecessarily advanced answer to a simple question.
I've been using a Zidoo Z9X for streaming local media. Not cheap, but very powerful and has a huge amount of features. It'll play just about anything you throw at it, all locally.
Now you make me feel old. In "the olden days" before streaming of media over the internet was as commonplace as it was now, that was the standard way that tech-savy people consumed media: Either on their PC or with some set-top box with built-in storage. I fondly remember my PopcornHour, which was basically a line of desktop-boxes that ranged from "basically a hard disk, video decoder and HDMI out" all the way to "can automatically rip your BlueRays".