6 ms·
I've got to host and serve videos on demand at my job. Any ideas?
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.
- mergy 4y agoA DAM like Razuna https://razuna.com https://razuna.com
- httpsterio 4y agoRazuna 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?
- metaloha 4y agoYou'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.
- MatthiasPortzel 4y agoWhat'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.
- httpsterio 4y agoI 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.
- thegagne 4y agoThey do have graphql api analytics to show usage.
- aamoscodes 4y agoGraphQL isn't the best method to start with for someone that hasn't used REST, imo. Though it does seem like there's a dashboard option: https://developers.cloudflare.com/stream/getting-analytics/fetching-bulk-analytics/#analytics-in-the-dashboard https://developers.cloudflare.com/stream/getting-analytics/f...
- PaulHoule 4y agoAWS has cloudfront hosting for video streaming that is pretty easy to code against.
- superchroma 4y agoVimeo also doesn't support commercial use and will slap you with a huge rate increase if your content does any real numbers.
- httpsterio 4y agoAre 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.
- aamoscodes 4y ago...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 https://howvideo.works [1]: https://ottverse.com/beginners-guide-to-video-qoe-and-qos https://ottverse.com/beginners-guide-to-video-qoe-and-qos
- httpsterio 4y agoHey! 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 :)
- vagrantJin 4y agoTheres 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 https://www.storj.io/storj-home
- xupybd 4y agoI'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 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/ 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-from-backblaze-b2/ https://www.backblaze.com/blog/roll-camera-streaming-media-f...
- bergenty 4y agoI’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.
- xupybd 4y agoI'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 https://rumble.com/s/terms Racist content is removed.
- deleted 4y ago[deleted]
- Schroedingersat 4y ago> Edit: Racism is explicitly banned from Rumble ... rumble.com c BannonsWarRoom
- toomuchtodo 4y agoWistia perhaps? https://wistia.com/product https://wistia.com/product
- joshxyz 4y agoone of the best and simplest
- Tepix 4y agoHave you looked at Bunny CDN? They seem to have very competitive pricing. https://bunny.net/stream/ https://bunny.net/stream/ (I'm not affiliated with them)
- aamoscodes 4y agoYes: https://news.ycombinator.com/item?id=33257343 https://news.ycombinator.com/item?id=33257343
- httpsterio 4y agoYeah 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 :)
- miedpo 4y agoaamoscodes 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).
- throwaway2056 4y agoPlease see https://pixeldrain.com https://pixeldrain.com - May be they can build something for you.
- rurban 4y agoPlenty of free options now: https://github.com/topics/video-streaming?l=c%2B%2B https://github.com/topics/video-streaming?l=c%2B%2B (C++) 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)
- zaphirplane 4y agoAre you ok with anyone in the world watching the videos or are they for customers only?
- lloydatkinson 4y agoMaybe Azure Media Services? Can transcode and serve content etc. https://azure.microsoft.com/en-gb/products/media-services/#features https://azure.microsoft.com/en-gb/products/media-services/#f... https://azure.microsoft.com/en-gb/products/media-services/live-on-demand/#security https://azure.microsoft.com/en-gb/products/media-services/li...
- POPOSYS 4y agoTechnical 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!
- gardenhedge 4y agohttps://teachable.com/ https://teachable.com/ might be useful to you