Skip to content

Repository files navigation

Camera Control

Electron-app om PTZ-camerapresets te bedienen naast een Blackmagic ATEM-switcher. Per camera een rij preset-knoppen met een live miniatuur, en de switcher schakelt mee.

Opzet

src/main/       Electron main process: alle communicatie met apparatuur
  atem.ts         één verbinding met de switcher, publiceert een kleine snapshot
  cameras.ts      PTZ-commando's (preset oproepen/opslaan) via HTTP
  streamServer.ts lokale websocket voor de RTSP-videostreams
  config.ts       config in userData/config.json, met validatie
  ipc.ts          alle IPC-handlers op één plek
src/preload/    contextBridge: het enige raakvlak tussen renderer en main
src/shared/     types en IPC-kanaalnamen die beide kanten gebruiken
src/renderer/   React + Tailwind

De renderer praat niet zelf met het netwerk. Camera-IP's en het ATEM-adres staan alleen in het main process; de renderer kent camera's enkel via hun id. Daardoor kan het venster met contextIsolation, sandbox en normale webSecurity draaien.

De enige uitzondering is video: rtsp-relay levert jsmpeg-frames over een websocket, en die passen niet door IPC. Daarvoor start main een server op de loopback met een dynamische poort, die de renderer via IPC opvraagt.

Ontwikkelen

pnpm install
pnpm start

Wijzigingen in src/renderer/ zijn direct zichtbaar (HMR, zonder herladen). Wijzigingen in src/main/ of src/preload/ worden herbouwd en herstarten het Electron-proces automatisch. Typen controleren: pnpm typecheck.

pnpm heeft hier twee instellingen nodig (staan in pnpm-workspace.yaml): nodeLinker: hoisted, omdat Forge node_modules kopieert en niet met symlinks overweg kan, en een allowBuilds-lijst voor de pakketten die bij installatie een binary ophalen (Electron zelf, en de ffmpeg-binary voor de streams).

Bouwen

pnpm make            # huidig platform
pnpm make:mac        # macOS, arm64 + x64 (DMG + zip)
pnpm make:mac-arm    # alleen Apple Silicon
pnpm make:win        # Windows (Squirrel-installer + zip)

Het resultaat staat in out/. Een push naar main verhoogt de patch-versie en publiceert via GitHub Actions een release voor Windows en macOS.

Twee dingen om te weten over de macOS-build: hij is niet gesigneerd, dus Gatekeeper waarschuwt bij de eerste start (openen via rechtermuisknop → Openen). En update-electron-app leunt op Squirrel.Mac, dat een gesigneerde app vereist — automatische updates werken op macOS dus pas met een Apple Developer-certificaat. Op Windows werkt de auto-update wel.

Instellingen

Weergave-instellingen (aantal presets, miniatuurgrootte, live-vergrendeling) staan per computer in localStorage. Camera's, het ATEM-adres en het RTSP-pad zijn in de app aan te passen onder "Camera's en switcher" en worden opgeslagen in config.json in de userData-map van de app.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages