A low-latency motion detector and HD video streamer. The goal is that it must run on (the) one core of a Raspberry Pi Zero[1].
- ...HD stream meaning: 1920x1080 @ ~30 frames per second to web-browser
- ...low-latency meaning: a delay of no higher than 150 milliseconds [2]
- ...recorded video saved as mp4 real-time (motion detected)
- ...without ffmpeg dependency
- ...able to stream live camera feed directly to dozens of web-clients simultaneously and without intermediaries (servers)
- ...stream always or stream on activity
- ...configurable sensitivity of motion detection
- ...save motion-sequences (preview shot and video) to disk
- ...a client should automatically discover all cameras on the network (and show a stream)
- ...ability to signal external programs on activity (or end of), e.g. audio, mail, telegram, ...
- ...modern web-client in Svelte
Pronounced "x or z".
[1] The original one, released in 2015. If it can run on that, it will run on any other Pi with ease.
[2] My use-case is WiFi over a home network
This Github repository was set to public on 15-jan-2024.
Four Raspi's; one of them is acting as a "server" that found its other three friends on the network
Performance critical parts are written in Rust. Frontend is written in Svelte, the glue of the backend is in node-js.
This project is still under active development (as in, the project is NOT shelved), prepare for a bit of struggling if you are intending to deploy this today (July 2023).
Motion is truly excellent software and I've (well, our cat) depended on it for years. At some point I wanted to add more cameras and bumped into Motioneye, which looks great. It's just ... I wanted a different UI, auto-discovery of sensors on network, and cheap motion detection. Primarily though, a high quality live video stream. So, here I am, hacking away in some of the spare hours of the day. :-)
Camera boards with sensors IMX219, OV5647 or IMX477 only. USB cameras are not supported.
- For now, Xorzee depend on raspivid being available on your OS (due to extractable motion vectors), this means you have to manually get that installed if you use new Raspbian/Raspberry Pi OS. Personally I just use older distributions where it comes pre-installed.
- make sure recorded clips are playable (this is a bug from server-side muxing). I think this is due to missing keyframes
- clean up server-side muxing (there's residue from the hack to get this to work)
- rewrite motion-rule handling (it has issues with knowing when to stop)
- store meta-data of amount of activity in a period
- make camera 'driver' a node-module or so (at least make it so that it can be easily used on newer Raspberry Pi OS)
- Notable mention of Samir Das for the fantastic jMuxer for video boxing
- ...and naturally to everyone else contributing to packages in package.json
Not RTSP, not broadway.js, live streaming, detect movement, record videos, play videos, html5 video