peji db754b2bae Fix multi-sensor cameras collapsing into one tile
Channels were keyed solely on the metadata `Name` field. Multi-sensor
cameras (e.g. Avigilon 32C-H5A) export one file per sensor that share an
identical `Name` and `Serial`, so their sensors merged into a single tile
and one sensor's clips were lost to start-time dedup — surfacing as
"only 3 of 4 cameras loaded".

Add cameraIdFromFile(), which derives a per-sensor id from the export
filename prefix (stripping the Alta timestamp, e.g. "Backyard_4-...Z.mp4"
-> "Backyard 4"), and key channels by it, falling back to the metadata
Name for non-Alta filenames. Verified: all 4 sensors now load as
distinct tiles (4 cameras | 13 clips).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-03 08:38:56 -04:00

Alta Video Player (WebAVP)

WebAVP is a local player for Alta/Ava Security camera exports. It focuses on core review workflows: importing video exports, synchronizing multiple cameras on one timeline, zooming into footage, and validating export integrity.

The app can run in two modes:

Core Features

  • Drag/drop individual video and metadata files, folders, or ZIP archives
  • Import unencrypted ZIPs through vendored JSZip
  • Import AES-encrypted ZIP exports with an in-app password prompt
  • Synchronize multiple camera segments on a shared timeline
  • Scrub, zoom, pan, change playback speed, and frame-step footage
  • Reorder, hide/show, expand, and manually lay out camera tiles
  • Use region zoom, scroll zoom, and fisheye dewarp tools
  • Verify signed exports offline and optionally confirm certificates with Alta's cloud verification endpoint
  • Preserve sessions across refreshes with IndexedDB

Standalone desktop app (Electron)

npm install
npm start

The Electron shell loads the existing UI through the custom webavp://app/ protocol, so local assets are served from the packaged app instead of brittle file:// paths. Certificate verification is bridged through Electron IPC (window.webavpNative.verifyCertificateOnline) and performed in the main process.

Packaging scripts are included:

npm run dist

electron-builder is configured for Linux AppImage/deb, macOS dmg, and Windows nsis. Cross-platform packaging still needs to be run on the target OS/build host.

Web/Python mode

python3 app.py
# http://0.0.0.0:5152

The Python stdlib server serves /, /static/*, and /api/verify-cert. There are no Python package dependencies.

Checks

npm run check
xvfb-run -a npm run smoke

check runs Electron main/preload syntax checks and py_compile for the Python server. smoke starts Electron, waits for webavp://app/index.html to finish loading, then exits automatically. On a desktop session, npm run smoke is enough; on headless Linux, use xvfb-run -a npm run smoke.

S
Description
Alta Video Player — web-based surveillance video player for Alta/Ava Security camera exports
Readme 152 KiB
Languages
HTML 93.6%
JavaScript 4.4%
Python 2%