Ever wonder how Youtube/Netflix/Tiktok changes the resolution of the video you are watching depending on your network speed?
Do you want to implement a similar feature in your product, without any hassle?
ZeStream is the backend service which you can self-deploy, and use its API to process the video and store it on a storage bucket like AWS S3/Google Cloud/Azure...
- The user calls API to process the video.
- The API controller queues the event in a message queue (Kafka) and calls the provided webhook.
- A ZeStream worker polls the event from the queue containing the file URL
- The worker fetches the file to the local disk
- Another worker starts an FFmpeg thread to process the video
- Output is stored in the local disk
- After FFmpeg finishes processing, another worker pushes the files to cloud storage
- CDN is connected to storage for fetching the files.
- Install Golang v1.19 from Go.dev
- Fork this repo, and clone the forked repo
cd zestream-server
go get .
go run main.go
Check out contribution guidelines