Original 6/5/2015, updated 7/28/2015 (at bottom)

This is the story of a two week search for video software for my home security setup. I decided (mostly from being bored) to put up exterior cameras and set up my own VMS system on an old PC. This entailed a lot of reading, but also a lot of hunting for just the right software.

What follows is my personal results and opinions. It long and not many pictures (you can see screen shots from the manufacturer’s web sites), and would mostly interest those considering similar products. I did not generally contact the manufacturer so I may have “discovered” things that are just plain wrong; I also may leap to conclusions that will not fit your situation. Insert usual caveats here. But with the possibility that it may help others, here goes.

First what I wanted:

Despite not really needing security cameras, if I am going to do it, I want to ensure it will have the best chance of it being usable should something happen – to me that means data needs to also be recorded off site, at least some data. So getting a low bandwidth feed of images (video or stills) out in near real time, that I can upload somewhere, is a key goal.
It needs to have a decent front end, preferably something you can see on a tablet. I have a half thought-out plan of putting up an old tablet in the bedroom and living area somewhere, so you can quickly see what is going on should something happen. Which also means it has to be easy for my wife to use.
I had a strong preference for Linux for a back end; it’s cheaper and more stable than Windows desktop. I do most of my work in Windows, and would accept windows, but Linux is a preference. In either case the server is to be headless (sitting up on a closet shelf).
I want to run about 6-8 cameras (still working on exactly where to put them), and seems no point in doing anything but IP cameras and with reasonable resolution, arbitrarily aiming for about 3mpx. So it needs to support that.
These are external, and will get lots of motion false alarms, so in general I expect to record all the time, at a low frame rate to be manageable at these resolutions, and only alert (if at all) on some very specific areas. I want to have at least 2-3 weeks’ worth in case we are on vacation.
I would like to have our alarm system, in the event of a burglar or fire alarm, trigger all cameras to go into their alert mode (basically to do faster exports and uploads to off-site). That way if there is a fire or break-in, we will have the most current record.
Aside: One goal is to use Amazon Cloud Drive, since these are photos, and with my prime subscription will give me free, unlimited storage. I plan to loop it in some way not to abuse it, and keep only a couple weeks in the cloud, but still nice to have a free place (and get more value from the Prime subscription).

So I started hunting down software with various web searches and asking around. I eliminated those products which appear more enterprise oriented, specifically where you could not get a trial or pricing online. Basically if I had to “have a salesman call” I decided I did not want it. Perhaps unfair, but that was the first filter.

I eliminated hardware NVR’s, and eliminated software that was vendor specific as I did not know if in the future I may have different vendor cameras. Neither of these decisions were made for functional reasons, I have no idea if some NVR (or NAS with VMS) or vendor-supplied software may even be better. I just didn’t try any. And in a few cases their web sites were just so vague and market-speak without any content on features or cost I gave up. So I make no pretense this is comprehensive and hit ever product in my price range.

The short list I ended up with included: Zoneminder, Xeoma, BlueIris, AxxonNext, iSpy and XProtectGo.

There’s a summary below, but here is what I found for each, at least until I eliminated them from the running.

iSpy: This seemed very promising at first, but then I found their hook – it is subscription based for access off the local LAN. Worse in my mind, even on the local LAN the authentication and authorization requires access through their internet site, you cannot just connect from your client to your server even in your own house (you can stream directly – the stream does not go out to their server, but their server has to play middleman in between access). I get the need for a business model to make money, but I really do not like the idea of a “mother may I” on each access going out to the internet. What happens if they vanish one day? They seem legit, but what happens when they get hacked – with some level of access inside to my server? Pass – no testing done.

XProtectGo: This is a free version of a large commercial product that looked quite promising. The restrictions I noticed looked reasonable. It installed a LOT of software in my brief trial, and then I saw it – there’s a 5 day limit on archiving. I also tried and tried on their web site to find the price of the upgrade without any luck. Decided to Pass. Still cleaning up the dozen or so things it installed, trying to separate out the SQL install it did from my development version I already had. Use caution if you want to undo your install cleanly, maybe a VM or at least snapshot.

AxxonNext: Another free version of a commercial product, this had much more promise. It allowed 16 cameras with (mostly) full functionality, except you could only store 1TB of storage. I think that might be enough, not sure, so I started testing.

