Cover image for SkyFeed (DroneHub)

SkyFeed (DroneHub)

2026

Drone Video
Video Automation
Post-production
Data Overlays
YouTube Content
Web Development
Image Processing
View Live Demo
About the Project

I built SkyFeed to be a complete live-production hub that runs on a single Raspberry Pi at the flight line — every camera on the LAN, one director panel. Drones, phones, and OBS push RTMP into the box; the Director control room shows the program feed with a live/off-air state, a source rail I tap to take a camera to air, an overlay picker (a widget grid or a live stream overlay), backing-track music cues I can fire mid-race, and a full audio mixer with per-source ALSA and RTSP channels, mute/solo, and a master fader. It encodes one continuous program stream and forwards it to YouTube, Facebook, and Twitch, while viewers on the same network open a separate URL to watch the output. No cloud, no accounts, no off-LAN access.

The Stream page is where each event gets dressed. I pick a branding preset — DroneHub, SRAC, Ocean, Forest, Sunset, or Charcoal — and it swaps the background image and accent color across the stream UI, curtain, and overlay widgets, with a background-opacity slider on top. From there I set the event name and countdown, a location panel with weather and a map, a preroll curtain widget grid, a replays/past-race playlist, and a backing-track music library, then save the whole thing as a reusable preset.

SkyFeed has grown well past a switcher. It ingests GoPro Max 360 footage with equirectangular stitching into a media gallery that organizes clips by geo boundary — Clearview, Sixty Acres Park, Glacier Peak High School, Home — and ships a 360 viewer. A computer-vision pipeline tracks aircraft across flat and equirectangular video, clustering tracklets into aircraft identities, drawing box and trail overlays, steering a 360 follow-cam, and rendering per-aircraft focused clips. The Airspace tab overlays live ADS-B traffic — callsigns and altitudes pulled from OpenSky and adsb.lol — on satellite imagery, so I can see exactly what is in the sky.

Under the hood a Fastify control plane drives MediaMTX for RTMP ingest and ffmpeg workers for the program and thumbnail encodes, with a React 19 touch UI over WebSocket and WebRTC previews, SQLite for state, and a Python OpenCV tracker the Node runner spawns. Encoder selection is per-board — h264_v4l2m2m on a Pi 4, libx264 on a Pi 5, h264_rkmpp on an Orange Pi 5 Ultra — and it ships as a flash-and-go SD-card image with a branded Electron flasher and a self-updater. Built Apr–Jul 2026.

Image Gallery

SkyFeed (DroneHub) gallery image 1
SkyFeed (DroneHub) gallery image 2
SkyFeed (DroneHub) gallery image 3
SkyFeed (DroneHub) gallery image 4
SkyFeed (DroneHub) gallery image 5