HACKER Q&A
📣 hknmtt

Recommend video streaming CDN service


I would like to provide users with video streaming but would like to avoid the hustle of running the infrastructure.

Can you recommend a cheap CDN service for video streaming?

The way I imagine it is that a user will request a video stream instance, I will set it up via automated API calls and provide the user with access details for OBS(or similar software). The user then starts the video stream. Other users/audience will be able to watch it on my platform via embedded video player that will be streaming the video from this video cdn service. And I will be charged per use(although I would prefer something more predictable, rather than actual per-data pricing to not go bankrupt in case of sudden extreme interest in some video stream).


  👤 bobdvb Accepted Answer ✓
https://github.com/cannonbeach/ott-packager Then feed that into any CDN which works with HLS, which should be all of them.

All CDNs are going to charge based on usage, that's how they work, some offer a free tier but you have to take responsibility for managing your costs and ensuring your revenue scales (otherwise just use YouTube)

Alternatively there's also: https://www.mux.com/live


👤 manv1
Since you care more about cost and don't mind building it yourself, just build it yourself.

ffmpeg -> MPEG-DASH -> nginx + MPEG-DASH -> your own video player.


👤 MacsHeadroom
You most likely want https://antmedia.io/ Ant Media WebRTC streaming library. It's the back-end for most adult streaming sites and alternative livestreaming sites. Cheapest option by FAR if done on budget hosts, especially if bandwidth is free or cheap (ex. Hetzner Cloud US gives 10TB free).

Some other options:

Free:

https://jitsi.org/jitsi-meet/ Free/Open Source, built for video calls but also works for livestreaming*

https://livekit.io/ Free SDK, similar complexity to Jitsi but tailored specifically for live streaming

https://www.ovenmediaengine.com/olk Roll-Your-Own auto-scaling live-streaming solution

...

API as a Service:

https://www.100ms.live/ Super low-latency livestreaming API with premium pricing

https://castr.io/ All-In-One, ok pricing

https://www.api.stream/ Good, pay as you go pricing

https://liveapi.com/pricing/ Good, pay-as-you-go pricing

https://www.simplelive.co/livestream One click embedded live stream start-up, pricing seems too good to be true

...

* Example repo which used Jitsi for livestreaming to thousands: https://gitlab.com/guardianproject-ops/jitsi-aws-deployment

...

All of the options will run ~$100 to $3000/month for streaming 100 hours a month to 1000 users, with APIs costing the most and bandwidth being the main cost of self-hosted solutions.

<$100/mo is possible by self-hosting on Hetzner or another free bandwidth host.

Using AWS, Azure, or Google Cloud anywhere in your stack can easily 2-3x your costs above the high bound.


👤 phillipseamore
Don't know any service that would be considered cheap or even affordable that doesn't charge by the byte or watch time. But I'd certainly like to be proven wrong!

It would be hard to find anything that wouldn't be at least 2x more expensive than running your own, at least the origin/ingest and transcoding side (as well as origin for DVR/recording/VOD). Depending on the scale, running your own edge servers for delivery to viewers might also be a lot cheaper.


👤 hknmtt
So far I think the best option will be to do it on my own. But I would do it this way - the source would have to be VBR, not CBR since no transcoding would take place. What is put in is also what will be put out. With 1Mbit recommended quality.. The ingress will simply chunk the stream into 1-2 second segments and those will be sent to my "CDN" servers which will serve it from memory only with about 30sec buffer. The data would be pumped out via websocket(so i can easily send binary data) into MediaSource js object as uri for html video src. If the client is too slow consumer, he'll buffer the video. I don't need to provide youtube level of service.

--

Just did a small test with 10 sec desktop video recording in OBS:

CBR 3.35 MB

VBR 343 kB

ABR 840 kB

CRF 344 kB

So by not using CBR the data stream can deliver the same quality at 10x lower size(VBR, CRF) or 3.9x in case of ABR. CBR is needed for transcoding due to speed needed for that process but if I would pipe the data 1:1 as I said, then CBR is detrimental.


👤 barbariangrunge
I looked into this a few years ago and it was pretty rough. There are free platforms like YouTube, then there are extremely expensive options. The least expensive of the expensive options I found was just digital ocean, but I found playback didn’t work under a vpn

Let us know what you find


👤 trevorishere
Azure Media Services?

https://azure.microsoft.com/en-us/pricing/details/media-serv...

Supports HEVC (H.265) output.

https://learn.microsoft.com/en-us/azure/media-services/lates...

You can put budget alerts in place on Azure resources to handle costs.


👤 manv1
For live video, bandwidth is a killer. If you have volume and do an upfront committment you can negotiate down to < .01/GB and below.

It's crazy how much people make off of bandwidth. From what I understand, that and RAM are huge margin products for AWS.

Also, you need to do the "get three quotes" thing. Akamai, fastly, and AWS will match/beat each other if you ask.


👤 jacooper
Cloudflare Stream? Seems perfect for your, and they do not charge per bandwidth, as usual by cloudflare.

👤 wh0thenn0w
bunny.net Video Streaming service might also be interesting for you

👤 bdod6
Fastly

👤 jenaimarre
YouTube?