gitwtfhub

wtf is cctv-timeline-viewer?

robertoamd90/cctv-timeline-viewer — explained in plain English

Analysis updated 2026-05-18

2PythonAudience · ops devopsComplexity · 3/5LicenseSetup · moderate

TL;DR

A read-only, vendor-independent viewer that lets you browse and sync recordings from multiple CCTV cameras on one shared timeline.

Mindmap

mindmap
  root((repo))
    What it does
      Synced multi-camera playback
      Timeline navigation and zoom
      Day-based indexing
    Tech stack
      Python FastAPI
      SQLite
      JavaScript frontend
      Docker
    Use cases
      Home Assistant add-on
      Standalone web server
      Docker deployment
    Audience
      Home Assistant users
      Self hosters

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Why would anyone build with this?

REASON 1

Install it as a Home Assistant add-on to review footage from multiple security cameras in one place.

REASON 2

Run it standalone on a home server to browse CCTV recordings stored on local disk or network shares.

REASON 3

Deploy it in Docker with recordings mounted read-only to keep original files untouched.

What's in the stack?

PythonFastAPISQLiteJavaScriptDockerffmpeg

How it stacks up

robertoamd90/cctv-timeline-viewer0-bingwu-0/live-interpreter010zx00x1/faresnipe
Stars222
LanguagePythonPythonPython
Setup difficultymoderatemoderateeasy
Complexity3/52/52/5
Audienceops devopsgeneralgeneral

Figures from each repo's GitHub metadata at analysis time.

How do you spin it up?

Difficulty · moderate Time to first run · 30min

Standalone mode has no built-in authentication, so it should run on a trusted network or behind a reverse proxy.

You can use, modify, and share the code, but any modified version you distribute must also be released under the same GPL license with source code available.

Wtf does this do

CCTV Timeline Viewer lets you browse recordings from several security cameras on one shared, synchronized timeline. It works with recordings that already exist as files on your computer or network storage, and it does not depend on any particular camera brand. You can play back multiple cameras at once, navigate by day, zoom in on the timeline, and arrange the camera layout however you like. The interface is available in English and Italian. The tool is read only: it never changes or deletes your original recording files. It reads recordings from folders organized by date, such as a year, month, and day structure, and keeps a local index so it can find footage quickly even in large archives stored locally or over SMB and NFS network shares. There are three ways to run it. The easiest is as a Home Assistant add on, installed by adding the GitHub repository as a source in the Home Assistant app store, then configuring each camera to point at a folder under Home Assistant's media directory. A separate beta add on is available for testing upcoming releases without disturbing the stable version. For people who do not use Home Assistant, it can run standalone with Python 3.11 and ffmpeg, started as a small web server you open in a browser, though this mode has no login screen and should stay on a trusted network. It can also run in Docker, mounting your recordings folder as read only. Administrators can rebuild the search index at any time without losing camera settings or the original files, and can set a time offset per camera if a recording's file name does not match exactly when the footage actually starts. Supported video formats include MP4, AVI, MKV, MOV, TS, H264, H265, and DAV, with H.264 video in MP4 or MOV recommended for the best browser compatibility. Under the hood, the project has a FastAPI backend with a SQLite index and a plain JavaScript frontend, built and published as a multi-architecture container image through GitHub Actions. It is licensed under the GNU General Public License version 3 or later.

Yoink these prompts

Prompt 1
Walk me through installing the CCTV Viewer Home Assistant add-on and pointing it at my camera recordings folder.
Prompt 2
Help me set up CCTV Timeline Viewer standalone with Python 3.11 and ffmpeg on my home server.
Prompt 3
Show me the docker run command to mount my /mnt/cctv recordings read-only into CCTV Viewer.
Prompt 4
Explain how the date-partitioned {YYYY}/{MM}/{DD} folder layout works for organizing my camera recordings for this app.
Prompt 5
How do I set a recording time offset when a camera's file name does not match when its footage actually starts?

Frequently asked questions

wtf is cctv-timeline-viewer?

A read-only, vendor-independent viewer that lets you browse and sync recordings from multiple CCTV cameras on one shared timeline.

What language is cctv-timeline-viewer written in?

Mainly Python. The stack also includes Python, FastAPI, SQLite.

What license does cctv-timeline-viewer use?

You can use, modify, and share the code, but any modified version you distribute must also be released under the same GPL license with source code available.

How hard is cctv-timeline-viewer to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is cctv-timeline-viewer for?

Mainly ops devops.

View the repo → Decode another repo

This repo across BitVibe Labs

Don't trust strangers blindly. Verify against the repo.