-
Notifications
You must be signed in to change notification settings - Fork 172
Home
A Quick Look at Shinobi YouTube
Noted Aspects
- Records IP Cameras and Local Cameras
- Streams by WebSocket
- Save to WebM and MP4
- Other formats will be added after codec choices are less confusing.
- API
- Get videos
- Get monitors
- Change monitor modes : Disabled, Watch, Record
- Embedding streams
I want to help people. I want to make a turnkey solution with advanced features. In short : I want to make a world class CCTV platform.
I needed something to start with and my brother suggested ZoneMinder... so I took to the internet for more answers.
ZoneMinder was the primary choice but it wasn't as expected. A few reasons are mentioned below. Solutions such as ispyconnect are not relevant as they have a cost for using their platform.
Before getting onto the list i want to say Thank You ZoneMinder. With you I learned PHP and JavaScript. You were a major reason why I opened documentation on programming languages for many years. As much as there are critical statements about ZoneMinder, there is praise that can't be found in words. For without you there may be no Shinobi. Is it not often sensei are some day surpassed by their unruly pupil?
-
MJPEG streams : no good
- With MJPEG you are opening a new stream every time you create an image with an MJPEG url. Even if you remove this element it will continue to eat resources from the server and client. Only way to deal with it currently is through an
iframe
,popup
, orhard refresh
. - Shinobi addresses this with
Websocket
streams. As frames are captured by FFMPEG they are base64 encoded and sent to the client. - As of January 2017 : Shinobi can output HLS (m3u8) and MJPEG (in an iframe) also.
- With MJPEG you are opening a new stream every time you create an image with an MJPEG url. Even if you remove this element it will continue to eat resources from the server and client. Only way to deal with it currently is through an
-
JPEG Storage : mildly acceptable
- Saving each frame as a separate file in JPEG format can have a seriously detrimental effect on storage space and the hardware itself. Hardware is more likely to fail under the stress of continuously saving frames to storage.
- Shinobi saves to WebM and MP4 files. While MP4 takes a fair amount of space.. its level of CPU usage during encoding for H.264 streams is just amazing.
-
Using too many languages
- You'll find that ZoneMinder uses multiple languages to achieve very small results. This probably just because of the time it was written in. ZoneMinder uses Perl, PHP, JavaScript, C++, HTML, CSS, MySQL, and probably more.
- Shinobi uses JavaScript, HTML, CSS, and MySQL. Simple right? It should be.
-
Outdated methods
-
Continuously hammering the database is not a good idea. Websockets can be used to get real-time data about events. Shinobi uses
socket.io
. -
For every camera ZoneMinder creates a new process every time a viewer opens a stream. 1 Stream = 1 Process. Shinobi uses 1 process for all viewers.
-
General Issues
-
Interface requires ajax or Websocket.
-
No Audio recording
-
No ability to re-stream
As much as ZoneMinder is godly among CCTV applications. It only has this praise because no other solutions existed until Shinobi came along. If they did they were a mere sliver in ZoneMinder's shadow. At first I tried to fix the issues ZoneMinder was having by myself as I was using the
video
branch which was not updated with the rest of ZoneMinder. I needed MP4 recording.
The more I worked on ZoneMinder, the more bitter I became. Issues getting ignored for more than 1 year should have been the hint when I first started.
Neither ZoneMinder devs or I are competing with each other. Frankly it's not a possibility, Our goals are different. They are looking to make an awesome open-source cctv community, make friends. My focus is on the platform, I am looking to make an amazing CCTV platform. I believe becoming friends is a part of that result.
Moe Alam
Follow me on Twitter
Find me on Slack! :)
If you like Shinobi please check out some ways you can help support Shinobi.
If you wish to use this software for commercial purposes please consider donating :) If not.. including my name would be nice.
Shinobi
Copyright (C) 2016-2025 Moe Alam, moeiscool
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
# Libraries Used
vbox.css (the framework that does the vertical panel layout) - I honestly don't know who made this, i found it in a zip.
jQuery - http://jquery.com/
Socket.io - http://socket.io/
Bootstrap - http://getbootstrap.com/
Moment.js - http://momentjs.com/
Livestamp.js - https://mattbradley.github.io/livestampjs/
Font Awesome - http://fontawesome.io/
Node.js - https://nodejs.org
MySQL - https://www.mysql.com/
NPM: mysql - https://www.npmjs.com/package/mysql
NPM: crypto - https://www.npmjs.com/package/crypto
NPM: express - http://expressjs.com/
NPM: request - https://www.npmjs.com/package/request
NPM: connection-tester - https://www.npmjs.com/package/connection-tester
image : shinobi.jpg - the background image on the front page is not mine, there were no credits where i found it. it just looks cool :D
and maybe a few others.