Objective:
Building a streaming media system is a nice thing to have, but isn’t a good solution for everyone. It requires some knowledge regarding computer systems and networks along with some system planning. You can throw this together and it will work for a while, but once problems are encountered, they will be hard to recover from and likely aggravate the maintainer of the system. This can be avoided with some planning and preparation.
Common issues encountered when building a media streaming system, based on personal experience and information gathered from various sources are, but not limited to:
- Streaming performance
- Connectivity between all the components
- Storage Requirements
- Folder that make sense
- Easily Readable Naming Conventions
- What components to use
As a result of known issues, the planning and validation must come before the purchase of equipment and implementation of the final system. This way the interoperability of components can be validated, concepts of operations and service delivery can be verified, and tweaks can be easily made without impact to service consumers. This post covers some of the research done to see what’s required to build a media streaming system. The goals for this system is:
- Ability to stream media to any smart device or computer in my home or any mobile device while on the road
- Can access and pull my media effectively
- Easy access control
Potential Solutions:
The list of potential solutions is not long. When searching for self hosting a media streaming server, it was obvious the below solutions are fairly common and designed with the user in mind. All the components below are key and what they do is elaborated on in the next sections.
- Server System
- Network Attached Storage | TrueNAS | https://www.truenas.com/
- Usenet | Supernews | www.supernews.com
- Binary News Reader | sabnzbd | www.sabnzbd.org
- PVR | Couch Potato | www.couchpota.to
- PVR | Sonarr | www.sonarr.tv
- Streaming | Plex | www.plex.tv
- Indexer | nzbgeek | nzbgeek.info
Licensing / Subscription Considerations:
Some of the components above require some type of subscription to access what they provide. The only one without a lifetime subscription is SuperNews. Both nzbGeek and Plex offer a monthly subscription, but if you have the cash on hand it makes more sense to purchase the lifetime license at a one time cost. Both services have been around for a long time and have not let me down in all previous install of a media streaming setup.
- Subscription | SuperNews | 11.99/mo
- Subscription | nzbgeek | Lifetime available
- Subscription | Plex | Lifetime available
What the components do:
- Server System: This is the hardware or virtual system used to host the components necessary to find, pull, decode, and host the media you plan to stream. The quality of hardware you will want is based on what you expect the system to do. The list of what it can do is completely resting on your expectations at this point. Everything from a single user only streaming home videos up to a production grade system for 100’s of users is possible, although the later is unlikely.
- Storage Solution: Storage is key. It can be too slow or not enough. Both are fairly common mistakes. The most common issue is running out of storage. Media, at 4k resolution, takes a lot of storage relative to 1080p. If you don’t scale to meet the requirement, you will quickly realize that 10Tb of storage isn’t going to cut it. Also, if you plan to have several users streaming 4k video, a simple NAS processor and 5200 spin disks are going to let you down. Use case is critical to capacity planning.
- Usenet System: What Usenet system do you expect to use? This is one of many options to pull data. The media you host on your system should only be media you are authorized access too or have purchase yourself. However, for public media a usenet system is good. Just keep an eye out for how long media is kept live, and how much you can pull per period of time. Most usenets go with xGB per Month.
- Indexer: Indexers help make sense of everything that out there on the Usenet. Sadly, you don’t log into the usenet and look at a list of media available on there. You need an indexer to figure it out. In most cases, you won’t directly interact with your indexer either. The PVR systems do.
- PVR System: This is the tool that will hit major media DB’s to identify all the media out there, you select what you would like and the PVR issues the request to the rest of the system to take action on.
- Streaming: This is the primary user interface for all consumer of the media once it’s available in storage and the streaming system picks it up.
General Architecture:
With all the previous information in mind, here is a simple picture showing how it all interacts. This picture assumes your PVR’s are Sonnar and Radarr and everything is running on one computer. Currently, the final solution isn’t identified but the test system will be similar to this minus the PVR’s.
Next Steps:
The next steps are to setup a streaming media test system, and validate it works as assumed, based on the documentation reviewed and loose memories of past experiences. That will be covered in part two, and will more then likely use the pieces noted above. Until then.