On the good side it is very slick and deep. It has the greatest variety of motion detection features I found (though they are set up in a bit of an odd way) It’s live view and archive playback are well integrated, you can choose to see archive on multiple cameras at once, or keep some on live while playing back another. A picture in picture pops up to show certain activity, and alerts can be set up that are organized and presented for you. You also can mark them off (if you choose) as false alarms, or more serious for historical record (probably not important for a residence). The interface was a bit odd (not very Windows-normal) but was easily understood and after a brief learning curve easy to use.

On the bad side, my camera (Hikvision DS-2CD2332-I) which is a couple years old was not listed, and it is a real pain to get unsupported cameras defined. It would “find” it but put it into a “manually configure” state, but there was zero facility to manually configure – you can choose RTSP, but you can’t enter a string – it still has to figure out it itself, and if it doesn’t – too bad. I finally got it to work trying Hikvision cameras at random until one “took”. On the good (or bad) side, it also takes over the camera, and settings (like rotate) that most products did in the product were instead executed in the camera. That is good if your camera is fully supported – you have a single place for setup and changes if you want that. But it is bad if you had to pretend to get the camera defined, as those settings might not work. It is also bad if you prefer to manually configure cameras.

A bigger issue for me was lack of any way to export images on a continual basis for upload to a cloud provider. If it is in there, it is well hidden, and I really looked. I also found little user activity on various forums. My guess is this is more commercially used than DIY’s, a mixed blessing as it means deep and rich features, but little help for people twisting it to fit a residential setup. I suspect most larger commercial setups depend on physical security of the recording server moreso than you can at home, and so cloud upload is less relevant on a real time basis. I also was unable to find any mechanism to have an external trigger. There must be one, but it didn’t stand out.

I did not try the mobile client – there is one, purpose built by the manufacturer, so I suspect it is good. Decided to Pass.

Zoneminder: Zoneminder is a true open source project that has been a staple in the DIY industry for some time. It has had numerous maintainers that come and go a bit, leading to times when the project is more or less active. I had great hopes for this based on recommendations, and it was my favorite going into these trials – after all, what’s not to like in a product where one (if a programmer) can fix what you do not like, and is free.

On the good side – it installed easily (I used one of the pre-made packages for Ubuntu), no issues in getting it running. I also later decided to build from source with the latest updates. That was more of a challenge, largely because I was running on a late version of Ubuntu which had switched from init.d to systemd, leading to changes in how you had to do startups. Worse, however, is that the package I was using in the non-source-built version used significantly different paths than seemed supported by the nascent distro-specific sections of the build (notably /usr vs /usr/local and the location of the web directory). All very fixable if you are good with unix, which I am not. But after a few hours of head beating I could get a version running built-from-source that worked fine. Very nice. Easy given the amount of code.

Still on the good side, it was linux based, and very much styled as a typical linux program – easy to figure out config information, options to control logging and integration with syslog, etc. The other components (e.g. mysql) were documented and accessible, and so could be managed and updated without depending on zoneminder per se. It also did not have a GUI requirement – it was purely web based and runs nicely on a headless server. It also means that, in a sense, the “remote access” was the exact same as the local access – there’s no separate GUI/web feature set really (other than screen size issues).

Continuing good news – camera set up is fast and flexible, very flexible – it does not depend on built-in camera databases (out of date before they can be published, though there are Wiki’s with camera setup data) so much as letting you plug in the appropriate strings for each camera. The access is (mostly, PTZ excepted) read only. Those expecting to just plug in a camera and manage it completely from here (i.e. program an IP camera from the tool) will be disappointed, but frankly I prefer the opposite, I do not want the VMS changing the settings I put in the camera.

The bad news is that, in part from age, in part from the web centric view, the user interface is a bit awkward. If you switch from the “classic” to “flat” CSS (not skin! Despite some documentation to the contrary), it looks MUCH prettier on a desktop. Also, for a given size monitor, you can set the appropriate scale and arrangement for the live view to be quite presentable.

Where this becomes a mixed blessing is on touch devices – because the UI is all things to all situations and started life firmly on the desktop, controls are not very user friendly – too small generally. So if you are using (say) a tablet on the wall for display, you will find it looks great until you try to navigate and access archive, etc.

