Connecting to the stream
No messages yet. Say something.
Building things on camera: Next.js on Cloudflare Workers, a Sony A7 IV pushed straight into a self-hosted MediaMTX stream server, and whatever breaks along the way. Mostly offline. When the tally light is red, it is happening right now.
What this is
One camera, no edit, no second take.
A working session broadcast as it happens. The code on screen is the code that ships, and when something breaks it stays broken until it is fixed on camera.
There is no pre-recorded segment and no cut. The stream starts when the work starts and ends when it ends, so the length is whatever the problem takes.
Chat is open the whole time. Questions about what is on screen get answered mid-stream; everything else waits for the end.
Schedule
What is coming up.
All times are Europe/Belgrade. A stream that slips gets moved here rather than cancelled.
- 120 min
Live chat on Durable Objects
Replacing the mock transport on this very page with a real WebSocket room, Hibernation API and all.
- 90 min
OpenNext on Cloudflare, the ugly parts
What the generated worker.js actually does, and where the abstraction leaks.
- 150 min
A player from scratch, no video library
hls.js is the only dependency. Everything else is a state machine and some CSS.
Signal chain
From the sensor to your browser.
Five hops, no encoder farm and no origin server of my own. Each card is one link in the chain.
Sony A7 IV
Clean output, native network streaming from firmware 3.00.
H.264 · 1080p · 6 MbpsRTMPS or SRT
Over USB-tethered Ethernet when it matters, camera WiFi when it does not.
1s keyframe · AES-128MediaMTX on a VPS
Self-hosted ingest, no per-minute streaming bill.
LL-HLS · ~0.2s partDirect delivery
One server, one region. No CDN edge network in front of it.
stream.lakisha.devThis player
hls.js on a same-origin status poll. No iframe, no embed.
~4s glass to glass
Want to be told when the light goes on?
There is no mailing list yet. The schedule above is the whole notification system.
Back to the stream