I've got to host and serve videos on demand at my job. Any ideas?

20 points by httpsterio ↗ HN
So, to briefly summarize my situation:

I'm the only tech person employed in a non-tech company in a strictly non-tech business area. Under my guidance we've started to branch our business into web educational content, selling online courses and webinars.

It's all been fine and dandy, our experiments have shown that it's worth continuing but now I got to figure out how we're going to host our video content and serve it. Previously we just used private YouTube embeds in our customer-facing LMS, but with the ads on YouTube, the user experience could be better. I'm also not 100% sure it's according to YouTube's TOS.

We would've used Vimeo, but their new plans are simply not viable. The monthly video upload limits are too limiting and while we won't hit the 2TB monthly transfer bandwidth now, it'll become an issue in the next months.

I've already built ourselves a nifty little website where we can sell and fulfil customer orders and create private web pages with the video content embedded with an expiration date and it runs basically for free on Netlify.

What I'm wondering is, where the heck should we store the videos so our customers can stream them? Ideally, they wouldn't be too easy to download but our customers are also pretty non-tech so piracy isn't really something we need to worry about.

Currently I'm weighing my options between something like Streamable, renting some VPS and throwing them all into a webserver and just hotlinking the vids or maybe something like Cloudflare's Stream (which is currently a bit complex for me to understand).

I'm mostly an UX designer who likes to tinker and I do run my own home server but I'm not a great developer so stuff like managing content on AWS through the CLI and uploading files via API calls seems pretty daunting.

Any advice? I'm trying to get the best bang for our buck.

Currently we have approximately 200 hours of 1080p video content (some 150GB) and next year it'll be somewhere around double or triple that. I guess our average monthly traffic would be 1500-2000 minutes a month.

34 comments

[ 209 ms ] story [ 1240 ms ] thread
A DAM like Razuna

https://razuna.com

Razuna looks extremely nifty, but I don't think they offer any public facing way of sharing content hosted there right? Isn't it basically an internal media storage like Dropbox?
You'll likely need to get some custom development done to avoid ongoing subscription costs in favor of a larger up-front cost. I've done this type of thing a few times in my career and have found that while platforms like Vimeo and Streamable can be nice and cost effective early on, it's probably cheaper long-term to have something bespoke created.
What's complex to you about Cloudflare Stream? It looks like you upload a video and they give you an HTML embed for it.

With hundreds of GB of data and TBs of traffic, it sounds to me like you're in the range where it's worth doing it right, handling different encodings and resolutions for different devices, etc. It sounds like Cloudflare Stream will do that for you; I'm not sure how you would configure a VPS to do the same thing.

I think Stream has started to offer uploads directly from the browser since I last tried it out. I looked at it briefly right after CF launched it and I just gave up. Now that I tried it out again today, it wasn't too hard to get up and running.

The only thing missing is the ability to manage the uploads. We have around a hundred videos now and it's expected to grow pretty fast so being able to sort and tag the files is pretty essential especially as we want to prune older content. CF doesn't offer any statistics on video usage so we'll just have to guestimate and try to find files to remove by their filename.

It's workable but not ideal. Reading the Stream support forums I did find another service called Bunny and I'm giving that a go, it looks like an easier to use version of Stream with some nice organizational features.

AWS has cloudfront hosting for video streaming that is pretty easy to code against.
Vimeo also doesn't support commercial use and will slap you with a huge rate increase if your content does any real numbers.
Are you sure? I've seen several companies using it for their content. Lots of educational platforms, events and even Dropout uses it for their videos. Also as they've dropped their free tier I'm pretty sure their target audience is companies who need either restrictive access to their videos, selling OTT or live video streaming events.
...but I'm not a great developer

Yet*. You already shipped something which is more than many people can say. I understand not wanting to be a developer, I had similar thoughts for a long time, but knowing the tools and concepts developers use is helpful. Especially in situations like this. Also, it's usually not as complex as it seems from the outside. I'll be the first to admit: I spent a long time thinking I wasn't "smart enough" to do it, until I did it. If you'd like any introductory resources on how APIs work, how they can help you, how to use them, etc, let me know.

Pep talk aside I recommend price matching several different platforms:

- AWS Elemental

- Brightcove

- Bitmovin

- Cloudflare Stream (as mentioned)

- Cloudinary

- Mux[0]

- Wowza

- many, many others

The options above will give you the most control over the process, they'll host and handle streaming/delivery to any variety of users. If you'd like a managed offering you could try something like Uscreen.

Right now it seems like you're in the "get it to work" stage but at some point, you might want to integrate observability or data monitoring to track your user's experience, video performance, engagement, and other items. This is where doing a little bit of research gets you a ton of value further down the line. I recommend looking up terms like "QoE" and "QoS"[1] to get some more context.

[0]: for some context on video generally - https://howvideo.works

[1]: https://ottverse.com/beginners-guide-to-video-qoe-and-qos

Hey!

Thank you for the extremely thoughtful answer. You hit everything right in the head!

I don't mind coding but I like you might've surmised from my post, I don't feel that capable. Frontend js and doing stuff in the browser that isn't just plain html and css, goes mostly over my head.

Stuff on the server end is a bit easier to grok for me, as long as I can find semi-relevant examples to base my working on :)

I did look at most of the services you mentioned. Obviously, the hardest part is going to be estimating usage. Do I want to pay per video minute, gigabyte or simply by the number of videos?

