API mit .npz

This commit is contained in:
chk
2026-06-10 07:51:34 +02:00
parent c76cbd39de
commit cdb3165fad
8 changed files with 289 additions and 4 deletions

View File

@@ -36,6 +36,20 @@ const H264 = {
};
const MSE_CODEC = process.env.H264_MSE_CODEC ?? mseCodecString(H264.profile, process.env.H264_LEVEL ?? '1F');
// ── Kalibrierungsdaten laden (data/calibration/{id}/calibration.npz) ──────────
// Einmalig beim Start in den RAM; kein fs-Zugriff pro Request.
function loadCalibrations(camsConfig) {
const calib = {};
for (const cam of camsConfig) {
const p = path.join(__dirname, 'data', 'calibration', cam.id, 'calibration.npz');
if (fs.existsSync(p)) {
calib[cam.id] = fs.readFileSync(p);
console.log(` Kalibrierung: ${cam.id} (${calib[cam.id].length} Bytes)`);
}
}
return calib;
}
// ── cameras.json → CameraSwitch-Instanzen ─────────────────────────────────────
const CAMERAS_PATH = path.join(__dirname, 'cameras.json');
let camerasJson;
@@ -56,6 +70,8 @@ if (!Array.isArray(camsConfig) || camsConfig.length === 0) {
console.error('cameras.json: "cameras" muss ein nicht-leeres Array sein'); process.exit(1);
}
const calibrations = loadCalibrations(camsConfig);
const switches = {};
const camsMeta = []; // { id, device, name, position, stream, hires, note }
for (const cam of camsConfig) {
@@ -95,7 +111,7 @@ app.use(express.json()); // POST /api/config liest JSON-Body
// ── 1. Eigene Endpunkte ───────────────────────────────────────────────────────
app.use('/api/snapshot', createSnapshotRouter(switches, camsMeta));
app.use('/api/stream', createStreamRouter(switches));
app.use('/api/cameras', createCamerasRouter(camsMeta));
app.use('/api/cameras', createCamerasRouter(camsMeta, calibrations));
app.use('/api/config', createConfigRouter({
switches, camsMeta,
getCamerasJson: () => camerasJson,