53 lines
2.0 KiB
Markdown
53 lines
2.0 KiB
Markdown
# 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)
|
|
|
|
```bash
|
|
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:
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
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`.
|