One thing that bears mentioning, that was not immediately obvious. Zoneminder does not really do video internally. It pulls JPG stills from the video stream and uses that for everything – motion detection, replay, archive, etc. So your archive is thousands, maybe millions of still images. This is a mixed blessing – on the good side, you can get stills for other purposes (e.g. upload to the cloud) trivially with outside scripts. On the bad side it is pretty inefficient for both disk space and network bandwidth in some cases (a complex question that also depends on your browser, as many tools need to send browsers jpg’s due to lack of video support, so in those cases this has a head start). One of the maintainers said the roadmap includes a switch to video archive instead.

When it comes to user front ends, one of the worst (and potentially best) aspects of Zoneminder is the archive review. The legacy formats – lists of textual descriptions of events and which had alarms you can look at one by one – is just awful and unusable. They have a “Timeline” review that is potentially terrific, but very weak in the present incarnation (which is labeled “beta” but I think it is one of those permanent betas, not sure how much activity it has).

The “Timeline” presents a graph, with one image shown. The graph shows you (by spikes) where motion was detected, and you can mouse-over the timeline and the image changes to that specific time as you do. Very fast (if you are locally connected). You can include multiple cameras in the timeline, so as you go left to right you change in time, if you go up and down you see different camera views.

The bad news is that you can see only one camera at a time, and it is in a tiny, tiny window (probably for those who still run on 800×600 monitors). The size is hardcoded; I looked at the source code. If someone took the time to allow the image to be scaled (like other monitor views) and also to put up an image for each (or select) monitors, this would be great for a local archive review tool. As it is, it is MUCH better than the zoneminder alternative, but a far cry from what other products have. I would be remiss in not pointing out the source code is provided if you desire to fix it yourself.

Finally this is largely a Firefox-only program, I had lots of trouble getting anything to work in Chrome or IE. Not minor bugs, but things that just did not work at all, making it unusable. Firefox works fine, most of the time, but even then I had some issues (I think memory related but not completely fixed as I increased for 4G -> 10G which is all I could give on my desktop HyperV VM).

There are other zoneminder clients for android, though not from the same team. I tried ZmView, and it was decent (with a big “however” coming). It was fast to navigate, and easy to use. It has a free version filled with REALLY OBNOXIOUS ads, but a pro version that removes them. However I found one aspect completely unacceptable – if you navigate away from it, including closing it by hitting back, it continues to run and consumes massive amounts of batter and CPU. I only managed to stop it by force-stopping it from the setup menu. It does not, it appears, honor the usual android “go to sleep as you are in background” signals. Also, while the free version is recently updated, the pro version was last updated in 2012, so it does not seem to be maintained (maybe the free was updated for more obnoxious ads).

I also tried “Zoneminder Client (Unofficial)” and could not even get it to run.

A programmer is working on a fresh client now using the new API coming out in the near future, so there is hope for better mobile clients. You can also use the Mobile Skin which reduces spacing and size, but I found it at least as awkward.

Frankly I think to make this usable to me I would need to do a lot of work myself on the interface. While in theory I could, it is starting in a deeper hole than I really want to. I also worry that the work might lead me away from the roadmap of the project (since I am not in the loop), requiring a lot of catch-up later.

I did test Zoneminder’s CPU requirements, as well as the following products. This was a lazy test – I set up one camera at one speed doing the same kind of motion detection, and ran it to see my total CPU utilization. In this case Zoneminder was running in a HyperV VM, and Firefox on the host Windows 8.1 desktop. To some extent this is unfair to the unix based tools as the VM overhead is rolled in also, but even so Zoneminder with one HD camera hit 12% of my CPU. You can’t take that as a meaningful absolute number (which is why I am not giving all the CPU specs), but rather only in relation to the other products – putting it in the middle. Disk space requirements look to be several times as high (refer for both to the comparison at the end). My rough guess is that it would scale very well, as the live view was taking a lot of the CPU, and as you get more cameras while you get more JPG’s flowing, they drop to smaller resolution on the montage view, offsetting to some extent the number of cameras on the client side.

Zoneminder does not quite get a “pass” from me, but falls to #3 in my list. As I dig further into the other two, I keep it alive on the list as a fallback.

