A live streaming platform to broadcast live video from your browser to various social media platforms.
- ⚡ Live stream your webcam video from your browser to social media platforms.
- 🫂 User friendly web-interface.
- 🔐 Authentication for clients.
- ✨ Add overlays to your stream.
- 🙌 Supports all platforms that allows streaming through an rtmp link.
- 🚫 We do not store your rtmp links and keys.
Prerequesite : You need to have docker and docker-compose installed on your machine.
- Clone the repository on your machine.
git clone https://github.com/Dhairya-Arora01/Stream-Hard.git
- cd into the cloned repo.
- Start the application components using
docker compose up
- Now you can access the application at localhost:8080 in your browser.
- Create Account, enter your rtmp link and start streaming.
- Here is the screenshot of the output stream on twitch.
- Frontend : Vue
- Backend : Go
- Database : Postgres
- Other technologies used:
- pion/webrtc for WebRTC
- ffmpeg for sendting the stream to rtmp servers.
After authentication, the user enters the rtmp link and hits go. Then,
- This sends request to the backend server.
- This opens a websocket between the client and the backend.
- Both of them asynchronously obtain ICE candidates from the stun server.
- Through the opened websocket they exchange ICE candidates, offers, answers and simultaneously set local and remote session descriptions.
- WebRTC connection is established !
- Now the webcam stream in the form RTP packets is sent directly to the backend.
- ffmpeg forwards the stream to the provided RTMP server.
Currently we are also developing the Kubernetes repository for our Stream-Hard application that contains all k8s specific configurations. You can find the repository at https://github.com/Dhairya-Arora01/Stream-Hard-config . Your contributions are welcome on the configuration repository as well.
If you encounter any issues or have questions, feel free to open a new issue.
We welcome contributions from the community. Feel free to submit pull requests or open issues.
- Pion webrtc
- ffmpeg
- Sean Dubois - Creator of Pion WebRTC and an inspiration.
- Vue basic
- Go basic
- WebRTC connection between browser and server
- Send webcam video to server using webRTC
- Streams transfer to rtmp using ffmpeg
- Cosmetic Frontend
- Input for rtmp link
- Adding overlays
- User Authentication
- Concurrency in backend / error resillience
- Implementing Docker
- Local k8s cluster setup - ....In progress....
- IAC to setup the cluster in the cloud
- Unit and e2e testing
- CI using Github Actions
- ArgoCD for GitOps
- Monitoring and Logging