Why am I back on this idea? Swear trying to build a live streaming site is my Moby Dick
Ok relax. I’m only half thinking of doing it. A reddit post nerdsniped me, I turned that into a post, I then posted a teaser of that to Instagram, and off the back of that I’ve had a theoretical natter..
Nerd alert! This is a bit of a technical ramble.
Have a look at the Easy Reading tag for writing a little less tech
Then I looked up some pricing. Lets say your streaming service is going to be dedicated to just one streamer. Terrible idea I know, but just as a base line.
Your streamer isn’t quite at the full time stage, they stream 4 times a week for 3 hours a stream. For the sake of argument lets call this our average. I realise there’s a million people who have only done one stream pulling the numbers down but just bear with, it honestly doesn’t matter.
In this entire article we assume that your developers are working for free. Please remember to pay your developers.
Outsource the hard part
A great idea if you’ve got deep pockets is to outsource as many of your moving parts as you can. For a live streaming service your big win is going to be the video bit. I’ve never used, but have come to browse their offerings many times hunting this whale, mux.com. These guys are essentially a backend service for VOD and livestreaming.
We’re going to be generous in our numbers because that also covers short term growth and other averages. Lets say our streamer has, on average, 100 viewers. They don’t all stick around for the entire thing but we’ll assume other people come in to replace the losses. It’s a nice round number, alright?
- 3 hours per stream
- 16 streams per month
- 500 monthly view count (instantly discarded the “let’s say” number..)
- 100% of the stream
“Ask us about enterprise” gulp.. oh I didn’t change the view count from 75,000..
Ok so that would cost us an estimated $327.24 per month. One streamer. We need to bring that cost down or our income (currently: $0/month) up. If we look at bringing in additional income then that needs to scale with the amount of streamers we get. At the very least the top of the streamers need to help the bottom of the viewcounts break even or we’re out of business immediately.
For the sake of this article lets instead look at bringing the cost down
Do it yourself
Why don’t you just set up your servers to handle ingesting livestreams and then broadcast said video stream to potentially millions of people? Easy enough right?
Of course it’s not, but we’ll manage. Also lets temper expectations, we’re not going to see a million viewers on a single stream. At least not to start with. Relax.
To do it yourself that one streamer could probably be handled with a $5/mo DigitalOcean box and a $50 credit deposit in BunnyCDN. In this scenario you’re paying with time instead of money so I hope you’ve got no weekend plans.
The only problem there is you’re not going to be spinning up a server per livestream are you? I mean you might… naw you’d have to make people pre-schedule their livestream so you could make sure you had a server ready.
Where was I? Alright so you need a pretty beefy server with some decent bandwidth, plus CDN. That sounds like a job for our pals over in France. You can cut further costs here by renting VPS as we would have with DigitalOcean but video just.. feels.. like a hardware thing, you know what I mean? Lets go dedicated.
Some of you boffins out there might suggest renting a server with a GPU in it around now. Unfortunately they’re prohibitively expensive and the heavy lifting is on the encoding side rather than the decoding side anyway, as far as I know ffmpeg still only uses GPU to decode.
Wait.. France? Why did you say France earlier? Because of OVH and Online.net (Now Scaleway). They do arguably the cheapest servers with the most generous bandwidth policies.
At OVH you can get yourself a nice basic server that’ll do us around 100 streams at once for $50 to a couple of hundred $ a month. While not much cheaper than our mux pricing bear in mind that’s now saving $200*100 if we can get 100 streams out of the one machine.
Why 100? Because we’re only looking at a single gigabit pipe at the moment. Our ingest at Twitch’s max (6000kbps) will take around 60% of our available bandwidth which leaves us enough to play around with for getting our data back out to the CDN and also allows for odd network congestion spikes and whatnot.
You might also note we’re doing all of this off one server. If this server goes offline, our entire livestreaming site goes offline. I’ll let you cost out a full system to handle this reliably, it’s what scares me off every time!
To be continued..
This brain dump may never be complete, I’ll ping any updates to my monthly mail list if you’re interested in hearing more.