Blue Iris: I will not say as much about Blue Iris mostly because it is widely discussed and documented on the web. It is a commercial product, though apparently provided and maintained by one person (giving a bit of pause as to what happens if he decides to do other things, but it has a long history providing some reassurance).

It is Windows based and just works. Everything I tried just worked, more or less as I would expect it to. It had a terrific playback of all cameras in sync (if you like), the screens were clear and easy to understand. It had easy to use ability to extract stills in various flavors, and you had good control over where your archives go.

The documentation was thorough, and not just from the company – the product clearly has lots of dedicated users, who have extended it with other web UI’s and tools. In some cases the documentation was a bit inadequate (e.g. “support for in-camera triggers is provided for some cameras” without any indication of which or how to tell), but that was the exception. I did not attempt to contact the supplier with these questions, though indications online are that he is pretty responsive.

There is a paid ($10) Android and IOS client, I did not try them, but take from lots of discussion they work well.

So what’s not to like? Well, frankly not much – the two big things are that it appears to be a CPU hog (this is reported frequently throughout the web), and that it runs on Windows.

The CPU issue is hard to quantify. In my experimentation it took about twice the CPU of the next better product for doing the same thing. The product also includes a “record direct to disk” option which avoids transcoding and supposedly makes it much more efficient, but it was not much of a win for me. In fact I could not really see a difference in CPU. To be fair that may be because I was also running a live view at the same time – but even if not “normal” it is a fair test as you will be doing that at some times.

In my case with an older PC destined as the target, the CPU utilization is a concern. How will it scale? I do not know, at the moment I only have one IP camera. If it scaled linearly (doubtful) then I run out of horsepower at about 5-6 cameras on my current desktop which is 4-5 times as fast as the PC I hoped to use.

Thus in my particular situation, compared to a less piggy unix client, it will end up costing me quite a lot – $200 for a pro Windows to run it on, and maybe $500 or so in motherboard and CPU upgrades, or a similar amount for a new low-end box (the box I have is pretty high end, just old, so reusing it is attractive for disk and cooling reasons).

The included web client is poor, but there are ample instructions, examples and even some complete projects floating around on various forums that it looks easy to extend.

Two other minor points: I was unable in a brief look to tell what kind of database the product uses, not necessarily a killer point, but relevant as database integrity is clearly important. It would be nice to know if it is home grown or something like MySQL (do not think so as no sign of that install) or SQLite (no sign of the usual associated files either). The other is that the product requires admin privileges when running, perhaps legacy from its design, perhaps because it needs to operate (sometimes?) on hardware level devices that require privilege? But still a bit of a concern in today’s world.

So at the moment Blue Iris is in a reluctant second place. I would really like to use it, but the premium for having a home for it is pretty high (offset a bit by being relatively inexpensive as a product). But a really solid, thoroughly fleshed out product. And my safety net if the following falls through.

Xeoma: Now comes the product I can’t even pronounce. This is a product from FelenaSoft, a Russian company that I can find little about. They appear to have been around a while (2004), and specialize in outsourcing. My guess (emphasis on guess) is that this is a sideline they use to keep some recurring income to supplement the up/down nature of outsourcing revenue (wisely so).

I found a few people using the product, but it seems to have a much, much smaller following than BlueIris or Zoneminder. I rarely, though, found people speaking ill of it. This is in part because the company gives licenses away when you write about them (to be fair it doesn’t say you have to write nice things).

Reminding myself there is little about choosing a software product that locks me in, I decided to give them a try, and was pleasantly surprised. Maybe I should say very surprised, this is a very different piece of software, in (mostly) very good ways.

First, it is platform neutral – linux or windows or (even for the server) android. Same interface, same look and feel on all.

It is also a true client/server product (though confusing a bit because the actual executable you download has both contained in it). So I tested with the server running on headless ubunto 15.04, and the client on windows, and occasionally android.

It is also tiny and self-contained. The download for windows is only 32 meg, linux about 36 meg and it will run right from that executable – no need (but you can) to install. You can test run both client and server (or both at once) right from the executable without installation, making it a quick thing to give a trial run to. Their trial version has some rather unusual limits – you can run it for only 4 hours then it erases your setup. But you can run it for 4 hours again as often as you want, giving you unlimited trial period, but only in 4 hour chunks.

