Replies: 1 comment
-
|
Saw your other post regarding your large deployment, havent gotten around to answer it yet, sorry about that! Impressive work, sounds like some of it could be useful even in smaller deployments. Maybe we could work together to try and bring some of it into the default UI? |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Custom Viseron Timeline UX Enhancements for Large Camera Monitoring Setups
I have been testing Viseron in a large-scale road camera monitoring environment, and we added several client-side improvements to make the Timeline more practical for daily operation.
The goal was not to change Viseron's backend behavior, but to improve the browser-side experience when working with many cameras at the same time.
✨ Added features
📸 Per-camera frame capture
Each video now has a custom screenshot button that captures the current video frame directly from the browser.
The saved image uses:
This makes it easier to quickly document events without opening external tools.
🔎 Zoom and pan inside each video
Videos now support interactive zoom and pan:
Escresets all zoomed videos;Especially useful when reviewing road footage details such as vehicles, plates, lanes, shoulders, or roadside elements.
⌨️ Keyboard shortcuts
Space←→LEscShortcuts are ignored while typing in inputs, textareas, or editable fields.
🔴 Improved LIVE button behavior
The native LIVE button is intercepted to reduce the occurrence of the
"video segment is missing for the selected period"error.Instead of jumping to the absolute latest position, the script scans the timeline DOM for markers and clicks the one closest to a position approximately 3 minutes behind the true live edge. This small deliberate delay gives Viseron enough time to have the segment written and available, avoiding the missing-segment error that often appears when jumping to the very tip of the stream.
The behavior is also triggered by the
Lkey.🧭 Timeline sidebar optimization
When the timeline panel is open, the script:
This gives more screen space to the camera grid while keeping the timeline available for review.
🧱 Fixed camera grid layout
A custom grid layer was added over the live camera area. It supports two modes:
The 6×3 mode also reserves a left-side space to avoid overlap with the reduced timeline sidebar. All slots maintain a 16:9 aspect ratio with minimal gaps and automatic fitting on resize.
🔁 Grid toggle button
A floating toggle button switches between the two layouts. The selected mode is saved in
localStorageand restored after a page reload.🖱️ Drag-and-drop camera ordering
Camera cards can be reordered by drag-and-drop between grid slots. The order is also saved in
localStorage, using camera data attributes, title, or video source as a fallback. The layout persists across reloads.How to replicate
index.htmlfrom the Gist:👉 https://gist.github.com/ucom-ux/c16ad136357a573ac3a48f9ffffa8f54
Mount it over the container's original
index.html:Beta Was this translation helpful? Give feedback.
All reactions