Features Comparison

"We live in a world where shinobi are younger than you... yet more powerful than me."

  Shinobi ZoneMinder
Started In
The year the platform started.
2016 2003
Written in
The main server language used to manage operations.
JavaScript C++, Perl and PHP
Maintained by Author
Whether or not the platform is being developed by a third party or the original Author(s).
Runs On
The operating system that the platform will run on.
Linux, macOS, Windows Linux
User Based Quota Support
Detecting Group Key's used storage space. This allows setting a specified maximum usable per group.
Multicast Streams
When you have one source providing data to multiple clients. Base64 and MJPEG streams with Shinobi work in this manner.
MJPEG Streams
Motion JPEG, A socket that stays open only for serving JPEG images.
JPEG Streams
JPEG still images saved to RAM. They can be accessed by URL. Streams refresh this image on a timer.
HLS Streams (m3u8)
Similar to facebook live videos. Chunks of MPEG-4 files are created and given to the client as a continuous stream. This method supports audio.
Websocket Streams (Base64)
Frames are base64 encoded then pushed to the client over websocket. Then drawn to a canvas element with javascript.
Recording Method
Actual video files for recordings. Like MP4 and WebM.
Video Files Each frame as a File
or Video Files, Added in May 2017
MP4 Recording (Modern)
MP4 is short for MPEG-4 and is a modern video format. This format runs on modern mobile devices natively.
Added in May 2017
WebM Recording (Modern)
WebM is special because the files are super compressed. The drawback is how much CPU is used to create them and is not playable on all modern mobile devices without third-party programs like VLC.
JPEG Recording (Old Method)
Individual JPEG frames being saved to storage. This method can shorten hardware life.
Records Audio
Recording audio is illegal in some countries. Please ensure you do not have it enabled where such laws apply.
Added in May 2017
Websocket Video Recording
Record frames that are pushed to the server over websocket. This can be useful for mobile devices setup as dashcams or mobile cloud recording units.
Stream Limit
This limitation is more due to browser capabilities. With Shinobi we can trick the browser into letting us do it anyway. Be aware the limitation is to avoid performance drops. We should be allowed to deal with it at our discretion in a global manner. Sadly, not all browsers allow disabling the limit.
None with Base64 and JPEG Mode ~6, Depends on method used to view
Region Motion Detection
Choose an area between coordinates on your video stream for motion detection to occur.
"No Motion" Detection
A notification if motion is not detected after a certain amount of time. This is useful for those monitoring experiments or equipment.
Delete Motionless Video
Continue recording and check to see if video has motion. Files without motion found will be deleted automatically.
Checked once the video segment is complete. Checked when periodic audit of the entire database is run.
Isolated Accounts
An "Admin" account for creating cameras and sub accounts. This account will be have it's own Group Key.
Sub Accounts
Sub Accounts can be made for multiple users who wish to monitor the same cameras and data associated with or without permissions.
Filters are run with the cron job, by default every 1 hour. You can delete certain files, run commands, or get data about events.
Monitor Groups
Groupings for monitors to quickly display certain streams and data.
2-Factor Authentication
After logging in a code is sent to your email and you will be presented with a screen to validate that code before you can access your account.
Time-lapse Viewer
Watch a whole days worth of videos in a few minutes.
RESTful API Access
Integrate Shinobi into your app or control it remotely.
Embeddable Streams (Natively)
Streams that you can add to your website. Just paste the code.
Stream Analyzer built-in
Under the hood of the analyzer is FFprobe. A well crafted command line tool that helps you get configure your camera faster and with more confidence.
Camera Scanner
The scanner will find some ONVIF compliant cameras based on the IP range specified.
Event Notification
Many events on the dashboard are triggered by responses from the server that come in JSON strings.
Push Events via Websocket
With websocket you can send all kinds of data. In Shinobi Websocket is used to push stream data to the browser.
Video Compiler
A tool to create videos. The alternative uses it to combine JPEG images to create a video.
Processes per Camera
The number of procsesses that are needed to have a camera recording and stream. The alternative will create 1 new process for each stream that is open. Shinobi uses 1 altogether for all streams (per camera) that are open.
1 2 - 3 Minimum
Manual Snapshot from Stream
Take a quick picture of the stream by clicking a button presented on the dahsboard.
External Triggering
Modifiying camera modes remotely through a script or on a wim.
PTZ Support
Pan-Tilt-Zoom Support for Cameras.
Automatic Backup
Automatically upload video data to the a remote address.
Web Interface
A panel that can be accessed by a web browser like Google Chrome or Mozilla Firefox.
Mobile App
A native client for your Shinobi that runs in iOS and Android.
Where information about the users, filesystem, and cameras are stored.
MySQL / MariaDB MySQL / MariaDB
This data will be used to determine things like who and where people are, how big their systems are, the underlying hardware and operating system, etc.
It is against our principles to use telemetry in private installations

CPU Usage Comparison

Tested on April 3, 2020
ZoneMinder version : 1.34.8, 2020-03-30
Shinobi version : DEV 21b2de65fd7d38ed0fc308137b92a7b454b50c3c, 2020-03-29
Tested with 1 Simulated Stream, 1280x720, 30fps, Passthrough (copy) Recording
Running on a NVIDIA Jetson Nano, jetson-nano-sd-r32.1.1-2019-05-31.img

This is the most popular of many solutions in the CCTV and NVR sector. Originally the intent was to use this for our purposes but found it isn't capable of the task.

Thus Shinobi had to be born.

Moe Alam

More Information about why Shinobi had to be made can be found here.