On the downside it is a very closed product. There is little information on configuration and database usage, the expectation is that it is complete and you use it as-is (with the exception of the web interface, more in a moment). It appears to use SQLite, but I infer that from file names not documentation. SQLite is an OK embedded database, but I would say just “ok”. But as to the closed nature – there is no option visible to do migrations or optimization/compression. It’s all contained in the product (or not), you just have to trust it. I am not a trusting sort, but keep reminding myself that the worst that happens is I change software later.

None of this closed nature actually affected my ability to use it, if anything the lack of configuration options means, well, you do less configuration and setup goes faster. You can specify key items, like archive location, to move things around on disk.

The really good part is that the product is really different. Very different, and in intriguing ways. The biggest is a graphical workflow approach to setup. You drag and drop functional nodes onto a picture with paths indicating image flow, leading from the camera to various destinations.

This puts the same features as most products into a whole different design paradigm. Consider if you want to take a video feed, capture video recordings when it detects motion, also capture stills on a recurring basis. In BlueIris there’s a motion tab, and a recording tab – the presumption is that all such check boxes apply to the one activity of that camera, i.e. they presume a linear, non-branching flow. Where there are departures (e.g. in-motion and not-in-motion still capture) there is a separate, thought-out-ahead option for it. BlueIris has thought out ahead quite nicely.

In Xeoma, however, you do not depend on the author thinking ahead. Below is a screen shot of a complex camera setup. The camera is on the top left. The “!” box is a “problems found” filter, and the “@” means send email (if problems found). You can specify where and what kind of problems inside the boxes themselves.

Xeoma

Across the top the camera flows to a marking box “T” where date/time and labels of your choice are attached. Then notice one line goes directly to a download box – that means “copy to file”. Inside I specified I wanted a still (you can get video clips) and to download ever minute one still, all the time.

Now notice continuing across the top the motion detection box (sensitivity and other settings inside). This says everything beyond on that path only happens when motion is detected. The three nodes there are to archive (and preview), download (on its own independent schedule and type of file) and send email (to possibly different people and with different contents).

Of particular note here, I used the download twice – once before the motion detection filter and once after, to get different schedules (and potentially different formats) depending on whether there is an alert going on.

I can also have lots of other work flows here – I can include external triggers, to cause Xeoma to follow a different path if an external device touches it in a certain way (TCP HTTP request), e.g. if a traditional alarm is going off. I can mark some downloads with text and not others. I can feed a webserver. But most importantly, I can string them together in ways I create, not depending on a programmer to think “hey, maybe they will want this combination, let’s add some more check boxes to the camera setup”. And with parallel paths. If you look in forums you can find for BlueIris and Zoneminder lots of “create another setup for the same camera to do that, with different settings”. Here you just create a branch.

It really is a paradigm shift in terms of designing more complex options. Now… do you need more complex options, or just to record? That’s a question only you can answer. I like the flexibility.

They also did a very clever thing in the motion detection – they allow it to pre-detect motion but not act on it. In other words, if you want to record all the time (not just with motion), it will analyze the frames as you go for all motion (no zones at that point), and then later you can search the archive not just by time, but by motion. You select the zone at the point of searching and it very quickly highlights the timeline with motion in that particular zone. Thus if you know (for example) someone went through a particular door, you can look for motion just around that door, without having to have decided that was an area of interest ahead of time. Very slick.

Also on the good news front it was very efficient, using the least disk space and least CPU of any I tried. Even given I was incurring HyperV VM overhead for the server in running both unix and windows, it still came out way ahead. Not knowing the database I do have concerns how this scales with very large databases, which I cannot test with the trial.

Now the good/bad news combination – the interface is the same for all platforms. The good side of this is on tablets and phones the nice big controls are quite usable in a touch interface. The bad side of this is on a traditional desktop setup (other than the node drag/drop) and data entry is slow. For example, you have to mouse between fields, tab does not work. Field highlight/erase does not work as expected either. So if you are a long term desktop user, the initial data entry will feel quite foreign. The good news part of this is once set up, you really do not do any data entry on a VMS, so this is mostly one time pain. And in return, you get a consistent client if you happen to be using a tablet to set this up or run it.

Now for some bad aspects.

