I've got to host and serve videos on demand at my job. Any ideas?
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 ] threadhttps://razuna.com
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.
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.
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
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 :)
With your own database of assets it’s possible to change services down the road without as much hassle.
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 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.
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
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...
Just use cloud flare streaming, it doesn’t get easier and prices are not prohibitive.
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.
... rumble.com c BannonsWarRoom
https://wistia.com/product
https://bunny.net/stream/
(I'm not affiliated with them)
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).
15 years ago, when we used this, we used libs from live555. but now vlc and ffserver have it also (RTSP, RTMP, WebRTC). Just don't use TCP please (as icecast did)
https://azure.microsoft.com/en-gb/products/media-services/#f...
https://azure.microsoft.com/en-gb/products/media-services/li...
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!