CS64-RE14 :: Stream Blender - A Distributed Virtual Video Switcher Platform

สตรีม เบลนเดอร์ - แพลตฟอร์สลับสัญญาณภาพกระจายศูนย์

details
Stream Blender is a wireless virtual switcher designed for live streaming platforms. It utilizes mobile phones as cameras and establishes peer-to-peer connections between computers and cameras, offering flexibility and mobility to content creators and reducing cost of stream server bandwidth for platform owners. With Stream Blender, switching between multiple camera angles becomes seamless and effortless, making it ideal for live streaming events and live news.
tools & techniques
Client
Switcher (Browser): React React
Encoder (Browser): React React
Camera (Mobile): Flutter Flutter
Design System: Fluent UI

Core Server
Core Server: Gin (Go) GoGin
Dependency Injection Library: wire (Go)
OpenAPI Specification: swagger Swagger

Session Initiation Protocol Server (SIP Backend)
Core SIP: Tokio (Rust) RustTokio
Encoder SIP: Node.js NodeJS

Databases
Core Database: PostgreSQL PostgreSQL
Core SIP Database: MongoDB MongoDB
Object Storage: MinIO MongoDB

Messaging Queue
Messaging: Kafka Kafka

External APIs
Service: Google STUN Server Google

Protocols
Communication: REST WebRTC
Communication: WebRTC WebRTC
Communication: WebSocket WebSocket

Infrastructure
Server OS (VPS): Debian Debian
Containerization: Docker Docker
Proxy: Cloudflare Cloudflare
API Gateway: Traefik Traefik


CI/CD
Version Control & CI: Gitlab Docker
CD (Web/Android): TeamCity Docker
CD (IOS): XCode Cloud Docker

Monitoring
GrafanaGrafana

Development and Management Tools
Android StudioVSCode
DataGripVSCode
DiscordDiscord
GolandVSCode
Microsoft TeamsMicrosoft Teams
PostmanPostman
RustRoverVSCode
Thunder ClientThunder Client
VSCodeVSCode
Openapi-generatorThunder Client
WebStormVSCode
author
MR.PONGSAPUK LUBKIM
รหัสนักศึกษา 64130500220
Pongsapuk.lubk@kmutt.ac.th
MR.SITTICHOK OUAMSIRI
รหัสนักศึกษา 64130500233
Sittichok.ouam@kmutt.ac.th
MR.SORRAWIT KWANJA
รหัสนักศึกษา 64130500271
Sorrawit.kwan@kmutt.ac.th
advisor
Vajirasak Vanijja