There is no separate mobile specific client, only the full client. It works very nicely locally, but it is a real bandwidth hog. It is so much so that it is probably not usable over a cellular connection. There are no purpose built android or ios clients from others either. Further, the built-in web pages are mediocre at best, not much there. On the good side, they provide full details of how to build your own web pages, so if you are so inclined you can. There also does not seem to be an active user base (as with Blue Iris) contributing code to the public. If you expect to access frequently from a (metered) cellular or other low bandwidth connection, experiment first to see how it works for you, but expect issues (or a need to roll your own interface). If your main access is on fast networks, it works great.

I hit a few bugs. The email periodic mail from problems was sending mail periodically even with no problems, for example. It also did not correctly support daylight savings time with a split unix/windows client. Some of the UI’s that worked OK, were a bit fragile with navigation (for example, scrolling down there is no scroll bar but a big arrow (easy to hit with touch), but as you reached the bottom the arrow disappeared; if you touch it again where it was, it reacted to zip to the top again – requiring you to scroll very carefully or you never saw the last line). Most were minor and cross-platform oriented I think.

Mitigating somewhat the bugs is that the company was very responsive, appreciative of feedback on the bugs, offered quick responses (though mostly overnight due to time zone), and promising to incorporate fixes. They also regularly make betas available to solicit feedback. I did not hit any showstopper bugs, though the number of minor ones did give me some serious second thoughts.

One big gap I found is that simultaneous playback of multiple cameras is not possible. The vendor says it is on their list, but will not say when. I do not know how important in the long run this is, but it is a concern.

In the somewhat bad/somewhat good side, there is a significant amount of documentation for the product online. Most of it decent, and no language issues (whoever is doing it and corresponding with users is completely fluent in English, there is no hint of the bad translations you see in some products from the East). But it is strangely incomplete in places, not giving you a deep understanding of certain features to match the amount of words. I think this goes along with the “closed” comments I made above, which might be more accurately described as “just trust the product” approach. There is very little information on the details of what it does under the covers, and sometimes you want that to anticipate how it will work in certain circumstances. I really prefer to know all the nitty gritty details, but to be fair – most things I could not find, I did not need to know to make the product work.

As an example (and one where I did need to know), the “problem” node is event based – something bad happens right now. The email node has time frames in it (mails sent at intervals). How do these work together? Are problems accumulated until the interval passes? Are emails sent immediately but throttled to that interval? Will it send more frequently if a new problem occurs before the interval passes? This kind of information is just not covered. Do I NEED to know? Will the defaults be OK? Maybe. Very much a “trust me” attitude though in the documentation.

A related “trust the product” issue is errors and logs – every other product seems to have a log, readily visible, showing historical problems – loss of connections, disk space exhaustion or other issues, reboots, etc. There’s little of this. You can show some status information on the screen, and you can get emails (on some TBD schedule), but there’s no apparent log even on the server side. “Trust Xeoma”. Now if it just handles everything and I never really need to look this is great. But….

But it works so far.

Conclusion?

So where did I land? OK, the order was a give-away, but it is not that clear.

Well, there was no perfect product. Over a two week period I continued to set one aside and try another, get frustrated and come back to ones passed over and try again. I reinstalled AxxonNext three times, having gotten frustrated and removed it, thinking “I must have missed something” when I got frustrated with Zoneminder.

BlueIris was frankly the winner in terms of overall feature set. Xeoma was the most intriguing, and Zoneminder was the one I felt safest with in that I could always build it myself and modify if the support structure disappeared. Both Xeoma (little known company and user base) and BlueIris (one prolific guy) with both being closed source are a bit of a concern about a long future.

But I do not expect to invest heavily in terms of effort or infrastructure locked to a specific product. If a year from now the product I choose closes up shop, I can just go to the next on my list. It is not like (for example) choosing a programming language for my own development, where there is a lot of effort specific to it. So taking some risk of future viability is not a big risk.

So all that taken it comes down to – the more innovative Xeoma which does run on Linux as I wanted, or the more complete Blue Iris where I need to invest in more hardware and software.

Oh… wait…. Before I make that decision there are costs of the software, which I mostly tried to ignore during testing. I tried to limit my research to “cheap” software, meaning under $300 or so, but treat all the same if they were under that limit for evaluation purposes. But of course “money is no object” is never true, really.

