for version 5.3.1
Written by Ben Bird - Ben Software Ltd
SecuritySpy is CCTV video surveillance software for the Mac.
With features such as AI-powered smart motion detection, email and iPhone alerts, ONVIF support and Pan/Tilt/Zoom control, SecuritySpy will enable you to set up a comprehensive and effective CCTV system for your business or home quickly and easily.
SecuritySpy can turn any Mac into a video surveillance station (for example, with multiple large screens in a security control room). It it also ideal for autonomous remote operation, as it has a fully-featured secure web interface that allows you to access and control your surveillance system from over your local network or over the Internet. And, as Mac software, it is as elegant and easy to use as you would expect, with a carefully-designed user interface.
If you are building a video surveillance system from scratch, all you need is SecuritySpy, a Mac, and some IP cameras. If you have an existing system using analog cameras, SecuritySpy can use these alongside more modern IP cameras, allowing you to transition to a state-of-the-art digital system.
SecuritySpy's flexibility will allow you to set up a system that is tailored for your individual needs, whether you want a single camera or a hundred.
This manual describes how to use the SecuritySpy software itself. For information about how to choose, set up and install the hardware of your CCTV system, see the SecuritySpy Installation Manual.
The main features of SecuritySpy are:
Initially, SecuritySpy will detect and display all local (USB, Thunderbolt and built-in) devices connected to your Mac. If you are using IP cameras, you can add them via Preferences - Cameras. Setup instructions for IP video devices can be found in the SecuritySpy Installation Manual.
SecuritySpy's main All Cameras window shows live video streams from all configured cameras in a grid view. You can also create Group windows that contain particular groups of cameras — useful in larger installations to organise cameras into logical collections.
In addition, each camera can be displayed in its own individual video window. You can open individual camera video windows from the Window menu, or by double-clicking on a camera's live image in the main video window or Group window, or by double-clicking on a camera name in the Camera Info window. All video windows can be resized to any shape and size by dragging any side.
SecuritySpy offers digital Pan/Tilt/Zoom control for any camera in any video window: hold the Command key (⌘) on your keyboard and scroll up or down on your mouse or trackpad (on a trackpad, use the two-finger gesture to scroll). Once zoomed in, release the Command key and scroll in any direction to pan around the image.
Here is a summary of the functionality of video windows:
The instant replay feature keeps a buffer of frames from each camera in memory, which is available for instant playback or capture at any time. Because this feature can use significant RAM, it is off by default, but can be enabled via Preferences - General. To start an instant replay session, right-click on a live video image and select Start Instant Replay, or hold the Command key and scroll left on a live video image. During an instant replay session, the video window will look like this:
During the replay session, hold Command and scroll left/right, or click and drag the yellow indicator, to go backwards/forwards in time. Save individual images by dragging them to the Finder, or right-click for an option to save the entire buffer as a movie file.
Note that, during a replay session, the removal of old frames is suspended, but new frames are continually being added, so the longer a replay session continues the more RAM it will use.
Full Screen Mode
Enter full screen mode using the option in the Window menu, or by pressing Command-F on the keyboard. Each monitor attached to your computer becomes an independent full-screen display for whichever cameras you choose. The first time you enter full screen mode, SecuritySpy will add all available cameras to the full screen view; to change this, right-click (control-click) anywhere on a screen and a menu will pop up that allows you to configure which cameras to display on that screen.
While in full screen mode, double-click on any individual camera to temporarily enlarge it to cover the whole screen. Double-click again to return to the multi-camera view.
This window is available by selecting Camera Info from the Window menu:
The Camera Info window shows a wealth of information about the operation of each camera:
To choose which columns to display, click on the header bar to get a pop-up menu that allows you to turn on or off each of the above items.
In order to record video from a camera or for events to be triggered, the camera must be armed, and there are three modes that can be armed independently:
Each mode (Continuous Capture, Motion Capture and Actions) is armed and disarmed based on a schedule, which defines time periods when that mode should be armed. You can set up your own schedules via Preferences - Scheduling, or use the built-in schedules, which are:
Once a schedule has been applied to a camera mode, it will be permanently remembered, including across program restarts.
It is sometimes useful to temporarily override schedules. For example, if you are getting lots of notifications due to some unusual activity in a particular camera, you can use a temporary schedule override to disarm Actions mode for one hour, to temporarily stop the notifications.
This can be best understood by the following diagram that shows the relationship between schedules, schedule overrides, and arming/disarming of camera modes:
Setting Schedules And Overrides
There are a number of ways to schedules and overrides for a particular camera, or group of cameras:
Click on one of these indicators for a pop-up menu to select the schedule for that mode. These indicators are coloured as follows:
From this window, you can easily apply schedules and overrides to individual cameras, groups, or all cameras in one go.
SecuritySpy's Browser feature allows you to play back, export and manage captured footage. Choose Browser from the Window menu to open the Browser:
Select one or more cameras and specify a date, and the Browser will display all files matching these criteria. The main components of the browser are:
For the date you specify, the Browser displays all footage captured during that day. Click the calendar icon to get a pop-up graphical calendar, which makes choosing the desired date much easier.
This list shows all active cameras in SecuritySpy. Select up to six cameras to view footage from them all, synchronised together. To select multiple cameras, shift-click or command-click entries in the list.
This list shows all files that have been captured by all selected cameras on the specified day. Click on any file in this list to jump to the start of that file in the timeline, or double-click on a file to start playing it immediately.
Finder file tags can be set for any file: right-click on a file in the list, and select a tag from the menu. In the above screenshot, two files have been tagged red.
You can also drag files from this list to the Finder to copy them.
The timeline shows a graphical representation of time periods during the day that have captured video footage for each selected camera. Click anywhere in the timeline to change the current cursor time, and click and drag left and right to scrub backwards and forwards through the video footage. Hold the shift key on the keyboard while dragging the timeline cursor to select a time period, which you can then export.
Any files captured since the last scan will be added in red, indicating that they have not yet been queued for display in the movie area. To play these files, use the Rescan option in the Browser menu (see below) to add them to the movie display.
Files in the trash are showed in grey, but will still be playable until you empty the trash.
Bookmarks appear as red triangles at the top of the timeline, and are useful for marking the time of interesting events in captured footage:
To create a bookmark, double-click at the top of the timeline. Right-click (control-click) on an existing bookmark, or anywhere in the timeline, for a pop-up menu with options to create, edit, delete or jump to a bookmark. Each day has its own set of bookmarks, which are saved permanently.
This is the area that actually displays the captured footage. If you have selected multiple cameras, they will be displayed in a grid, in the most optimal arrangement for the size of the Browser window and the resolution of each selected camera.
Advanced Movie Search
For any camera that has the appropriate Movie search metadata options enabled under Preferences - Cameras - Triggers, the Advanced Search feature (available from the pop-up menu at the top of the Browser window) can be used to find events in the recorded movie files. Select the Advanced Search option and a panel appears that allows you to set search criteria:
Click and drag in each camera's image to define search areas, and specify whether you want all motion events, or specifically events where a human or vehicle has been detected. Click the Search button, and the Browser will list all events that match the specified search criteria:
Clicking on an event in the list on the left moves the timeline to that point in time, and a red box will be overlaid on the video footage of the relevant camera to highlight the location of the event.
The Browser also supports JKL keyboard shuttle controls: pressing L causes the playback to speed up in the forward direction by a factor of 2, J causes the playback to speed up in the reverse direction by a factor of 2, and K pauses the playback.
Zoom In/Out Video Playback
To zoom in or out of the captured footage during playback, hold the Command key (⌘) and scroll up or down on your mouse or trackpad (on a trackpad, use the two-finger gesture to scroll). Once zoomed in, release the Command key and scroll in any direction to pan around the image.
The Browser menu in the menu bar contains the following options:
Browser Menu - Export File
This option allows you to export any file that is currently selected in the file list. The video and audio data is copied directly to the exported file, so there is no loss of quality.
When exporting a file, you have the option to set the playback frame rate. In this way, you can create timelapse movies that play back at much faster speeds than real-time. Note that doing so will remove any audio track in the movie.
Browser Menu - Export Selection
Make a selection in the timeline by dragging the cursor while holding the shift key. Then, for any camera that is currently selected in the camera list, this option allows you to export the video footage contained within the selected time period. The video and audio data is copied directly to the exported file, so there is no loss of quality.
Browser Menu - Export Current Frame
For any camera you have selected in the camera list, this option allows you to export a still image from the current time as a JPEG file. This option is available only if there is some valid footage for the specified camera at the current time.
Browser Menu - Rescan
This rescans files for the currently-selected camera(s) and date. This is useful for adding to the movie display any files that have been captured since the last scan, in order to play them.
Browser Menu - Reveal in Finder
This option tells the Finder to show all the files that are currently selected.
Browser Menu - Move to Trash
This moves all selected files to the Browser's trash. The Browser keeps its own trash, separate from the Finder's trash.
Browser Menu - Empty Trash
Use this option to permanently delete all files in the Browser's trash.
Browser Menu - Zoom In/Out Timeline
Use these options to zoom in or out in the timeline view. Zoom in to see the position of time objects in detail, or zoom out to get a more general picture of captured footage throughout the day.
Each video window containing a camera that supports PTZ will have a PTZ button in the right side of the window's title bar: click this button and a PTZ drawer will slide out, allowing you to control the cameras in the window:
The PTZ controls act as a "virtual joystick", allowing you to control direction, as well as speed of movement, for cameras that support variable-speed movement (the further you move the blue indicators from the centre of their respective control areas, the faster the movement).
If your camera supports preset positions, the eight preset buttons will be available. To save the current position of the camera as one of the presets, hold the alt (option) key on the keyboard and click a preset button (the Home position, if available, is typically pre-set by the manufacturer and cannot be changed).
Click the gear button in the top right of the PTZ drawer to reveal these settings:
Here you can name each preset position, as well as specify the maximum speed at which your camera will move (if you camera supports variable-speed movement).
PTZ Keyboard Shortcuts
You can also control PTZ from the keyboard, using the arrow keys, or the numeric keypad on the right of standard keyboards (1 on the keypad corresponds to down-left and so on). For cameras that support variable-speed movement, holding the shift key while using these keyboard shortcuts moves the camera 50% faster than the standard speed.
You can recall presets by pressing a number key at the top of the keyboard; hold alt (option) with a number key to save a preset.
Even if you don't have the PTZ drawer open, simply click once on the video image of the camera you want to control, and you can then use these keyboard shortcuts.
PTZ Mouse Shortcuts
Hold the shift key (or enable caps lock), and click directly in a camera's image in any video window to control its pan and tilt: a click on the right side of the video image will move the camera right and so on. If your camera supports variable-speed movement, the distance of your click from the centre of the image defines the speed of movement.
PTZ Control Permissions
Note that devices typically require administrator username/password details for controlling PTZ, so make sure these have been entered correctly in the Preferences - Cameras - Device window. Non-admin authentication details required for simply viewing video may not be enough for controlling PTZ.
The Dashboard window displays various performance metrics, which allow you to monitor the daily operation of your SecuritySpy system and spot any potential problems. Choose Dashboard from the Window menu to open the Dashboard:
The main performance measures available are as follows:
The Smoothing slider controls how much smoothing is applied to the data for display: low values give you more detail whereas higher values make it easier to see the overall shape of the data.
Dashboard data is kept for 30 days before being automatically purged.
You can use one instance of SecuritySpy running on one Mac to view cameras attached to another instance of SecuritySpy running on a different Mac. In this way, you can use SecuritySpy as client viewing software, providing a better user experience than viewing via web browser. For the purposes of viewing-only, SecuritySpy can be used free of charge in its unlicensed state.
To set up one Mac (the server) to transmit video to another Mac (the client):On the server Mac
There are two ways to add cameras to the SecuritySpy client instance:On the client Mac: adding all cameras in one go
On the client Mac: adding cameras individually
Note that each viewing instance puts additional processing load on the server. You can reduce this load by specifying a low frame rate in the above window, and/or by using JPEG compression rather than H.264 compression (but be aware that JPEG compression uses more bandwidth).
HomeKit is Apple's home automation system that allows control of a wide range of smart accessories, such as lightbulbs, power sockets and door locks. SecuritySpy integrates with HomeKit via a free helper app called HomeHelper. To use HomeKit with SecuritySpy, you will need to install HomeHelper from the App Store onto the same Mac that is running SecuritySpy.
Triggers define rules for initiating Motion Capture and Actions in cameras, based on changes to the state of HomeKit accessories (e.g. a light turning on initiating recording in a camera). You can add multiple accessories to each trigger, and each accessory will initiate the trigger. For example, the following trigger is initiated when either of two power sockets turns on:
Actions define rules for setting states of HomeKit accessories that can be initiated by SecuritySpy (e.g. motion detection in a camera causing a light to turn on). Multiple accessories can be added to each action, so that one action can make multiple changes. For example, the following action will turn on two lamps, and then reset them to their previous states after a short time:
HomeHelper Actions are set for cameras under Preferences - Cameras - Actions.
An indicator at the bottom left corner of the HomeHelper window shows its status, which will be green when successfully connected to both SecuritySpy and HomeKit.
You will need to sign into iCloud on the Mac that is running SecuritySpy and HomeHelper.
Managing HomeKit devices
To add, remove or rename HomeKit accessories, use Apple's Home app.
HomeHelper must stay open
In order to function, HomeHelper must be open and visible, but it can run quietly in the background. SecuritySpy will open and close HomeHelper automatically as necessary.
Why is this a separate app?
This is required due to two limitations imposed by Apple. The first is that normal macOS apps, such as SecuritySpy, cannot access HomeKit; only iOS apps can. Therefore, HomeHelper has been implemented as a Mac Catalyst app, which is a framework that allows iOS apps to run on macOS. The second is that HomeKit apps must be distributed via Apple's App Store, which is a limitation that we don't want to impose on SecuritySpy itself.
Can I view SecuritySpy's cameras in HomeKit?
Unfortunately, there is no official way to make SecuritySpy's cameras available to HomeKit. At this time, the only official HomeKit accessories allowed by Apple are hardware devices from manufacturers who have been through a strict certification process.
In addition to SecuritySpy's built-in web interface, which can be viewed in any web browser such as Safari or Google Chrome, SecuritySpy also has its own iOS/tvOS app to provide the best viewing experience on these platforms. For more information, please see the SecuritySpy iOS/tvOS app page.
Here are the steps we recommend to set up your SecuritySpy system to operate autonomously:Set SecuritySpy to open whenever the computer starts up
Open SecuritySpy and click and hold the mouse button on the SecuritySpy icon in the Dock. From the menu that pops up, select Options -> Open at Login:
Set your user account to log in automatically
Make sure that Automatic login is enabled in the Users & Groups system preference, so that when the Mac starts up, it automatically logs in and opens SecuritySpy.
Set the computer to never sleep
Open System Preferences and click the Energy Saver item. Depending on your macOS system version, your Energy Saver settings may look different:
It is also recommended for best performance to disable the setting Put hard disks to sleep when possible. Display sleep should be left on, to save power and prevent monitor damage.
Set the computer to restart after a power failure
Open System Preferences and click the Energy Saver item. Enable the option Start up automatically after a power failure. For extra protection, click the Schedule... button and set the Mac to start up automatically every day.
Set the Mac to restart once per week
This can be done via the Schedule... option in the above window. This can increase reliability when leaving the Mac running for long periods of time.
Enable remote access
See the Preferences - Web section in this manual for details. This will allow you to view and administer your system remotely.
Close all video windows
Video windows are not required if there is no one operating the computer, and they will use CPU resources, resulting in lower performance.
For added security, enable the login screen Invoking the login screen helps to prevent unauthorised access to your Mac. You can achieve this when your Mac first starts up, by following the instructions in this FAQ: Can SecuritySpy run behind the login screen?, and you can set your Mac to automatically go to the login screen upon display sleep, via the Security & Privacy system preference.
Using multiple cameras simultaneously involves moving, calculating and storing large amounts of data. To get the most out of your computer you should:
Note: eGPU devices are currently supported on Intel Macs but not Apple Silicon Macs.
For most systems, video decoding is the most resource-intensive task that SecuritySpy needs to do. Modern Macs can decode multiple simultaneous video streams via their built-in hardware modules (located variously in the CPU, GPU, or T2 chip, depending on your particular Mac model), but there is a limit to this capability, and when exceeded, your system may suffer from uneven live video and less effective motion detection (in this case, SecuritySpy writes a message to the log file to this effect, which you can check via the Open Log option in the File menu).
There are a few solutions to this. The first is to lower the frame rates of your cameras until the problem is no longer apparent. Another is to assign some cameras to software decoding rather than hardware decoding (software decoding uses the Mac's standard CPU cores, which takes pressure off the decoding hardware, but will significantly increase CPU usage).
Alternatively, if you don't want to reduce frame rates or increase CPU usage, then adding an External GPU device (eGPU) can be a good solution. Supported eGPU devices are described in Apple's document Use an external graphics processor with your Mac.
To assign a camera's decoding task to an eGPU, click the indicator shown in the Hardware Video Decode Status column in the Camera Info window (if you don't see this column, click on the header bar at the top of the window that shows the column names for an option that allows you to add it), and you will see a menu like this:
This allows you to assign each camera's video decoding task to your Mac's internal hardware, external eGPU hardware, or software CPU decoder. If, for any reason, the eGPU cannot be used, SecuritySpy will fall back to internal hardware decoding. The status indicators shown in the Camera Info window are as follows:
An internal hardware decoder is being used
An external hardware decoder is being used (eGPU) *
The CPU is being used because there are no hardware decoding resources available
The CPU is being used because it was selected by the user
* The eHW indicator is shown on macOS 10.15 and later only. On older systems, this information is not available to SecuritySpy, so the HW indicator will be shown instead. In this case, you can use other means to check eGPU usage, such as Activity Monitor.
Encoding will be performed when recording from any camera that has been specifically set to recompress video data under Preferences - Cameras - Device, and for video streams generated for sending via the web interface. SecuritySpy will automatically distribute encoding tasks across all available internal and external hardware.
SecuritySpy's motion detection algorithms are highly accurate under a range of conditions, however there are a few things that you can do to ensure that high-quality data is passed to these algorithms in order to give you the best possible results:
How you position the camera, as well as the focal length of the lens (how wide-angle it is) makes a big difference to the effectiveness of motion detection. The key points to consider are:
|Bad: the lens is too wide, so the details of the cars are difficult to make out, let alone people; lots of sky is included; and unless you want to capture boats, the large area of water on the left is a waste of pixels.||Good: the lens has the perfect length to capture just the area under surveillance, so that the people are large enough in the frame both for effective triggering of motion detection and for distinguishing facial features.|
It is vital that the camera itself does not move, as this would significantly compromise the effectiveness of motion detection. Mount cameras securely, using a sturdy bracket, on a fixed object such as a building. Avoid mounting cameras on trees or poles that can move in the wind.
In low-light conditions, cameras can produce significant noise. This is because the camera has to boost the signal from the sensor in order to produce a bright enough image, which also boosts the noise. Here is an example of what this looks like up close:
In a noisy image, the detection threshold for real motion has to be increased, so that it will take a lot more movement than normal to trigger motion detection. This results in real events being less likely to be detected (i.e. more false negatives).
The solution is to install better lighting for the scene you want to capture – either visible or infra-red (if your camera is IR-sensitive).
Many cameras have built-in infrared LEDs for night vision. These work fine in limited circumstances, however they are typically not very effective beyond a few meters. They also have a further disadvantage when used outdoors in that they tend to attract insects, which fly around the camera, brightly lit by the IR light, triggering motion detection. You will get far better results if you use separate IR or visible light illuminators, which are typically also much more powerful.
Video from IP cameras is compressed, typically to H.264 or H.265 video format. With the right compression settings, these formats can provide very high quality, but with the wrong settings they can cause unacceptable image degradation. Here is an example of low-quality H.264 compression:
There are a number of parameters that can be set in your camera to control compression quality:
Low frame rates will impair motion detection accuracy. The algorithm works best at around 10fps, but in general you should use a frame rate of at least 5fps for effective motion detection.
Masking (available via Preferences - Cameras - Triggers)
Setting a mask to ignore certain parts of the video image is an effective way to reduce false-positive triggers. Typically you will want to mask out objects that move in the wind (e.g. trees and plants), or areas where you are not interested in detecting motion. However, make sure that you do not mask out more than necessary – the algorithm works best when it has plenty of pixels to work with.
|No mask - activity in the entire frame will trigger motion detection||A mask to ignore motion in the road and motion caused by the tree|
Trigger Time (available via Preferences - Cameras - Triggers)
This setting specifies the minimum duration of continuous motion that will generate a trigger. By default this is 1 second, which works well in most cases. Real motion (e.g. a person walking) typically lasts significantly longer than one second and hence will be detected, whereas many types of false motion (e.g. leaves blowing in the wind or snow falling close to the camera) exhibits a start-stop pattern that will be effectively filtered out by this feature.
Further considerations for AI-based motion detection
The above advice applies whether you are using the AI-based motion detection features or not, as images still go through the normal motion detection algorithm first before they are passed to the AI for further processing. The main thing to be aware of is that computer vision algorithms work far better on high-resolution, clean, clear images than low-resolution, noisy, cluttered ones. Specifically:
Under Preferences - Cameras, the plus (+) button at the bottom left of the window allows you to add a camera; in the menu that pops up, you also have the option to add one of your Mac's screens, for example:
In this case, there are three screens available, and each one can be added as a video input source, as though it were a stream from a camera.
Screen capture can be resource-intensive, so it is advisable to keep the frame rate (which you can set under Preferences - Cameras - Device) low, especially for high-resolution screens.
The Preferences window contains all settings for the software, and is organised as follows:
Note that changes to Preferences are not applied immediately as you interact with the controls in this window, because this could interrupt recordings that are currently taking place. Instead, use the Save option in the File menu (Command-S on the keyboard), or click the Apply Preferences button in the top right corner of the window, to apply any changes you make.
This section contains general-purpose settings to configure the software:
Display - Show camera information in video windows
This option controls whether camera information (camera name, incoming video frame rate, display frame rate, audio indicators, armed modes, and recording status) is displayed on a line at the top of each live camera image in video windows (but not in captured footage). Click the Customise button to choose which elements to include in this information display.
Display - Make video windows float over other applications
When enabled, all of SecuritySpy's video windows (the All Cameras window, Group windows and individual-camera video windows) will appear over the windows of other applications, even when SecuritySpy is in the background.
Display - Draw red box around moving objects in video windows
When motion detection is enabled, and there is a moving object in any camera's video image, a red box will be drawn around the moving object in the camera's live view in all video windows.
Instant video replay buffer
This feature keeps a buffer of video frames in memory for each camera, which is then available for replay at any time in video windows. Note that specifying a long duration and/or high frame rate here can use significant RAM. See Live Video for information on how to use this feature once it has been enabled here.
Performance - Display cameras at half frame rate in video windows
When enabled, all cameras will display at half frame rate in all video windows. If you have many cameras and/or many video windows open at once, enabling this option may result in lower CPU usage (how much lower depends on the resolution and frame rate of your cameras, and the speed of your computer's graphics hardware). This option affects display only; it doesn't affect video capture.
Performance - Perform motion detection only when required
When enabled, motion detection will only be performed when it is required for triggering motion capture or actions, which will result in lower CPU usage when it is not required for these purposes.
Performance - Decompress incoming video frames only when required
By default, SecuritySpy will decompress all incoming video frames, whether or not each one is actually required. The advantage in doing so is that frames are then available at all times, so if video from a camera is suddenly required after a period of not being required (e.g. a video window is opened after previously being closed), then a video frame will be available immediately; otherwise there may be a significant delay until decompression can resume and the next frame is available.
To avoid a long delay, make sure the camera's key frame rate is not set too high (this is the frequency of self-contained key frames in the compressed video stream, and can be referred to by the following names by various manufacturers: I-frame interval, I-frame rate, GOV length, Intra frame period). A good setting is around twice the frame rate of the stream, which will result in a maximum delay of two seconds (e.g. if the camera is streaming video at 10fps, then set the key frame rate to 20).
Enabling this option could result in significantly lower CPU usage, especially if the features that require decompression are used infrequently. Such features include motion detection, display in video windows, delivery via the web interface, and recording to disk where SecuritySpy is performing recompression of the video stream.
Maintenance - Restart automatically after a crash
Every effort is made to ensure that SecuritySpy is as stable as possible, however since it relies on other software components written by other parties (such as system software and driver software for video input devices), stability cannot be guaranteed. Therefore it is possible, although unlikely, for SecuritySpy to crash ("unexpectedly quit"), and if the computer may be left unattended for long periods of time, this is a potential problem.
When this option is enabled, a background application is launched that monitors SecuritySpy and restarts it if it crashes. This application runs invisibly and uses almost no system resources. If SecuritySpy crashes while video is being captured, at most only a few minutes of video will be lost.
Maintenance - Allow automatic computer sleep
The computer must be awake for SecuritySpy to operate, so if you want continuous operation you should leave this option turned off. Use this option if you would like the computer to sleep automatically when it is not being used (as per the settings in the Energy Saver system preference).
Maintenance - Dismiss alert messages after 1 minute
If this option is on, all alert messages (such as error messages) will be closed after 1 minute. This option should be enabled if the computer is to be left unattended.
Maintenance - Display pop-up window for major errors
Use this option to have a window appear on the screen to inform you of any major errors (these include problems preventing SecuritySpy from obtaining video streams, or recording problems).
Maintenance - Send diagnostic information back to developer
If this option is on, SecuritySpy will send information back to us, the developers of the software, once per day, to help us diagnose problems and improve the software. This includes system setup information, error reports and performance data. This data is sent over an encrypted connection, and we will never share this data with third parties.
Maintenance - Send anonymous images back to developer
If this option is on, SecuritySpy will send images back to us when motion is detected. By analysing and categorising these images, we can use them to improve SecuritySpy's motion-detection features. The images are scaled down to a small size and are sent infrequently over an encrypted connection, so the transmission is secure and uses very little bandwidth. Apart from the content of the images themselves, no identifying data is sent along with these images.
Maintenance - Automatically check for software updates upon launch
If an update is available you will be offered the option to install it; updates are never installed automatically without your permission.
Audio - Set computer to full volume before playing sounds
When enabled, the computer's main speaker volume will be automatically set to maximum before playing sounds, and then set back to its original volume after the sound has played.
Audio - Hiss reduction
When enabled, low-level audio will be silenced, eliminating hiss and background noise from microphones. This is useful for applications such as baby monitoring, where you may be listening to the audio at night, or when multiple cameras are playing audio at the same time.
Audio - Mute incoming audio when sending audio to a camera
For cameras that support two-way audio, this option controls whether the incoming audio from that camera is muted whenever you are sending audio to that camera. This prevents a feedback situation where audio can pass from the Mac's microphone to the camera's speaker, to the camera's microphone, to the Mac's speaker and back to the Mac's microphone in an infinite loop.
Audio - Two-way audio source and volume
This defines an audio input source connected to your Mac that is to be used for computer-to-camera audio transmission. Use the round control knob on the right to adjust the audio volume.
Email error reports
Use this option to have error reports sent to an email address whenever any problem occurs. You can enter multiple email addresses, each separated by a comma. You also have the option of receiving warning messages - these are advisory messages that inform you of potential problems such as high memory or CPU usage.
In all cases, all errors are written to a log file, which you can access from the File menu in SecuritySpy.
Email daily statistics
When this option is used, SecuritySpy will gather various statistics, including the number of files created, the amount of data recorded, and camera uptime. At midnight, a report will be sent by email containing a summary of this information. This is useful for quickly confirming that your system is performing as expected. You can enter multiple email addresses, each separated by a comma.
Choose your preferred date format, which is used whenever a date is displayed (e.g. in timestamps on video frames, and in file names).
Choose a date format, and choose a 12-hour clock (e.g. "2 pm") or a 24-hour clock (e.g. "14:00").
Password for settings changes
You can set a password here that will be required by anyone attempting to access settings or disarm cameras. It is also advisable, in the Security & Privacy system preference, to set the Mac itself to require a password after a short time of inactivity. While this doesn't prevent someone from physically tampering with the computer, implementing these basic security precautions provides a useful first layer of protection.
Password for quitting
You can set a password here that will be required by anyone attempting to quit SecuritySpy.
The Cameras section allows you to add and configure your cameras, and is further subdivided into the following sections: Device, Setup, Triggers, Audio, Continuous Capture, Motion Capture, and Actions.
The Device tab contains settings related to video devices themselves (the screenshot below show the settings available for network devices; for local devices - i.e. those connected by USB, Thunderbolt or built-in devices such as FaceTime cameras - there are many fewer options available as these are plug-and-play devices that don't need to be set up in the same way).
Enter the IP address, hostname, or Bonjour address of the device. By clicking the Auto-Discovered Devices button below this field, SecuritySpy will display a list of devices that were discovered on your local network, for example:
Select a device from this list, and the Address field will be automatically populated with the address of the selected device. This menu consists of two sections:
Both the above addressing methods remove the need to configure your cameras with fixed IP addresses: for a camera that obtains an IP address automatically via DHCP (which is usually the case), setup is simply a case of connecting it to your network and selecting it in the above list.
Many cameras support both ONVIF and Bonjour, so you may see two entires in the list for such devices; in this case you can select either (though using the ONVIF address may be slightly faster and more reliable in some circumstances).
These are the network ports that SecuritySpy uses to communicate with the device. The standard ports are 80 for HTTP and 554 for RTSP (or 8000 in both cases if the network device is another copy of SecuritySpy). If your device uses standard ports (most do), you can leave these fields empty, but if it uses non-standard ports, you should enter them here.
Username / Password
If the network device requires authentication, enter its username and password here.
Most IP surveillance products sold in the last few years implement the ONVIF protocol, which is a universal way of communicating with IP cameras. So, if your camera supports this, then you should use the ONVIF profile in SecuritySpy. Alternatively, SecuritySpy has many profiles designed specifically for individual camera makes and models, so check this list to find one to match your device. Or, if you want to enter the HTTP/RTSP streaming request yourself, use the Manual configuration option.
If your device doesn't support ONVIF, and you are not sure which other profile to use, click the Auto-Detect Profiles button. SecuritySpy will then test each profile in turn with your camera, and will return a list of ones that work. Before you run this test, make sure that you have entered the camera's address, ports, username and password correctly.
This menu lists the available formats supported by the network device, which will be a combination of the following:
If you are connecting to a camera over a local network, then the H.264/H.265 RTSP formats are typically the best ones to use. If connecting over the internet, then the H.264/H.265 RTSP-over-HTTP format are most appropriate, if supported by your camera.
Enter a video size (resolution) to request from the device. If you leave these fields empty, the default video size of the network device will be used. This setting is not available for all devices; typically you will need to configure the device directly to set its video size.
Enter the frame rate at which you want the device to send video frames. This setting is not available for all devices; typically you will need to configure the device directly to set its frame rate.
Input or stream number
For devices that have multiple inputs or streams, here you can specify the one you want to use. For example, some devices have multiple physical inputs or image sensors, while others have multiple streams with different compression settings. This option will only be available if this feature is supported by the device.
This setting is available when you select Manual configuration as the profile. This is the request text that is sent to the device to instruct it to send media data. This setting is useful if you want to use a network device that doesn't support ONVIF, and isn't supported under an existing profile. Consult the documentation or manufacturer of your device for information about the format of HTTP or RTSP requests it understands.
When camera manuals specify this information, they typically do so in the form of a URL, for example:
This indicates that the RTSP format should be used, with the RTSP port set to port, and request.h264 as the Request.
Options - Use SSL
SSL is a cryptography protocol that provides secure encrypted communication with network devices. For devices that support this feature, SSL provides additional security by preventing the decoding of intercepted data streams. It can therefore be useful when transmitting data over the internet, but typically is not required when transmitting over a local network. Note that this may significantly slow down video transmission due to the extra processing required by the device. In order to use SSL you will have to set up the device with a certificate (either self-signed or from a certificate authority, although the latter is not really necessary since you are setting up the server yourself and there is therefore no question about its authenticity).
Options - Recompress video data from this device
Network devices supply video data in a variety of compressed formats (typically JPEG, H.264 or H.265). By default, the video data supplied by the camera will be captured directly from the device to the movie files that SecuritySpy creates. This ensures optimum quality, performance and lowest CPU usage. However, if you want SecuritySpy to apply a text overlay, a transformation (rotation/flip), or a video blanking mask (to obscure sections of the image), or if you want to re-encode the data to a more space-efficient format, then enable this option, and SecuritySpy will use the settings set under the Compression section in order to recompress the data while recording. Generally, if you require a text overlay, transformation or blanking mask, it should be applied in the camera itself (if available there), rather than SecuritySpy, to avoid the need for SecuritySpy to recompress the video data.
Options - Recompress audio data from this device
Network devices supply audio data in a variety of compressed formats (typically G.711, G.726, AMR or AAC). By default, the audio data supplied by the camera will be captured directly from the device to the movie files that SecuritySpy creates. This ensures optimum quality, performance and lowest CPU usage. However, it may be useful to enable this feature in order to record with AAC audio compression if your camera is not capable of providing this format, because when the video format is H.264 or H.265 and the audio format is AAC, SecuritySpy can create MP4 files instead of MOV files. MP4 files play back in web browsers, whereas MOV files generally will not, so this is important if you will be viewing recorded footage via SecuritySpy's web interface.
This tab shows general configuration options for each camera, as follows:
Video Blanking Mask
Draw on the live video image to set the video blanking mask: this defines areas in the video image to be completed obscured (drawn in black) in the live and recorded video footage. Note that, for network cameras, the video blanking mask is only available if you have enabled the Recompress video data option in the Device section.
Status - Enable this camera
This allows you to turn a particular camera off without completely removing it from the software. If you turn a camera off it will no longer be used and will not be available for viewing or recording.
Brightness, Contrast, Saturation, Sharpness
These controls can be used to correct or enhance the camera's image, and will be applied to live video windows as well as video streams sent via the web interface. For local cameras (USB, FireWire etc.), these adjustments always also apply to captured footage. For network cameras, these adjustments apply to captured video footage only if you have enabled the Recompress video data option in the Device section.
There are several options for transformations that can be applied to the video image, to compensate for the mounting position of the camera (e.g. if mounted upside-down or sideways). The available transformations are: 180° rotation, 90° rotation clockwise, 90° rotation counter-clockwise, horizontal flip, and vertical flip. Note that, for network cameras, this setting is only available if you have enabled the Recompress video data option in the Device section.
Use this option to draw a text overlay on all video frames. Use the placeholders +n, +d, +w, and \n to represent the camera name, date and time, day name, and line break respectively. Note that, for network cameras, this setting is only available if you have enabled the Recompress video data option in the Device section.
By default, movie and image files are saved to a Captured Files folder, within the SecuritySpy folder in your Home folder (i.e. ~/SecuritySpy/Captured Files/). However, you can customise where SecuritySpy saves files using this setting, by selecting a volume or folder anywhere on your file system.
Any capture destination set here will override the default one set under Preferences - General
A trigger is any event, such as motion detection, audio detection, or input from a sensor, that initiates both Motion Capture and Actions for a camera.
To explain how the video motion detection controls work, it is useful to understand the process by which video frames are analysed for their content. It can be summarised as follows:
|Standard motion detection is performed on the incoming video in order to locate areas of motion. This is done by comparing pixel values in the current frame with those in previous frames.
The Mask, Sensitivity, and Trigger time settings control how these pixel differences result in motion being detected, and therefore which images get sent through to the next stage of the process.
|When motion is detected, the image is cropped to just the area of motion, and scaled to a size that can be accepted by the neural network.|
|The cropped image is passed through the neural network(s). There are two neural networks available, which detect humans and vehicles respectively — depending on your settings, the image is passed to neither, one, or both of these networks for classification.|
|The neural networks output prediction probabilities, indicating how certain they are that the image contains a human or vehicle.
You can control at what level of certainty the Motion Capture and Actions functions will be triggered, using the "Human" and "Vehicle" threshold sliders.
Controls for standard motion detection
The standard video motion detection feature analyses the incoming video stream to detect motion. When the motion level exceeds the threshold (shown as the red line in the motion bar on the right), for the duration specified by the "Trigger time" setting, Motion Capture and Actions can be triggered, or, for more accurate analysis of the contents of the video stream, the image can then be passed to neural networks for further processing.
You can adjust the motion detection parameters with the following settings:
Motion Mask - this defines areas in the video image to be ignored by the motion detection algorithm. Click and drag on the video image to draw the mask. This is useful to exclude areas that contain moving objects that you don't want to capture, for example trees swaying in the wind.
Sensitivity - this allows for variations in camera installation conditions, and whether you want triggers generated by the slightest movement, or instead limit recording to high levels of movement. High values make sure that motion detection will be triggered by even small amounts of motion in the video stream, however this may also result in more false-positive triggers.
Trigger time - this specifies the minimum duration of continuous motion that will result in a trigger. The most sensitive setting is "1 frame", which will trigger if there is motion detected in a single video frame. However, this is likely to produce many false-positive triggers due to rain, lighting changes, insects and other transient motion. A trigger time of between 1 and 2 seconds is normally ideal: this provides a low rate of false-positive triggers while still being highly sensitive to real motion. Note that this feature works best when the frame rate of the incoming video is at least 5fps.
Controls for AI neural-network-based intelligent image classification
If motion is detected, the image can then be passed to two neural networks for further analysis: one to detect humans and the other to detect vehicles. In addition, at this stage, you can choose different rules for triggering Motion Capture vs. Actions. This is useful, for example, to only be notified when a human is detected, while still maintaining a full recording history of all motion.
To enable a neural network, set a prediction threshold at which a trigger will be generated: when the prediction from the neural network reaches this threshold, it will trigger Motion Capture or Actions. With a high-quality camera in good lighting, the neural networks are very accurate, and a threshold of 90% or so can work very well, virtually eliminating false-positive triggers.
With low-quality cameras, or ones that operate in low light and therefore produce grainy images, the accuracy will be lower, and so a lower threshold should be chosen to avoid real motion being missed.
Note that running images through the neural networks uses significant RAM and CPU resources. Best results are obtained by using high-quality cameras in good lighting conditions, and using effective motion-detection settings to limit the number of images that will need to be further analysed by the neural networks.
Movie search metadata
These options determine which metadata is saved to captured movie files in order to allow subsequent search of captured footage (see the Browser feature for information about how movie search works). If the Save motion data option is enabled, all motion events will be saved to the captured movies, allowing searches based on motion. If the Save human data or Save vehicle data options are enabled, then the human/vehicle AI classifiers are run whenever motion is detected, with the results saved to captured movie files. This allows searching for humans or vehicles in captured footage.
Audio level detection
This feature triggers motion capture and actions when the audio level reaches the specified threshold. Lower thresholds will result in triggering on quieter sounds. To use this feature, an audio source must be enabled for this camera (under the Audio tab).
Camera input ports
This feature triggers motion capture and actions when one of the camera's input ports is triggered. IP cameras typically have one or more input ports (sometimes called "IO ports", "Alarm inputs", "External inputs" or "Digital inputs") that can be connected to sensors such as PIR (Passive Infra Red) motion sensors, glass break detectors, door/window sensors etc. SecuritySpy currently supports the input ports of Axis, D-Link, Canon and Hikvision cameras.
Camera PIR sensor
This feature triggers motion capture and actions when the camera's built-in PIR sensor detects motion. This is currently supported for Hikvision cameras only.
Camera motion detection
This feature triggers motion capture and actions when the camera's on-board motion detection algorithm detects motion. This is currently supported for Hikvision cameras only.
Here you can select one of the HomeKit triggers that you have created, to trigger Motion Capture and Actions based on HomeKit events. See HomeKit Integration for more information.
Further information about motion detection can be found at Achieving Effective Motion Detection.
This tab allows you to specify the audio settings for each camera:
Choose an audio input device to associate with this camera. Typically, for IP cameras, you will want to use the option "This network device", which indicates that SecuritySpy should take the audio feed from the camera itself.
This menu also lists all available local audio devices attached to your computer (built-in, USB, FireWire and Thunderbolt audio inputs), and you can associate any of these audio inputs with any camera.
If the audio device has more than one data source, these are listed here. For example, most built-in audio inputs in Mac computers have two data sources: Line In and Digital In; to use an analog audio source you would select Line In, or to use a digital source you would select Digital In.
This is the main factor that determines the quality of the audio - the higher the sample rate the better the quality, but the larger the captured files. A sample rate of 8000 Hz is normally adequate for video surveillance, though if you want higher quality, a setting of around 16000-22050 Hz will provide a significant improvement.
Left/mono channel, Right channel
Each camera can use one or two of the audio device's channels. Using the left and right channel menus, you can select which channel on the device (numbered in the menu) is recorded to which channel in the captured movie (left or right). For example, if the audio device has 10 input channels and you want input 5 recorded to the movie as the left channel and input 6 recorded as the right channel, you would select 5 and 6 in these menus respectively. To simply record people speaking, only mono (one channel) audio is required, in which case you should select "None" for the right channel. If you are using stereo audio (two channels), this doubles the size of the audio data, so use this only if you need to.
You can choose whether to include audio in continuous-capture recordings and/or motion-capture recordings. By default, both options are enabled.
This tab allows you to specify settings for the Continuous Capture recording mode:
Movie capture - Capture movie continuously
Enable this option to capture a movie file whenever the continuous-capture recording mode is armed.
Movie capture - Capture rate
This is the rate at which to capture frames to the movie (leave empty for the maximum rate). Note however that if the incoming video is in MPEG-4, H.264 or H.265 format, and you have chosen not to recompress the video (see the Device settings), SecuritySpy will be unable to change the frame rate of the video, and it will therefore be recorded at whatever rate is being supplied by the camera.
Movie capture - Playback rate
This feature is useful for capturing timelapse movies, where you can specify a playback rate that is different (usually significantly higher) than the capture rate.
Movie capture - Create new
Here you can specify when to create new movie files - there are four options:
Daily at midnight: a new movie file will be created at midnight each day. All footage captured during the day will be added to the same movie file, even if continuous-capture mode is disarmed and armed during this time.
Hourly (on the hour): a new movie file will be created at the beginning of each hour. All footage captured during each hour will be added to the same movie file even if continuous-capture mode is disarmed and armed during this time. This is a useful alternative to the Daily option above, producing smaller and therefore more manageable files that can be downloaded easily over the Internet.
Each time continuous capture is armed: a new movie file will be created whenever continuous-capture mode is armed, and will continue to be captured to until it is disarmed.
Every x Minutes/Hours/Days: a new movie file will be created at the frequency you specify. Whenever continuous-capture mode is disarmed and then armed, a new movie will also be created.
Movie capture - Upload to
Enable this option to upload all continuous-capture movie files to an FTP server. If the "create new" setting is set to Daily at midnight, movies will be uploaded at the end of the day; otherwise movies will be uploaded as soon as they are finished.
Image capture - Capture images continuously
This feature captures an image file to disk in JPEG format at the rate you specify.
Image capture - Upload to
Enable this option to upload all continuous-capture image files to an FTP server.
Webcam image - Upload and replace image on server
Use this option to periodically upload a JPEG image file with a fixed name to an FTP server, replacing the previous file each time. This is useful for continually updating an image on a web page.
This tab contains settings for the motion-capture recording mode, which captures movies or images in response to the motion triggers configured under the Setup tab:
Movie capture - Capture movie in response to motion trigger
Enable this option to capture a movie in response to a motion trigger. Motion triggers include video motion detection, audio detection and camera input ports, which can be enabled via the Triggers tab.
Movie capture - Capture type
There are two options for the motion-capture movie:
One movie per event: a separate movie file will be created for each motion detection event. This may result in a large number of individual movie files if there are frequent events, however it offers more resiliency to computer problems or tampering.
One movie per day: one movie file will be created each day containing all the motion detection events of that day. One large file may be easier to manage than lots of smaller files.
Movie capture - Capture rate
Specify the rate at which to capture frames to the movie (leave empty for the maximum rate). Note however that if the incoming video is in MPEG-4, H.264 or H.265 format, and you have chosen not to recompress the video (see the Device settings), SecuritySpy will be unable to change the frame rate of the video, and it will therefore be recorded at whatever rate is being supplied by the camera.
Movie capture - Pre-capture
It is often useful to have video from both before and after a motion event; in the time before and after, even though the motion is not high enough to trigger recording, there is often something interesting happening that is worth capturing. This is the purpose of the Pre-capture and Post-capture features. The pre-capture feature uses a buffer of video frames in memory, so that when the capture is triggered, some video before the trigger is also captured.
Movie capture - Post-capture
Specify the number of seconds to continue capturing the movie after the motion trigger has stopped. This should be set to at least a few seconds in order to avoid many small movie files being captured for one longer period of motion.
Movie capture - Upload to
Enable this option to upload all motion-capture movie files to an FTP server for off-site backup. If the capture type is set to One movie per day, movies will be uploaded at the end of the day; if the capture type is One movie per event, movies will be uploaded as soon as they are finished.
Image capture - Capture images in response to motion trigger
Enable this option to periodically capture JPEG image files when motion is detected.
Image capture - Frequency
Specify the capture frequency in terms of the number of seconds between image file captures.
Image capture - Post-capture
Specify the number of seconds to continue to capture image files after the motion trigger has stopped.
Image capture - Upload to
Use this option to upload all motion-capture image files to an FTP server for off-site backup.
Actions define what to do in response to a trigger, which are configured via the Triggers tab.
As well as the standard system sounds, there are several built-in sounds designed to scare off intruders, and you can add your own by placing sound files in SecuritySpy's Sounds folder (to locate this folder, click on the file File menu and select Reveal Folder in Finder / Sounds). Most sound formats are supported, including AIFF, WAV, MP3, and AAC.
You can also specify a duration and volume for the sound that is played. The sound will continue for the specified number of seconds after the trigger has stopped (e.g. after motion has finished).
To create your own scripts, use the Script Editor application that comes with macOS. Place your scripts in SecuritySpy's Scripts folder to make them available to invoke as actions (to locate this folder, click on the file File menu and select Reveal Folder in Finder > Scripts). A few scripts are included with SecuritySpy, including ones that control switch/relay devices that can trigger external devices such as lights and alarms. The built-in scripts work with WebRelay and Web-i IO devices.
Three parameters are passed to these scripts:
Here you can select one of the HomeKit actions that you have created in order to control HomeKit accessories. See HomeKit Integration for more information.
Send email to
This feature sends an email, optionally with attached JPEG images, to an address you specify. To send the email to multiple addresses, enter them separated by commas.
Run shell command
Any shell command (i.e. anything you can type into the Terminal on your Mac) can be entered here. Click the popup button to the right of this box for some examples, including:
To issue multiple commands, put them all directly into this field separated by semicolons, or create a ".sh" shell script file. When creating a script file, you will need to set its permissions (just once) to allow it to be run, using the following Terminal command:
chmod +x path/to/script.sh
Trigger other cameras
This setting allows you to trigger recording in one camera based on a motion trigger in another. This could be useful for when you have multiple cameras covering the same area, and want recording to take place in all the cameras when any one detects motion, thereby increasing the chance of capturing something interesting.
Video display - Come to the front and open this camera's video window
If enabled, whenever there is a motion trigger for this camera, SecuritySpy will come to the front, above all other applications, and will display the camera's video window.
Video display - Wake the screen and dismiss the screensaver
If enabled, whenever there is a motion trigger for this camera, all screen(s) will be woken and any screensaver currently running will be quit.
Video display - Highlight camera with red box
If enabled, whenever there is a motion trigger for this camera, a red box will be shown around the camera's image in all video windows, for the number of seconds specified.
This option allows you to specify a delay in seconds after a motion trigger, before performing any of the actions
Action reset time
Once the actions are triggered, this delay specifies the minimum time before they can be triggered again. Without this delay, an action could be invoked many times in quick succession if there is lots of motion, which is usually undesirable. Therefore, it is advisable to specify a delay here of at least the length of a typical motion detection event.
This section allows you to specify groups of cameras that can be displayed via their own Group windows. For large installations, organising the cameras into logical groups in this way makes viewing them much more manageable.
Choose how you want cameras to appear in the Group window:
Display cameras in grid - just like the All Cameras window, the Group window will display all its member cameras at once, in a grid arrangement.
Cycle between each camera - this option will display one camera at a time, sequentially.
Cycle between groups of four cameras - this option will display four cameras at a time, sequentially in groups of four.
Specify the number of seconds between cycles, when using either of the Cycle display options.
Simply enable the checkbox next to each camera you want to include in the group.
Schedules define when cameras should be armed and unarmed throughout the week. All schedules created here will be available to all cameras, and can be used to arm their continuous-capture, motion-capture and action modes independently.
Times when cameras will be armed are represented as red "time objects". Each time object has a start and end time, which define when the camera will be automatically armed and then automatically disarmed. Click and drag to create new time objects, or to move or edit existing time objects. To remove a time object, select it and press the delete key on the keyboard.
In the above example, the camera will be armed during office hours on weekdays only. SecuritySpy doesn't need to be running before the start time of a time object — if you launch it at any time marked red on the schedule, all cameras using the schedule will be armed automatically.
Clicking the "Advanced Schedule Options" button allows you to configure some additional options, as follows:
The options allow you modify the built-in sunrise/sunset schedules so that recording starts a certain number of minutes before or after sunrise or sunset. For example, if you want recording to start 5 minutes before sunrise, then you should set the Sunrise offset time for the Armed Sunrise To Sunset schedule to -5.
Determining sunrise and sunset times requires accurate location and time information. If you plan to use these schedules, check the Date & Time System Preference to make sure your Mac's location and clock are set correctly.
A schedule preset defines a set of schedules that will be applied to your cameras when the preset is invoked. For example, a "Home" and "Away" preset can define different sets of schedules to use when a property is occupied vs. when it is empty.
For each camera, you can define a schedule or you can specify "No Change" to indicate that a particular camera's schedule should not be changed when the preset is applied.
This section allows you to manage global storage settings for captured files.
Default capture destination
By default, movie and image files are saved to a Captured Files folder within the SecuritySpy folder in your Home folder (i.e. ~/SecuritySpy/Captured Files/). However, you can customise where SecuritySpy saves files using this setting, by selecting a volume or folder anywhere on your file system.
Alternatively, if you want to set capture destinations for specific cameras, you can do this under
Preferences - Cameras - Setup.
Delete old files by age
When enabled, captured files older than the number of days you specify will be deleted automatically. There is a separate setting for the system volume vs. other volumes.
Delete old files by free space
When enabled, old captured files will be deleted when available disk space drops below the specified levels. These thresholds should not be set too low, as disks can slow down significantly as they run out of space; a value of around 2% of the total capacity should normally work well (i.e. 20 GB for a 1 TB volume). If the computer is being used for other applications besides SecuritySpy, more free space should be left on the system volume, hence there is a separate setting for the system volume vs. other volumes.
Exclude from Auto-Delete
The Browser feature allows you to assign coloured tags to captured files, to mark them out as files of interest. With this option, you can prevent files with certain tags from being automatically deleted, even if they would otherwise satisfy the auto-delete settings set above.
Free space warning threshold
If the available space on any volume used by SecuritySpy drops below this threshold value, a warning will be generated. This warning is written to the log file (available from the File menu), and will also be emailed to the address specified in the General Preferences for error/warning notification emails. To disable these warnings, specify zero for this value.
This section allows you to specify the video and audio compression that will be performed for any camera set to be compressed by SecuritySpy. This applies in the following cases:
For any network camera that is supplying H.264 or H.265 video data, for optimum quality and performance, you should not enable the Recompress video data option in the Cameras - Device settings unless you need to do so for some specific reason (e.g. you want SecuritySpy to add a date/time overlay on the video stream and the camera is incapable of doing this).
Limiting the use of audio recompression is less important, because it requires much less CPU time than video recompression. Ideally, your cameras can supply audio in AAC format, but for any camera that cannot, you might want to set SecuritySpy to re-encode to AAC format. The advantage of recording AAC audio is that SecuritySpy can then create MP4 movie files (rather than MOV movie files), which are much more compatible for playback by web browsers. If you don't need to play back the captured files in web browsers, then it's best to leave the Recompress audio data option turned off.
Video Compression - Codec
Choose between the following video compression codecs:
ProRes: Apple's high-quality intermediate format. Due to its high bandwidth, and the fact that iOS does not support ProRes, this format is not suitable for CCTV purposes, but is useful for other applications (e.g. recording an event for subsequent processing in video editing software).
JPEG: Produces high-quality video and is fast to compress, so performance with this codec is very good, however the size of captured movie files will be very large.
H.264: This is a very efficient codec that will produce small file sizes. On older Macs without hardware-accelerated H.264 video processing, this format will require significant CPU resources.
H.265: This is a very efficient codec, producing files up to half the size as H.264. On older Macs without hardware-accelerated H.265 video processing, this format will require significant CPU resources - in this case, H.264 should be used instead, as it is less complex and therefore less demanding on the CPU.
In order to create MP4 movie files that play back in web browsers, use either H.264 or H.265.
H.264 and H.265 support temporal compression. Depending on the content, video can have a high level of temporal redundancy, that is, very often one frame is similar to the last frame. Temporal compression exploits this redundancy to reduce the file size of the resulting video. Temporal compression works by using "key frames" at regular intervals, followed by several "delta frames". The key frames contain the complete video image; the delta frames contain only the portions of the image that have changed since the last key frame.
Images from surveillance cameras often have a high level of temporal redundancy because usually most of the image is constant and only a small portion is changing. Therefore the use of temporal compression can significantly decrease captured file sizes without significantly degrading quality.
Video Compression - Quality
The higher the quality setting, the better the visual quality of the resulting movie files. However, higher quality settings will result in larger files. A setting of around 50-60 is normally ideal.
Audio Compression - Codec
Choose between the following audio compression codecs:
None: No compression - this setting gives the best quality and lowest processor usage. Since the data rate of audio is generally much lower than that of video, unless you require very small file sizes, using no audio compression can be a good option. If you choose this option, you should set a low sample rate and mono audio in order to minimise the data rate (these options are set independently for each device, via the Cameras - Audio settings.
Apple Lossless: This gives quality equal to no compression (since it is a lossless codec), at roughly half the data rate, and is reasonably quick to compress.
µ-Law: This is a very efficient codec designed specifically for compressing speech quickly at a very low data rate (64kbps).
AAC: This produces high-quality audio at low data rates, but is the most processor-intensive of the available codecs. Use this option if you need SecuritySpy to create MP4 movie files that play back in web browsers.
Audio Compression - Quality
For the AAC codec, you can set a quality level, which will determine the bitrate of the encoded audio data (the exact bitrate used will depend on the sample rate of the source audio, which can vary from camera to camera). A value of around 50 gives reasonably good quality audio at an efficient bitrate.
Whenever SecuritySpy needs to create a still JPEG image, it will use this quality setting for the encoding. This applies to still images captured to disk, images attached to emails, and images delivered via the web interface.
This section allows you to specify settings for FTP uploads to remote servers, which is useful for off-site backup of footage. The same FTP server with different paths may be used for different upload destinations, so one camera can be set to upload to a particular directory on the server and another camera to a different directory on the same server. To check directory paths and download or delete files, you will need to use a graphical FTP client utility such as Cyberduck.
Choose from the following protocols:
For FTP, this is the hostname (e.g. ftp.example.com) or IP address (e.g. 192.168.1.1) of the server.
For S3, this can be left blank if you using Amazon's S3 servers. If, however, you are using a different S3 cloud storage provider (e.g. Backblaze B2), you will need to enter the S3 endpoint address provided by your cloud storage company.
Enter the S3 bucket name here (this setting is only available if you have selected S3 as the protocol).
For S3, this is the path within the specified bucket where the file should be uploaded to.
For FTP, If you specify a path that starts with a forward slash character, this denotes an absolute path from the server's root directory. A path that does not begin with a forward slash character denotes a relative path from the default directory. The default directory depends on the server - generally each user has a folder on the server which is used as the default directory and set automatically by the server when that user logs in.
For example, consider the following directory layout:
If you were to log in as user1, the server will most likely set the initial directory as /pub/user1/. In this case, to have images uploaded to the user1 directory, you could either leave the path field empty, or you could specify "/pub/user1/" to be explicit. To have images uploaded to the "images" folder within the "user1" folder, you could specify either "/pub/user1/images/" or simply "images" for the path (in all cases it doesn't matter whether you put a forward slash at the end of the path or not). Generally, you should let the server decide the default directory and use a relative path, unless you have a specific reason to use an absolute path.
If the specified directory does not already exist on the server, SecuritySpy will create it.
Append camera name to path
Enable this option to automatically append camera names to the server path, so that each camera will upload to a separate folder on the server.
Append day folder name to path
Enable this option to automatically append day folder names to the server path, so that files for each day will be placed in separate folders on the server. Day folder names comprise the date when the file was created, in the format YYYY-MM-DD.
To copy the files to a local drive, rather than a remote server, enter local as the server address, and specify the path of a folder on your local file system (drag the folder from the Finder into the Path box to have the path filled out automatically). Paths to folders on the local file system typically start with /Volumes/VolumeName/… to refer to a folder on an attached volume, or /Users/UserName/… to refer to a folder within your user directory.
To see the status of current uploads at any time select Uploads from the Window menu.
This section allows you to specify settings for sending emails:
Number of images per email
When an email is sent in response to a motion trigger on a particular camera, this setting defines now many JPEG images from the camera will be attached to the email.
Frame rate of image capture for emails
This defines the frame rate at which images are added to motion-triggered emails.
Size of images attached to emails
You can send images at full size, but with high-resolution cameras this results in large emails that are slow to transfer. To keep email sizes small and transfer speeds high, choose a smaller size from one of the available options.
This is the subject field that is used for emails triggered by motion detection. If you leave this blank, a subject will be created automatically. When specifying a custom subject, you can enter +d for the current date and time, and +n for the camera name.
By default, SecuritySpy will use its own email relay service, which requires no configuration whatsoever. This service is provided by us, and its usage is free for all SecuritySpy users (though we do limit the size and frequency of emails, in order to ensure good performance for all users).
The other option is to use your own SMTP server — this requires configuration as follows:
SMTP server address
The address of the server used to send mail. This is normally provided by your ISP (Internet Service Provider).
If your server uses a non-standard port, you can specify this here using a colon and then the port number. For example, if your server uses port 28, you would enter "smtp.example.com:28". Most SMTP servers operate on standard ports (25 for non-encrypted communication and 465 for encrypted SSL communication), so if you have not been told by your ISP to use a particular port, don't specify a port number and the standard one will be used automatically.
The small pop-up menu to the right of this field contains a few presets for common email accounts; select one and the server address any any other appropriate settings will be set automatically.
This is the return address sent with emails to identify the sender. You should always use a valid email address here, as spam filters will block messages without one. Also, many SMTP servers will not accept just any return address: usually it must be from the same provider as the SMTP server.
This is the name associated with the return address. It is optional, however if you don't specify a name here, there is a higher chance of emails being blocked by spam filters.
Username and password
Most SMTP servers require authentication - if yours does, enter your username and password here. The username is typically your email address.
You can choose between no encryption, implicit encryption, or explicit encryption (if your mail server uses encryption, it will probably use the explicit method). An increasing number of email servers support encryption (some even require it), however many servers do not support it, and enabling this feature when using such servers will prevent emails from being sent. Therefore, you should check the instructions supplied by the provider of the SMTP server, and enable this feature only if your email server supports it.
Once you have configured the email settings, you can test them by clicking this button. SecuritySpy will attempt to send a test email, and will report any problems it encounters.
SecuritySpy features a built-in web server that allows you to view live camera streams, download captured footage, change settings and control the software, all from a remote location over a local network or the Internet.
Enable web server
SecuritySpy includes both a standard HTTP web interface and an encrypted secure HTTPS web interface. Standard HTTP sends and receives data in its raw form, which is suitable for local networks but not safe for communicating over the internet where the data could potentially be intercepted by a third party. By contrast, HTTPS is a secure protocol that employs encryption, making it extremely difficult for someone to decode any intercepted data. HTTPS is therefore strongly preferred for sending sensitive information over the internet, such as passwords and CCTV camera footage.
The HTTP and HTTPS servers each operate on their own network port. A port number represents a "channel" for network communication, and allows different applications on the same device to use the network without interfering with each other. Note that on macOS, it is not possible for an application such as SecuritySpy to use ports below 1024 (unless you specifically run it as a root process, which is not advisable). SecuritySpy's default ports are 8000 and 8001 for HTTP and HTTPS respectively.
From another computer on your local network (LAN), you can access the server with a web browser using the server's IP address and port number, or its Bonjour name and port number, for example:
When using the DDNS feature in conjunction with the Automatic port forwarding options (see below for explanations of these features), you will be able to access SecuritySpy from the Internet like this:
Note that local network addresses won't work from the Internet, and Internet addresses may not work from within your local network (depending on your router).
Click the How Do I Access This Server? button to get a list of the addresses you can use to access your SecuritySpy server from your local network and from the Internet. If you need to configure your Mac's LAN IP address, you can do so via the Network pane of the System Preferences.
1. Automatic: SecuritySpy integrates with Let's Encrypt, a free automated open certificate authority, to obtain a valid certificate for you. All you have to do is set up a DDNS name (see below), and SecuritySpy will attempt to automatically obtain a certificate in this name. Make sure to pick a DDNS name that you are happy with, because if you change this in the future, there will be a delay of one day before a new certificate will be obtained in the new name. This is to comply with rate limits imposed by Let's Encrypt on their service.
2. User-supplied: You can purchase an official certificate to use with SecuritySpy. This is useful if you want an official certificate but don't want to use SecuritySpy's DDNS feature (e.g. you have your own domain name that you want to use instead). In order to use a certificate obtained from a certificate authority, first you will need to generate a private key and a certificate signing request (typically using OpenSSL via the Terminal - instructions should be provided by the certificate authority). You send the certificate signing request to the certificate authority and they send back a signed certificate. Place the private key, main certificate, and any intermediate certificates into the SecuritySpy folder within the Home folder (i.e. ~/SecuritySpy/), and then quit and relaunch SecuritySpy.
See this blog post for further instructions: How to purchase and install an SSL certificate for SecuritySpy
When supplying a private key, it must be as follows:
When supplying a certificate, it must be as follows:
3. Self-signed: If SecuritySpy is unable to obtain a Let's Encrypt certificate, and you have not supplied a certificate yourself, then SecuritySpy will automatically generate a self-signed certificate. Self-signed certificates provide the same level of encryption as an official certificate, however they do not provide the same level of assurance to the client regarding the authenticity of the server, hence a web browser connecting to such a server will display a warning to this effect. For SecuritySpy however, you are the one setting up the server and so you can be certain about its authenticity, therefore the use of a self-signed certificate for SecuritySpy is entirely suitable, and you can simply ignore the warning displayed by the web browser.
In all cases, the address you use to access SecuritySpy should match the certificate's hostname (e.g. the DDNS name that you have set up), otherwise you will get a warning from the web browser about a hostname mismatch. Therefore, if you are connecting to SecuritySpy's HTTPS server over a local network using an IP address or Bonjour name, you will get a warning about a hostname mismatch, so you may prefer to use the standard HTTP interface for local connections — in this case the traffic is contained within your own local network, so the use of encryption is less important.
Automatic port forwarding
To allow access to SecuritySpy from the Internet, your router must be configured to forward incoming connections to SecuritySpy. Use these options to enable automatic port forwarding for the HTTP and/or HTTPS port. For this to work, your router must support, and have enabled, either NAT Port Mapping Protocol (NAT-PMP), or Universal Plug and Play (UPnP). Almost all routers support at least one of these protocols, and most have this feature enabled by default.
IMPORTANT: when using this feature, your SecuritySpy web server becomes much easier to access from the Internet, so for security you should create a web server account with a strong password to prevent unauthorised access.
Dynamic DNS name (DDNS)
Most Internet connections provide a dynamic public IP address, which can change from time to time. If you want to access your system over the Internet, you will need a static address, which is what SecuritySpy's DDNS system provides. Simply enter the DDNS name you want to use and click the Test button; the indicator will turn green to indicate success or red to indicate a problem (e.g. if the name you requested is not available). Once enabled, the Internet address example.viewcam.me will always point to your public IP address, even when it changes.
IMPORTANT: when using this feature, your SecuritySpy web server becomes much easier to access from the Internet, so for security you should create a web server account with a strong password to prevent unauthorised access.
Web server name
This allows you to customise the name of the web server. As well as being used as the Bonjour name (see below), this name gets displayed by a web browser when it requests authentication. For example, here is the message displayed by the Safari web browser when it connects to a password-protected server with the name "My Web Server" (other web browsers display similar messages):
HTTPS security level There are a variety of different cryptographic protocols that can be used for a secure HTTPS connection; these are negotiated between the client and server whenever a new connection is made. Many older protocols (such as RC4, MD5 and DES) have been found to have security flaws, and therefore should be avoided if possible. The higher this security level setting, the more of these older protocols are disabled: this removes vulnerabilities, but may prevent older clients from being able to connect. We recommend you use a security level of at least 2, unless you need to reduce this to allow connections from older clients.
Advertise this web server via Bonjour
Bonjour is a method of "zero configuration" network setup, which makes it easy to find devices. Enabling Bonjour allows web browsers, iOS apps, and other instances of SecuritySpy to easily find your SecuritySpy server on the network.
SecuritySpy uses the server name text (see above) as its Bonjour name. Note that if you have enabled the macOS firewall feature on the computer running SecuritySpy, this may prevent Bonjour from working properly. Therefore you may have to disable the firewall if you want to use Bonjour to connect to SecuritySpy servers. The firewall settings are accessible in the Security & Privacy System Preference.
Make movies Fast Start on-the-fly
Normally, QuickTime movies and MP4 files have a movie resource at the end of the file (the movie resource holds necessary information about all the frames in the movie and therefore has to be written to the file last, after all the frames have been written). This works well when the movie is on a local drive because the movie resource is instantly accessible, however if the movie is being received from a slower source such as the Internet the whole movie must be downloaded before it can be played, which may take some time. In Fast Start movies, the movie resource is at the beginning of the file so that the movie can start to play before it has completely downloaded.
If this option is enabled, the movie resource will be read from the end of the file and sent first, so the movie will be Fast Start when it is received by the client computer.
Write log file of all connections
When enabled, SecuritySpy will create a text file containing information about every connection to the web server, including the connection time, the client's address, and the requested page. To view the log, select the "Open Web Log" option from the File menu in SecuritySpy.
Allow Screen Control for Administrator accounts
When enabled, Administrator accounts are allowed to control the Mac's screen via the web interface (just like Screen Sharing or TeamViewer). Due to the level of access that this feature provides, it is only available to Administrator accounts, and is turned off by default. This option is extremely useful if your Mac is running as a dedicated server, as it allows full remote administration of the Mac.
To enable password protection to restrict access to your SecuritySpy web server, you must add at least one account; if you don't create any accounts, there will be no password protection. If your SecuritySpy server will be accessible from the Internet, we strongly recommend that you enable password protection.
This pane allows you to specify settings for a web server account:
Username / Password
Enter the username and password that will be required to log in with this account. The username is not case sensitive, but the password is; both can be up to 31 characters long.
Video stream duration limit
Specify a number of seconds after which to cut off any live video stream being viewed via this account.
Timed daily access
This setting allows you to restrict access to the web server via this account to certain times of the day.
There are a few preset permissions levels, and a fully customisable one, as follows:
View - the user can view live video from any camera.
View, Download - the user can view live video, and download previously-captured footage for any camera.
View, Download, control PTZ - the user can view live video, download previously-captured footage, and control Pan/Tilt/Zoom for any camera.
Administrator - the user has full access to every web server feature.
Custom - under this setting, you can specify which features of which cameras the user has access to. Select the camera(s) for which you want to allow certain actions, and set the permissions accordingly. Select the All cameras option to set permissions that will apply to all cameras — this makes it easy to give a particular user a certain level of access for all cameras, while still being able to apply additional permissions for individual cameras.
SecuritySpy comes with its own Dashboard widget for easy remote viewing of video streams from your SecuritySpy server over a local network or the Internet. Click here to download the SecuritySpy widget - it will be installed automatically into your widgets folder and will be immediately available in Dashboard. The first time you load the widget you will need to specify some settings so that it knows where the SecuritySpy web server is. To open the settings window click the info button (the i symbol in the bottom right hand corner of the widget). The settings look like this:
The widget has the following settings:
If, instead of the image, you get a question-mark icon, it means that the widget wasn't able to get the image. Check the address, camera number, username and password to make sure they are all correct.
You can create multiple instances of the widget in order to view several different cameras at the same time, and the widget can be used without restriction on as many computers as you like.
This widget can also be used on Windows and Linux computers with the Kludget Engine software.
When SecuritySpy encounters an error, it reports the error in its log file and continues to run. For example, such errors may include problems with video input devices, FTP upload errors, or errors sending emails. If you encounter any sort of problem while using SecuritySpy, you should check the log to find out more information about what happened. To open the log file, select Open Log from the File menu.
For information about how to choose, install and set up the hardware of your video surveillance system, see the SecuritySpy Installation Manual.
For up to date troubleshooting and help please see the SecuritySpy online help pages.
If your question is not answered in the online help pages, please email it to firstname.lastname@example.org.
To find out which specification of computer is required for a particular camera setup, see the SecuritySpy System Requirements Calculator.