Playing Local Media with a Roku Streaming Stick
We're primarily a Kodi household, with OSMC on Raspberry Pis playing content from a modest, and locally hosted collection of digital media. This collection is exposed to Kodi via http, requiring nothing more special than a web-server (my NAS) with directory listings enabled.
However, I've been gifted a Roku 3810EU and wanted to play around with using that a bit.
It's been a good few years since I last played with a Roku (we had one to help with monitoring and testing a few jobs back), but the interface feels as accessible as it did then.
For those not familiar: Roku use the term "channels" to refer to what might more colloquially be referred to as apps and their store contains a wide range of possible channels providing access to OTT content: everything from Amazon Prime Video to Rakuten TV.
The problem, though, is that the Roku is (understandably) very much focused on playing remote streams and I've got a local media collection that I'd like to access.
Roku's store includes a channel (Roku Media Player) which allows playback of local content, but playback of LAN hosted media relies on DLNA, meaning that my simple HTTP server isn't compatible on it's own.
There are solutions (such as Plex) which could be used to provide DLNA support, but I didn't really want to have to stand up an additional service just so that the Roku could play content from a source that our existing media boxes handle fine.
Thankfully, there wasn't actually a need to do so, as those existing boxes are the key: Kodi can be configured to expose its media library to other players via DLNA.
This post describes the (easy) process I followed to configure an OSMC box to act as a DLNA server, allowing playback on the Roku.
Kodi: Enabling DLNA
Kodi's configuration tends to refer to DLNA as UPnP (DLNA is a UPnP A/V derivative). Although the two aren't the same, Kodi's support meets our needs (it might even be that the naming's misleading and Kodi have actually implemented DLNA rather than UPnP A/V, I haven't checked).
Enabling is pretty simple, going to Settings
-> Services
-> DLNA/UPnP
should bring you to a screen like this (exactly how it looks will depend on the skin you have enabled)
DLNA can then be enabled by turning on the following options
Enabled UPnP support
Share my libraries
With that simple change made, it's now just a case of configuring the Roku
Roku: Finding the Channel
Apparently, some models already have Roku Media Player
installed on them, so it's worth taking a quick scan through the home page to see if it's there (if the Roku's new, this is also a good opportunity to clear out any channels that you're not actually going to want).
Select Streaming Channels
to enter the store, then choose Search Channels
.
Enter Media
as a search term, and Roku Media Player
should be listed. Move across and into it by navigating right, you should then be presented with the option Add Channel
.
When you enter the channel you're prompted with a choice of Media Types, choose Video
and you should be presented with a list of the available DLNA sources
(We use a HDHomeRun device to make Freeview available around the house without needing to run aerial cables, that it's shown up in the list is an unexpected bonus).
Browse into your Kodi source and you should be presented with the choices Music Library
and Video Library
. Clicking into Video Library
will then present Movies
, TV Shows
, these in turn then present categorisation choices: Genre
, Title
, Year
, Actors
etc.
Browse to a video and you should find you're able to play it back.
I was surprised, but pleased, to find that the Roku also provides access to media that hasn't been scanned into Kodi's library - the stuff you'd normally find by going to Files
in Kodi's interface.
Load on Kodi
Playback via DLNA doesn't seem to result in much RAM or CPU usage on Kodi's end.
The box I chose to use is a Raspberry Pi 3 Model B, so has a quad core processor and 1GB of RAM. It seems to be able to support both local and DLNA playback at the same time.
That being said, to reduce the likelihood of conflict, I still deliberately chose a Pi that is unlikely to be used at the same time as the Roku.
Drawbacks and Limitations
This setup isn't without it's issues:
Navigation
As the above section implies, navigation within Roku Media Player
verges on the arcane, you have to work down through multiple layers of menu to actually reach the point of watching something. You can work through it pretty quickly, but it does make switching from movies to TV shows somethings of a pain.
Content Suitability
For those with kids, there's another (less obvious) constraint.
If you've got multiple Kodi boxes, think carefully about which one you set up as the DLNA server.
Kodi doesn't expose a way to restrict what devices can play back via it, so if you enable DLNA on a Kodi box that has access to more mature content (like porn), not only will that content become available to any DLNA supporting device on your LAN, but those devices might actively suggest adding the Kodi box as a media source.
Supported Formats
The Roku only supports playing the following video formats:
Kodi does not transcode the media that it's streaming, so if you've got media stored that isn't in one of the (quite broad) range of supported formats, it won't play.
Conclusion
Once you know where to look, getting up and running doesn't take very long at all.
Unfortunately, the interface provided by Roku's Media Player isn't great, so navigation is a bit of a let down. This could be simplified if there were a way to add shortcuts to locations within the app to the Roku's home screen, but if that capability exists, I've not been able to it.
The main thing though, is that it does allow playback, so I can now watch old shows on an older TV without needing to contend with the supply chain issues currently affecting Raspberry Pi's and without letting quite a nice gift go to waste.