I’ve been using a couple of Xiaomi IP camera’s (Ants camera’s) for over a year now to monitor my house. Although the cams have an option to record to SD it is more convenient to save all streams in a central place. For central storing of camera streams I looked for some sort of CCTV software solution. If you Google you will get hundreds of links to software that is able to do this.
The past year I’ve been using Windows based software on Windows 2012 R2 server. The Windows server is a Xen Server 6.5 based Virtual Machine (VM). The VM has Terabytes of storage, an acceptable amount of internal RAM (4GB) but lacks in CPU power. My Xen Server runs on an Intel J1900 quad core based motherboard, which is actually very power efficient. I’ve dedicated 2 cores to the Windows server. For my daily use (AD authentication and File/Print server) the server resources are more than enough.
The programs I’ve used were:
- Blue Iris 4
Both are great programs, which also work with the way Xiaomi’s Ants cams stream their videos. I do how ever have a a slight preference for Go1984. Although they did their job well, I just couldn’t stand the 60% and up CPU cycle use.
With the above in mind I searched the Internet for another solution. Quickly I thought that a cloud based solution was the answer to my problems. But unfortunately it wasn’t. There was something wrong with all solutions I looked at, like:
- Too expensive for private use
- Not really a cloud solution (needing local software)
- Not working with the Xiaomi Ants cameras
This, and the fact that the “Cloud” is still creepy, and I’d rather have everything in house, I decided to drop the cloud option and stick with Go1984.
A couple of days ago however, I discovered an option I hadn’t thought of … Linux. I run several Linux servers, Raspberry Pi’s and other non-Windows stuff, but somehow I didn’t think of CCTV software on a Linux server. Not until I, somehow, landed on the website of FelenaSoft. They have several video related software products among which the “video surveillance software of the next generation”, Xeoma.
Xeoma runs on almost any platform you can imagine like Linux, Mac OS X and Windows. So I thought I’d give it a go at installing Xeoma on a clean Debian 8 install … also a VM in Xen Server 6.5.
When installed and correctly configured you’ll see an overview of your camera’s.
The interface is pretty clean and simple, but don’t let that fool you. There is a lot of power hidden in the background. If you select a camera there are not a lot of options for you to choose from.
You can add the camera in a group. You can see the video archive of the camera, take snapshots (of you enable the button) or control the camera if that is supported.
The most interesting option however is the settings icon.
When you open the settings page you will see a workflow based system. This is something I haven’t seen in any other program I’ve used until now. This system allows you to be very flexible in configuring your camera related actions and alerts.
By just clicking one of the available modules it will be placed in the workflow screen. It will automatically connect to an existing module, which probably won’t be the one you had in mind :-). By simply clicking a connection line you can fix this.
FelenaSoft has made life a little easier for us by providing 4 sample workflows which can be great starting points for your setup.
The modules that are available are:
- Universal Camera. The starting module where you configure your video source. You can choose from USB, wired IP of wireless IP camera’s or a (random) camera on the Internet.
- Microphone. This enables sound.
- File Reading. This modules uses a folder with JPEG or MJPEG files as your video source.
- Another Xeoma. This module can connect to another Xeoma installation.
- FTP Receiver. This module allows you to use a FTP server as your video source.
- HTTP Receiver. This module allows to connect to another Xeoma server via HTTP.
- Motion Detector. This module will allow you to detect motion in a video source.
- PTZ tracking. This module will automatically use PTZ (if your video source has this option) to track a detected motion in you video source.
- Visitors Counter. This module will count detected visitors in the video source.
- Object Detector. This module is used to detect objects in the video source.
- Scheduler. With this module you can schedule (parts of) a workflow.
- Marking. This module allows you to overlay text of an image over the video source.
- Privacy Masking. This module lets you blur certain parts of a video source.
- Fisheye Dewarping. This module dewarps the video from a fisheye lens camera.
- Button Switcher. This module lets you switch (part of) flows on or off.
- Day Detector. This module will let a workflow work only during daytime.
- HTTP Switcher. This module will enable/disable a workflow depending on a HTTP request.
- HTTP Marking. This module will enable/disable a workflow and save meta data when called via a HTTP request.
- Sound Detector. This module will pass thru the video source is sound is detected.
- Image Rotate. This module anbles you to rotate the video source.
- ANPR. This module will automatically detect license plate numbers.
- Problem Detector. This is a module that will send notifications in case of problems.
- Face Detector. A face detection module.
- Unitor. This module will combine 2 video sources.
- Image Resize. This module will let you adjust the size of the incoming source.
- Preview. View the specified video source.
- Preview and Archive. View the specified source and store it to an archive.
- Save to File. Save the video source to file.
- Sending Email. Send a (set of) JPEG to email.
- SMS Sending. Send a text.
- Web Server. This module allows you to stream sources to the internet.
- RTSP Broadcasting. This module allows you to stream sources via RTSP.
- FTP Upload. This module will enable you to upload sources to FTP.
- HTTP upload to other Xeoma. This module will enable you to upload sources to ither Xeoma installations.
- Sound Alarm. This module enables you to play a .WAV file at regular intervals.
- Application Runner. Enables you to run an external application.
- HTTP Request Sender. This module will call a HTTP request when it receives an image.
- Pop-up Window (in client). This module will expand a minimized client window.
- Relay Switch. This module will let you switch a workflow stream when triggered.
As you can see above, you have a lot of modules/tools at your disposal to configure and tweak Xeoma to your liking. At first it takes a bit of time to get used to the interface, but when you’re comfortable with Xeoma, you can do anything you want with it … as long as it has to do with video surveillance and alerting 🙂
So how is the performance of the software?? I only assigned 1 core and 1.5GB memory to the Xeoma VM, so I know performace could be much better. But running Xeoma with 3 cams in this VM actually works quite nice. Yes, I have a high CPU load on the VM, but that doesn’t bother the other VM’s on my Xen Server host. I’m happy with the results for now.
Definitely the intelligent video surveillance system for me!