GameTape
Live-stream basketball recording with real-time score overlays and a custom video pipeline.
About
I play basketball at a semi-professional level in the UK and for a local league team called Southside Saints. We record our games on phone and love watching back the tape — but a raw recording doesn't tell you much without context. I thought it'd be good to have the live score overlaid so you can track how impactful a moment was just by the score at the time.
GameTape is that idea built out properly. It captures game footage through a custom video pipeline while pulling live score data from Firebase Realtime Database and rendering it as an overlay using OpenGL ES. The technical focus for me is learning the full pipeline — GPU rendering, audio and video encoding, compression, and muxing — starting on Android with Camera2 and MediaCodec, then bringing it to iOS through KMM.
Key Features
Live score overlay rendered in real-time via OpenGL ES
Custom video pipeline — Camera2, MediaCodec, muxer
Real-time score data synced from Firebase Realtime Database
RTMP live-stream output with embedded overlay
Hardware-accelerated video encoding and compression
Android-first, with iOS via Kotlin Multiplatform
Screenshots
Screenshots coming soon
My Role
TBC — Detailed breakdown of my personal involvement coming soon.
Technologies
Kotlin Multiplatform
Shared business logic across Android & iOS
Camera2
Low-level Android camera API for video capture
MediaCodec
Hardware-accelerated video & audio encoding
OpenGL ES
GPU-rendered score overlay composited onto frames
Firebase Realtime Database
Live score data synced in real-time
Koin
Dependency injection
Status