I did test out Cloudflare Stream and it's almost perfect and the pricing is obviously very attractive. The only thing missing was any ability to sort and manage the videos uploaded unless I work over the API.

I did find Bunny.net which seems like an even better alternative with a lot of more nice-to-haves compared to Cloudflare so I think I'm mostly sorted on that end.

Thank you for your offer. I just might take you up on it when the need inevitably rises :)

You are going to want to use the API and store video metadata in a database.

With your own database of assets it’s possible to change services down the road without as much hassle.

I'd be surprised if this topic hasn't been covered on HN in the past, if not I'm sure it'll show up one day. When your role is "non-technical" (not my favorite term but using it for clarity), UI, CMS, and dialogue menus seem like the best solution. Why wouldn't I want to just point and click?

But the day I learned how to run a GET request, parse data, save it somewhere, analyze it later; my outlook completely flipped. Whenever I google "[organization] api" and get 0 official results I become irrationally angry. All this to say, I hope they approach the topic before it becomes a hard requirement, because it's a fun and useful skill to have even outside of work.

I don't mind wrangling data in the CLI, and I have written a few scripts that do utilise some APIs, like a dynamic dns type script that runs on my home server and updates Netlify's DNS to point a list of subdomains to my home network, but I'm hesitant to build anything too complex for work because when I do leave, it'll all come tumbling down :)

I try to build our processes so that our non-tech HR/management department can keep everything running eventually. Spinning up a Docker image or deploying builds to a CI pipeline is a bit out of their job description and skill set hah.

Disclaimer: I work at Mux (late edit, still learning HN etiquette)
Theres a great object storage company Storj.io[1] that has a 150gig free storage tier.

Been using it for small projects and its great. Simple dashboard, drag and drop and away ya go.

[1] https://www.storj.io/storj-home

I'd be tempted to try and get as simple a solution as possible. Have you looked at Rumble?

They have a $100 per month option that should more than cover your needs. While they have a 4TB transfer limit I think they have options to extend that. But if your are only just hitting the 2TB limit this might work for a while? https://www.rumbleplayer.com/enterprise-pricing.html

You can always go free if you don't mind some ads but it sounds like that is not an option.

Linus Media Group also has a service https://www.floatplane.com/

I think that is aimed at content creators. But It could be worth contacting them.

Then if you want to do a little more development I'd look into Backblaze. https://www.backblaze.com/blog/roll-camera-streaming-media-f...

I’m not sure I’d want to use Rumble, the platform tagging itself as “anti cancel culture” and full of racist content.

Just use cloud flare streaming, it doesn’t get easier and prices are not prohibitive.

I'm anti cancel culture and love free speech. I think they're doing a wonderful job. It's not full of racist content, that's a lie.

Cloud flare is a fine option but I suspect they're after a more managed service.

Edit: Racism is explicitly banned from Rumble. https://rumble.com/s/terms Racist content is removed.

(comment deleted)
> Edit: Racism is explicitly banned from Rumble

... rumble.com c BannonsWarRoom

Have you looked at Bunny CDN? They seem to have very competitive pricing.

https://bunny.net/stream/

(I'm not affiliated with them)

Yeah I found Bunny through Cloudflare's forums when someone asked a comparison between Bunny and CF Stream. It literally hits all the marks for me. Seems almost too good, just gotta hope they're around for the long run and their prices don't quadruple in the next few years :)
aamoscodes had some good suggestions, and bunny.net would also work as well.

If you trust your VPS capabilities, you could also run a Peertube instance. It should have the embedding features you want. However, I'm not sure what sort of performance you are going to want on the VPS to make it close to something like Youtube. (How many TB of video do you have? How spread out is that 4 TB of stream data? If you do run it, I'd suggest running it through Cloudron to simplify security and backups (it's very good at that).

Are you ok with anyone in the world watching the videos or are they for customers only?
Technical solutions exist and should be implemented by experienced people, but if it is central to your business model to sell video streams, you must absolutely understand the risks and challenges before you start and need to protect against unexpected cost explosion.

In any case, you need throttling / DDOS protection or a similar mechanism that will stop video download when you get too many requests - this risk is very real and when you can not stop some bot downloading videos a trillion times you can be killed financially in one day.

This must be implemented in some hard technical limitation on the server / service provider site and should not be some soft agreement like e.g. "we will find a solution, just go ahead".

Also very important is to implement all video streaming costs in a pre-paid fashion - put the max amount of money you are ready to pay for monthly delivery into the account in advance, but make absolutely sure that delivery stops when that money is burned. It is better to be offline for some while (or deliver some reduced quality content that is much less traffic intensive) than to go broke in one night.

But you do not only have to prepare for abuse and errors, you also have to see that in the long run, when the number of subscribers get bigger and bigger, you need a good solution to guarantee that the ongoing downloads of (old) subscribers will not accumulate to astronomical numbers - we could speak of an "inverted long tail" here that will eat more and more money. Plan ahead!

There are many more problems with selling video content and this was just a small introduction, but contained the most important points.

Sometimes it turns out that it will be a much safer solution to NOT sell the video content but sell additional services around your videos - put your videos on YT, forget about all problems with video hosting and focus on selling many much less intense products and services, while your videos generate lots of subscribers, because you will never deliver to as many people as YT can.

Good luck!