Ask HN: 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).
30 comments
[ 2.9 ms ] story [ 49.8 ms ] threadIt 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.
just for fun i checked cloudflare's streaming offer. 6h stream with 1000 viewers would cost 360$.
right now i am thinking i would simply do 1:1 streaming. so no transcoding. what you put out is what the audience gets. so if you stream with too high if a bitrate, tough luck. i could handle it with couple of cheap VPSs.
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.
Let us know what you find
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.
ffmpeg -> MPEG-DASH -> nginx + MPEG-DASH -> your own video player.
Using ffmpeg you can transcode one stream to HLS stream.
Example: https://www.martin-riedl.de/2018/08/24/using-ffmpeg-as-a-hls...
We are not in disagreement.
Of course, I'm on AWS using SSDs, MediaStore, and CloudFront (as a testbed; we use medialive for production). If you're on a spinning disk you'll have contention and throughput issues (ie: you can't expect to write and read to that guy effectively).
I'd suggest dropping to 24fps, since you're not doing fast action sports. Also, use the Apple HLS authoring guidelines as a baseline for your bandwidth settings. Overall they seem to be pretty good.
As with any compression, high quality in is better, because it gives the encoders more data to work with.
360p is pretty worthless.
What you can try and do, if you want to ride the edge of legality, is start an unlisted youtube livestream then extract the m3u8 out of it and send it to your clients.
--
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.
Capped VBR is one of the most common ways to do VBR on live streaming.
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
The cost bit is one hear a lot, and it's tough. There's no way around it, video can just get expensive at scale. Services that try to get away from charging for usage are just trying to play an averages game; once you cost them enough you'll hear from them.[1]
We are looking at ways to help developers limit the risk of a runaway bill and just generally manage their cost shape a little more. If you're up for chatting about it feel free to shoot me a note (matt at mux).
[1] https://www.theverge.com/2022/3/15/22979126/vimeo-patreon-cr...
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.