Of the three on my short list, Zoneminder is of course free and unlimited. Xeoma is a bit more pricy at $149.95 and $74.95 for subsequent years. Blue Iris is more reasonable at $59.95 and apparently for major versions you need fresh licenses. The last version ran for 3 years of (free) updates, so think of it as $20 per year. Xeoma, trying to gain exposure, offers quite a few ways to get cheaper and free licenses, such as publicizing reviews. Fair disclosure, this review will probably get me a free 8 camera license (though difference in price is not really that significant up front, though the yearly amounts are).

Blue Iris there is a bargain, though at least in my experiments it will cost me more in hardware. For new installs, with new equipment –maybe not, base PC’s today are pretty fast, so the 2x difference in performance for Xeoma vs. Blue Iris may not be a significant factor.

I think I am going to give Xeoma first shot. It will have a few weeks of getting cameras in place (it is hard to run wire where I need to go) and it will build up slowly. Little risk, especially if they give me the free 8 camera license for the first year (though more expensive in subsequent years). I can see if I keep liking it. I can see the workload on the old, cheap PC. If I have lots of PC capacity left and it disappoints, I will likely switch to Blue Iris. If the PC runs out of horsepower and I need a bigger one anyway, I may switch to Blue Iris anyway, as then performance would not be an issue and I get synchronized playback.

But if it goes well and I think I can live with the web interface and the lack of simultaneous playback (and the bugs abate), it may be worth the higher ongoing costs.

As mentioned earlier, this is a review that is very biased toward my specific needs and opinions, and not intended to be comprehensive (despite the large number of words). I would in particular consider other products if your software budget allows, as I ignored many well-known products due to perceived cost (frankly I was just annoyed they won’t tell you on their web site the cost). Take all data with a grain of salt, and also consider it was done in July 2015, and may be obsolete depending on when you read it. Below is an overview in a tabular sense.

(Click image for larger image)

NVR_Spreadsheet

Update 7/28/2015

So after about a month of working down this path I have quite a few revisions in my thinking.

First a couple of corrections:

Blue Iris is reported above as supporting simultaneous playback (i.e. review some/all monitors at once). It does not, that was just incorrect.
I found my technique for measuring CPU requirements was flawed on the unix boxes. I was using a HyperV VM and discovered to my chigrin that task manager reports CPU in the host OS only for the host OS, not the other VM’s (other parameters include the other VM’s). So my CPU estimates for Zoneminder and Xeoma were low in the above, however I do not think they were so low as to change the overall ranking – Blue Iris still seems worst, but it is neck and neck with ZoneMInder.
ZoneMinder has another issue of resources worthy of note — it has dramatically more memory requirements than the other two products, in particular shared memory. I am now running severn 1080p cameras (at 2048 x 1536) on a 6GB unix system and it is just at the edge of workable.
Over this time I spent most of my efforts with ZoneMInder, primarily because it is the one most succeptible to modification. A word of caution – you can get lured in, and consumed, programming in the environment if you are programming-inclined.

What hooked me was what appeared to be a relatively simple fix to have a review feature that would display all cameras and let you scrub back and forth through history. From there a modification to extract real time (but infrequent) images for upload to the cloud. It is all downhill from there — don’t like something, just fix it. Like a drug.

Most of my conclusions remain however – Blue Iris (though my trial expired so am not continuing to experiment) still seems the most smooth and packaged solution with a depth of user base. Xeoma seems the most packaged multi-platform, with completely transparent client/server use on linux, android and windows.

But ZoneMInder is where I am spending most time. I have a linux physical server now serving seven cameras, and am working to get the displays and other features customized just the way I want. It is worth noting that ZoneMinder is not for the linux-phobic, or for those who do not want to tinker. Xeoma and Blue Iris are much more suitable there. ZoneMinder is also under a lot of change – there are volunteers (for example) incorporating video storage (it now stores video as multiple JPEG’s), which may have substantial impact over the coming months if they complete that work. But the good news is that it is getting active maintenance and attention.

I may yet flip back to Xeoma. But for now, am spending time programming in ZoneMinder. At least it’s a chance to resurrect old C++ skills, and finally lean Perl.