ZoneMinder / zoneminder

ZoneMinder is a free, open source Closed-circuit television software application developed for Linux which supports IP, USB and Analog cameras.
http://www.zoneminder.com/
GNU General Public License v2.0
5.19k stars 1.23k forks source link

Monster log messages #491

Closed barjac closed 9 years ago

barjac commented 10 years ago

With current git master I am seeing this error message more than once in the logs (I apologize in advance for pasting it here but could not see any way to attach a file). Note: This is ONE error message:

web_js 1986 PNC Unknown error type: [8] Undefined index: file #0 Panic(Unknown error type: [8] Undefined index: file) called at [/usr/share/zoneminder/www/includes/logger.php:581] #1 ErrorHandler(8, Undefined index: file, /usr/share/zoneminder/www/ajax/log.php, 13, Array ([_GET] => Array (),[_POST] => Array ([view] => request,[request] => log,[task] => create,[browser] => Array ([name] => firefox,[version] => 31,[platform] => linux),[level] => WAR,[message] => Adjusting to minimum width when getting popup size for tag 'watch' - getPopupSize()),[_COOKIE] => Array ([zmBandwidth] => high,[zmSkin] => classic,[replayMode] => gapless,[ZMSESSID] => spee9nmgbb9nsla2a2tu3u5kl2),[_FILES] => Array (),[_SERVER] => Array ([UNIQUE_ID] => U9YrCvoYIaPfbZyRA46prQAAAAU,[HTTP_HOST] => jackodesktop,[HTTP_USER_AGENT] => Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0,[HTTP_ACCEPT] => application/json,[HTTP_ACCEPT_LANGUAGE] => en-gb,en;q=0.5,[HTTP_ACCEPT_ENCODING] => gzip, deflate,[HTTP_X_REQUESTED_WITH] => XMLHttpRequest,[HTTP_X_REQUEST] => JSON,[CONTENT_TYPE] => application/x-www-form-urlencoded; charset=utf-8,[HTTP_REFERER] => http://jackodesktop/zm/index.php,[CONTENT_LENGTH] => 234,[HTTP_COOKIE] => zmBandwidth=high; zmSkin=classic; replayMode=gapless; ZMSESSID=spee9nmgbb9nsla2a2tu3u5kl2,[HTTP_CONNECTION] => keep-alive,[HTTP_PRAGMA] => no-cache,[HTTP_CACHE_CONTROL] => no-cache,[PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin,[SERVER_SIGNATURE] => ,[SERVER_SOFTWARE] => Apache/2.4.10 (Mageia) PHP/5.6.0RC2,[SERVER_NAME] => jackodesktop,[SERVER_ADDR] => 192.168.1.65,[SERVER_PORT] => 80,[REMOTE_ADDR] => 192.168.1.65,[DOCUMENT_ROOT] => /var/www/html,[REQUEST_SCHEME] => http,[CONTEXT_PREFIX] => /zm,[CONTEXT_DOCUMENT_ROOT] => /usr/share/zoneminder/www,[SERVER_ADMIN] => root@localhost,[SCRIPT_FILENAME] => /usr/share/zoneminder/www/index.php,[REMOTE_PORT] => 59163,[GATEWAY_INTERFACE] => CGI/1.1,[SERVER_PROTOCOL] => HTTP/1.1,[REQUEST_METHOD] => POST,[QUERY_STRING] => ,[REQUEST_URI] => /zm/index.php,[SCRIPT_NAME] => /zm/index.php,[PHP_SELF] => /zm/index.php,[REQUEST_TIME_FLOAT] => 1406544650.146,[REQUEST_TIME] => 1406544650),[_REQUEST] => Array ([view] => request,[request] => log,[task] => create,[browser] => Array ([name] => firefox,[version] => 31,[platform] => linux),[level] => WAR,[message] => Adjusting to minimum width when getting popup size for tag 'watch' - getPopupSize()),[debug] => ,[protocol] => http,[skin] => classic,[skinBase] => Array ([0] => classic),[_SESSION] => Array ([skin] => classic,[browser] => mozilla,[version] => 5.0),[GLOBALS] => Array ( RECURSION,[configFile] => /etc/zm.conf,[localConfigFile] => zm.conf,[cfg] => Resource id #7,[str] => ,[matches] => Array ([0] => ZM_SERVER_HOST= ,[1] => ZM_SERVER_HOST,[2] => ),[dbLogLevel] => 0,[dbConn] => PDO Object (),[config] => Array ([ZM_LANG_DEFAULT] => Array ([Id] => 0,[Name] => ZM_LANG_DEFAULT,[Value] => en_gb,[Type] => string,[DefaultValue] => en_gb,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => Default language used by web interface,[Help] => ZoneMinder allows the web interface to use languages other than English if the appropriate language file has been created and is present. This option allows you to change the default language that is used from the shipped language, British English, to another language,[Category] => system,[Readonly] => 0,[Requires] => ),[ZM_OPT_USE_AUTH] => Array ([Id] => 1,[Name] => ZM_OPT_USE_AUTH,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Authenticate user logins to ZoneMinder,[Help] => ZoneMinder can run in two modes. The simplest is an entirely unauthenticated mode where anyone can access ZoneMinder and perform all tasks. This is most suitable for installations where the web server access is limited in other ways. The other mode enables user accounts with varying sets of permissions. Users must login or authenticate to access ZoneMinder and are limited by their defined permissions.,[Category] => system,[Readonly] => 0,[Requires] => ),[ZM_AUTH_TYPE] => Array ([Id] => 2,[Name] => ZM_AUTH_TYPE,[Value] => builtin,[Type] => string,[DefaultValue] => builtin,[Hint] => builtin|remote,[Pattern] => (?^i:^([br])),[Format] => $1 =~ /^b/ ? "builtin" : "remote" ,[Prompt] => What is used to authenticate ZoneMinder users,[Help] => ZoneMinder can use two methods to authenticate users when running in authenticated mode. The first is a builtin method where ZoneMinder provides facilities for users to log in and maintains track of their identity. The second method allows interworking with other methods such as http basic authentication which passes an independently authentication 'remote' user via http. In this case ZoneMinder would use the supplied user without additional authentication provided such a user is configured ion ZoneMinder.,[Category] => system,[Readonly] => 0,[Requires] => ZM_OPT_USE_AUTH=1),[ZM_AUTH_RELAY] => Array ([Id] => 3,[Name] => ZM_AUTH_RELAY,[Value] => hashed,[Type] => string,[DefaultValue] => hashed,[Hint] => hashed|plain|none,[Pattern] => (?^i:^([hpn])),[Format] => ($1 =~ /^h/) ? "hashed" : ($1 =~ /^p/ ? "plain" : "none" ) ,[Prompt] => Method used to relay authentication information,[Help] => When ZoneMinder is running in authenticated mode it can pass user details between the web pages and the back end processes. There are two methods for doing this. This first is to use a time limited hashed string which contains no direct username or password details, the second method is to pass the username and passwords around in plaintext. This method is not recommend except where you do not have the md5 libraries available on your system or you have a completely isolated system with no external access. You can also switch off authentication relaying if your system is isolated in other ways.,[Category] => system,[Readonly] => 0,[Requires] => ZM_OPT_USE_AUTH=1),[ZM_AUTH_HASH_SECRET] => Array ([Id] => 4,[Name] => ZM_AUTH_HASH_SECRET,[Value] => ...Change me to something unique...,[Type] => string,[DefaultValue] => ...Change me to something unique...,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => Secret for encoding hashed authentication information,[Help] => When ZoneMinder is running in hashed authenticated mode it is necessary to generate hashed strings containing encrypted sensitive information such as usernames and password. Although these string are reasonably secure the addition of a random secret increases security substantially.,[Category] => system,[Readonly] => 0,[Requires] => ZM_OPT_USE_AUTH=1;ZM_AUTH_RELAY=hashed),[ZM_AUTH_HASH_IPS] => Array ([Id] => 5,[Name] => ZM_AUTH_HASH_IPS,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Include IP addresses in the authentication hash,[Help] => When ZoneMinder is running in hashed authenticated mode it can optionally include the requesting IP address in the resultant hash. This adds an extra level of security as only requests from that address may use that authentication key. However in some circumstances, such as access over mobile networks, the requesting address can change for each request which will cause most requests to fail. This option allows you to control whether IP addresses are included in the authentication hash on your system. If you experience intermitent problems with authentication, switching this option off may help.,[Category] => system,[Readonly] => 0,[Requires] => ZM_OPT_USE_AUTH=1;ZM_AUTH_RELAY=hashed),[ZM_AUTH_HASH_LOGINS] => Array ([Id] => 6,[Name] => ZM_AUTH_HASH_LOGINS,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Allow login by authentication hash,[Help] => The normal process for logging into ZoneMinder is via the login screen with username and password. In some circumstances it may be desirable to allow access directly to one or more pages, for instance from a third party application. If this option is enabled then adding an 'auth' parameter to any request will include a shortcut login bypassing the login screen, if not already logged in. As authentication hashes are time and, optionally, IP limited this can allow short-term access to ZoneMinder screens from other web pages etc. In order to use this the calling application will hae to generate the authentication hash itself and ensure it is valid. If you use this option you should ensure that you have modified the ZM_AUTH_HASH_SECRET to somethign unique to your system.,[Category] => system,[Readonly] => 0,[Requires] => ZM_OPT_USE_AUTH=1;ZM_AUTH_RELAY=hashed),[ZM_DIR_EVENTS] => Array ([Id] => 7,[Name] => ZM_DIREVENTS,[Value] => events,[Type] => string,[DefaultValue] => events,[Hint] => directory,[Pattern] => (?^:^([a-zA-Z0-9-.]+)$),[Format] => $1 ,[Prompt] => Directory where events are stored,[Help] => This is the path to the events directory where all the event images and other miscellaneous files are stored. It is normally given as a subdirectory of the web directory you have specified earlier however if disk space is tight it can reside on another partition in which case you should create a link from that area to the path you give here.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_USE_DEEP_STORAGE] => Array ([Id] => 8,[Name] => ZM_USE_DEEP_STORAGE,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Use a deep filesystem hierarchy for events,[Help] => Traditionally ZoneMinder stores all events for a monitor in one directory for that monitor. This is simple and efficient except when you have very large amounts of events. Some filesystems are unable to store more than 32k files in one directory and even without this limitation, large numbers of files in a directory can slow creation and deletion of files. This option allows you to select an alternate method of storing events by year/month/day/hour/min/second which has the effect of separating events out into more directories, resulting in less per directory, and also making it easier to manually navigate to any events that may have happened at a particular time or date.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_DIR_IMAGES] => Array ([Id] => 9,[Name] => ZM_DIRIMAGES,[Value] => images,[Type] => string,[DefaultValue] => images,[Hint] => directory,[Pattern] => (?^:^([a-zA-Z0-9-.]+)$),[Format] => $1 ,[Prompt] => Directory where the images that the ZoneMinder client generates are stored,[Help] => ZoneMinder generates a myriad of images, mosty of which are associated with events. For those that aren't this is where they go.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_DIR_SOUNDS] => Array ([Id] => 10,[Name] => ZM_DIRSOUNDS,[Value] => sounds,[Type] => string,[DefaultValue] => sounds,[Hint] => directory,[Pattern] => (?^:^([a-zA-Z0-9-.]+)$),[Format] => $1 ,[Prompt] => Directory to the sounds that the ZoneMinder client can use,[Help] => ZoneMinder can optionally play a sound file when an alarm is detected. This indicates where (relative to the web root) to look for this file.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_PATH_ZMS] => Array ([Id] => 11,[Name] => ZM_PATHZMS,[Value] => /zmcgi/nph-zms,[Type] => string,[DefaultValue] => /zmcgi/nph-zms,[Hint] => relative/path/to/somewhere,[Pattern] => (?^:^((?:[^/].)?)/?$),[Format] => $1 ,[Prompt] => Web path to zms streaming server,[Help] => The ZoneMinder streaming server is required to send streamed images to your browser. It will be installed into the cgi-bin path given at configuration time. This option determines what the web path to the server is rather than the local path on your machine. Ordinarily the streaming server runs in parser-header mode however if you experience problems with streaming you can change this to non-parsed-header (nph) mode by changing 'zms' to 'nph-zms'.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_COLOUR_JPEG_FILES] => Array ([Id] => 12,[Name] => ZM_COLOUR_JPEG_FILES,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Colourise greyscale JPEG files,[Help] => Cameras that capture in greyscale can write their captured images to jpeg files with a corresponding greyscale colour space. This saves a small amount of disk space over colour ones. However some tools such as ffmpeg either fail to work with this colour space or have to convert it beforehand. Setting this option to yes uses up a little more space but makes creation of MPEG files much faster.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_ADD_JPEG_COMMENTS] => Array ([Id] => 13,[Name] => ZM_ADD_JPEG_COMMENTS,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Add jpeg timestamp annotations as file header comments,[Help] => JPEG files may have a number of extra fields added to the file header. The comment field may have any kind of text added. This options allows you to have the same text that is used to annotate the image additionally included as a file header comment. If you archive event images to other locations this may help you locate images for particular events or times if you use software that can read comment headers.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_JPEG_FILE_QUALITY] => Array ([Id] => 14,[Name] => ZM_JPEG_FILE_QUALITY,[Value] => 70,[Type] => integer,[DefaultValue] => 70,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Set the JPEG quality setting for the saved event files (1-100),[Help] => When ZoneMinder detects an event it will save the images associated with that event to files. These files are in the JPEG format and can be viewed or streamed later. This option specifies what image quality should be used to save these files. A higher number means better quality but less compression so will take up more disk space and take longer to view over a slow connection. By contrast a low number means smaller, quicker to view, files but at the price of lower quality images. This setting applies to all images written except if the capture image has caused an alarm and the alarm file quality option is set at a higher value when that is used instead.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_JPEG_ALARM_FILE_QUALITY] => Array ([Id] => 15,[Name] => ZM_JPEG_ALARM_FILE_QUALITY,[Value] => 0,[Type] => integer,[DefaultValue] => 0,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Set the JPEG quality setting for the saved event files during an alarm (1-100),[Help] => This value is equivalent to the regular jpeg file quality setting above except that it only applies to images saved while in an alarm state and then only if this value is set to a higher quality setting than the ordinary file setting. If set to a lower value then it is ignored. Thus leaving it at the default of 0 effectively means to use the regular file quality setting for all saved images. This is to prevent acccidentally saving important images at a worse quality setting.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_JPEG_IMAGE_QUALITY] => Array ([Id] => 16,[Name] => ZM_JPEG_IMAGE_QUALITY,[Value] => 70,[Type] => integer,[DefaultValue] => 70,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Set the JPEG quality setting for the streamed 'live' images (1-100),[Help] => When viewing a 'live' stream for a monitor ZoneMinder will grab an image from the buffer and encode it into JPEG format before sending it. This option specifies what image quality should be used to encode these images. A higher number means better quality but less compression so will take longer to view over a slow connection. By contrast a low number means quicker to view images but at the price of lower quality images. This option does not apply when viewing events or still images as these are usually just read from disk and so will be encoded at the quality specified by the previous options.,[Category] => hidden,[Readonly] => 0,[Requires] => ),[ZM_JPEG_STREAM_QUALITY] => Array ([Id] => 17,[Name] => ZM_JPEG_STREAM_QUALITY,[Value] => 70,[Type] => integer,[DefaultValue] => 70,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Set the JPEG quality setting for the streamed 'live' images (1-100),[Help] => When viewing a 'live' stream for a monitor ZoneMinder will grab an image from the buffer and encode it into JPEG format before sending it. This option specifies what image quality should be used to encode these images. A higher number means better quality but less compression so will take longer to view over a slow connection. By contrast a low number means quicker to view images but at the price of lower quality images. This option does not apply when viewing events or still images as these are usually just read from disk and so will be encoded at the quality specified by the previous options.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_MPEG_TIMED_FRAMES] => Array ([Id] => 18,[Name] => ZM_MPEG_TIMED_FRAMES,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Tag video frames with a timestamp for more realistic streaming,[Help] => When using streamed MPEG based video, either for live monitor streams or events, ZoneMinder can send the streams in two ways. If this option is selected then the timestamp for each frame, taken from it's capture time, is included in the stream. This means that where the frame rate varies, for instance around an alarm, the stream will still maintain it's 'real' timing. If this option is not selected then an approximate frame rate is calculated and that is used to schedule frames instead. This option should be selected unless you encounter problems with your preferred streaming method.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_MPEG_LIVE_FORMAT] => Array ([Id] => 19,[Name] => ZM_MPEG_LIVE_FORMAT,[Value] => swf,[Type] => string,[DefaultValue] => swf,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => What format 'live' video streams are played in,[Help] => When using MPEG mode ZoneMinder can output live video. However what formats are handled by the browser varies greatly between machines. This option allows you to specify a video format using a file extension format, so you would just enter the extension of the file type you would like and the rest is determined from that. The default of 'asf' works well under Windows with Windows Media Player but I'm currently not sure what, if anything, works on a Linux platform. If you find out please let me know! If this option is left blank then live streams will revert to being in motion jpeg format,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_MPEG_REPLAY_FORMAT] => Array ([Id] => 20,[Name] => ZM_MPEG_REPLAY_FORMAT,[Value] => swf,[Type] => string,[DefaultValue] => swf,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => What format 'replay' video streams are played in,[Help] => When using MPEG mode ZoneMinder can replay events in encoded video format. However what formats are handled by the browser varies greatly between machines. This option allows you to specify a video format using a file extension format, so you would just enter the extension of the file type you would like and the rest is determined from that. The default of 'asf' works well under Windows with Windows Media Player and 'mpg', or 'avi' etc should work under Linux. If you know any more then please let me know! If this option is left blank then live streams will revert to being in motion jpeg format,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_RAND_STREAM] => Array ([Id] => 21,[Name] => ZM_RAND_STREAM,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Add a random string to prevent caching of streams,[Help] => Some browsers can cache the streams used by ZoneMinder. In order to prevent his a harmless random string can be appended to the url to make each invocation of the stream appear unique.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_OPT_CAMBOZOLA] => Array ([Id] => 22,[Name] => ZM_OPT_CAMBOZOLA,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Is the (optional) cambozola java streaming client installed,[Help] => Cambozola is a handy low fat cheese flavoured Java applet that ZoneMinder uses to view image streams on browsers such as Internet Explorer that don't natively support this format. If you use this browser it is highly recommended to install this from http://www.charliemouse.com/code/cambozola/ however if it is not installed still images at a lower refresh rate can still be viewed.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_PATH_CAMBOZOLA] => Array ([Id] => 23,[Name] => ZM_PATHCAMBOZOLA,[Value] => cambozola.jar,[Type] => string,[DefaultValue] => cambozola.jar,[Hint] => relative/path/to/somewhere,[Pattern] => (?^:^((?:[^/].)?)/?$),[Format] => $1 ,[Prompt] => Web path to (optional) cambozola java streaming client,[Help] => Cambozola is a handy low fat cheese flavoured Java applet that ZoneMinder uses to view image streams on browsers such as Internet Explorer that don't natively support this format. If you use this browser it is highly recommended to install this from http://www.charliemouse.com/code/cambozola/ however if it is not installed still images at a lower refresh rate can still be viewed. Leave this as 'cambozola.jar' if cambozola is installed in the same directory as the ZoneMinder web client files.,[Category] => images,[Readonly] => 0,[Requires] => ZM_OPT_CAMBOZOLA=1),[ZM_RELOAD_CAMBOZOLA] => Array ([Id] => 24,[Name] => ZM_RELOAD_CAMBOZOLA,[Value] => 0,[Type] => integer,[DefaultValue] => 0,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => After how many seconds should Cambozola be reloaded in live view,[Help] => Cambozola allows for the viewing of streaming MJPEG however it caches the entire stream into cache space on the computer, setting this to a number > 0 will cause it to automatically reload after that many seconds to avoid filling up a hard drive.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_TIMESTAMP_ON_CAPTURE] => Array ([Id] => 25,[Name] => ZM_TIMESTAMP_ON_CAPTURE,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Timestamp images as soon as they are captured,[Help] => ZoneMinder can add a timestamp to images in two ways. The default method, when this option is set, is that each image is timestamped immediately when captured and so the image held in memory is marked right away. The second method does not timestamp the images until they are either saved as part of an event or accessed over the web. The timestamp used in both methods will contain the same time as this is preserved along with the image. The first method ensures that an image is timestamped regardless of any other circumstances but will result in all images being timestamped even those never saved or viewed. The second method necessitates that saved images are copied before being saved otherwise two timestamps perhaps at different scales may be applied. This has the (perhaps) desirable side effect that the timestamp is always applied at the same resolution so an image that has scaling applied will still have a legible and correctly scaled timestamp.,[Category] => config,[Readonly] => 0,[Requires] => ),[ZM_CPU_EXTENSIONS] => Array ([Id] => 26,[Name] => ZM_CPU_EXTENSIONS,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Use advanced CPU extensions to increase performance,[Help] => When advanced processor extensions such as SSE2 or SSSE3 are available, ZoneMinder can use them, which should increase performance and reduce system load. Enabling this option on processors that do not support the advanced processors extensions used by ZoneMinder is harmless and will have no effect.,[Category] => config,[Readonly] => 0,[Requires] => ),[ZM_FAST_IMAGE_BLENDS] => Array ([Id] => 27,[Name] => ZM_FAST_IMAGE_BLENDS,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Use a fast algorithm to blend the reference image,[Help] => To detect alarms ZoneMinder needs to blend the captured image with the stored reference image to update it for comparison with the next image. The reference blend percentage specified for the monitor controls how much the new image affects the reference image. There are two methods that are available for this. If this option is set then fast calculation which does not use any multiplication or division is used. This calculation is extremely fast, however it limits the possible blend percentages to 50%, 25%, 12.5%, 6.25%, 3.25% and 1.5%. Any other blend percentage will be rounded to the nearest possible one. The alternative is to switch this option off and use standard blending instead, which is slower.,[Category] => config,[Readonly] => 0,[Requires] => ),[ZM_OPT_ADAPTIVE_SKIP] => Array ([Id] => 28,[Name] => ZM_OPT_ADAPTIVE_SKIP,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Should frame analysis try and be efficient in skipping frames,[Help] => In previous versions of ZoneMinder the analysis daemon would attempt to keep up with the capture daemon by processing the last captured frame on each pass. This would sometimes have the undesirable side-effect of missing a chunk of the initial activity that caused the alarm because the pre-alarm frames would all have to be written to disk and the database before processing the next frame, leading to some delay between the first and second event frames. Setting this option enables a newer adaptive algorithm where the analysis daemon attempts to process as many captured frames as possible, only skipping frames when in danger of the capture daemon overwriting yet to be processed frames. This skip is variable depending on the size of the ring buffer and the amount of space left in it. Enabling this option will give you much better coverage of the beginning of alarms whilst biasing out any skipped frames towards the middle or end of the event. However you should be aware that this will have the effect of making the analysis daemon run somewhat behind the capture daemon during events and for particularly fast rates of capture it is possible for the adaptive algorithm to be overwhelmed and not have time to react to a rapid build up of pending frames and thus for a buffer overrun condition to occur.,[Category] => config,[Readonly] => 0,[Requires] => ),[ZM_MAX_SUSPEND_TIME] => Array ([Id] => 29,[Name] => ZM_MAX_SUSPEND_TIME,[Value] => 30,[Type] => integer,[DefaultValue] => 30,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Maximum time that a monitor may have motion detection suspended,[Help] => ZoneMinder allows monitors to have motion detection to be suspended, for instance while panning a camera. Ordinarily this relies on the operator resuming motion detection afterwards as failure to do so can leave a monitor in a permanently suspended state. This setting allows you to set a maximum time which a camera may be suspended for before it automatically resumes motion detection. This time can be extended by subsequent suspend indications after the first so continuous camera movement will also occur while the monitor is suspended.,[Category] => config,[Readonly] => 0,[Requires] => ),[ZM_OPT_REMOTE_CAMERAS] => Array ([Id] => 30,[Name] => ZM_OPT_REMOTE_CAMERAS,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Are you going to use remote/networked cameras,[Help] => ZoneMinder can work with both local cameras, ie. those attached physically to your computer and remote or network cameras. If you will be using networked cameras select this option.,[Category] => hidden,[Readonly] => 0,[Requires] => ),[ZM_NETCAM_REGEXPS] => Array ([Id] => 31,[Name] => ZM_NETCAM_REGEXPS,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Use regular expression matching with network cameras,[Help] => Traditionally ZoneMinder has used complex regular regular expressions to handle the multitude of formats that network cameras produce. In versions from 1.21.1 the default is to use a simpler and faster built in pattern matching methodology. This works well with most networks cameras but if you have problems you can try the older, but more flexible, regular expression based method by selecting this option. Note, to use this method you must have libpcre installed on your system.,[Category] => hidden,[Readonly] => 0,[Requires] => ZM_OPT_REMOTE_CAMERAS=1),[ZM_HTTP_VERSION] => Array ([Id] => 32,[Name] => ZM_HTTP_VERSION,[Value] => 1.1,[Type] => string,[DefaultValue] => 1.1,[Hint] => 1.1|1.0,[Pattern] => (?^:^(1.[01])$),[Format] => $1?$1:"" ,[Prompt] => The version of HTTP that ZoneMinder will use to connect,[Help] => ZoneMinder can communicate with network cameras using either of the HTTP/1.1 or HTTP/1.0 standard. A server will normally fall back to the version it supports with no problem so this should usually by left at the default. However it can be changed to HTTP/1.0 if necessary to resolve particular issues.,[Category] => network,[Readonly] => 0,[Requires] => ),[ZM_HTTP_UA] => Array ([Id] => 33,[Name] => ZM_HTTP_UA,[Value] => ZoneMinder,[Type] => string,[DefaultValue] => ZoneMinder,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => The user agent that ZoneMinder uses to identify itself,[Help] => When ZoneMinder communicates with remote cameras it will identify itself using this string and it's version number. This is normally sufficient, however if a particular cameras expects only to communicate with certain browsers then this can be changed to a different string identifying ZoneMinder as Internet Explorer or Netscape etc.,[Category] => network,[Readonly] => 0,[Requires] => ),[ZM_HTTP_TIMEOUT] => Array ([Id] => 34,[Name] => ZM_HTTP_TIMEOUT,[Value] => 2500,[Type] => integer,[DefaultValue] => 2500,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => How long ZoneMinder waits before giving up on images (milliseconds),[Help] => When retrieving remote images ZoneMinder will wait for this length of time before deciding that an image is not going to arrive and taking steps to retry. This timeout is in milliseconds (1000 per second) and will apply to each part of an image if it is not sent in one whole chunk.,[Category] => network,[Readonly] => 0,[Requires] => ),[ZM_MIN_RTP_PORT] => Array ([Id] => 35,[Name] => ZM_MIN_RTP_PORT,[Value] => 40200,[Type] => integer,[DefaultValue] => 40200,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Minimum port that ZoneMinder will listen for RTP traffic on,[Help] => When ZoneMinder communicates with MPEG4 capable cameras using RTP with the unicast method it must open ports for the camera to connect back to for control and streaming purposes. This setting specifies the minimum port number that ZoneMinder will use. Ordinarily two adjacent ports are used for each camera, one for control packets and one for data packets. This port should be set to an even number, you may also need to open up a hole in your firewall to allow cameras to connect back if you wish to use unicasting.,[Category] => network,[Readonly] => 0,[Requires] => ),[ZM_MAX_RTP_PORT] => Array ([Id] => 36,[Name] => ZM_MAX_RTP_PORT,[Value] => 40499,[Type] => integer,[DefaultValue] => 40499,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Maximum port that ZoneMinder will listen for RTP traffic on,[Help] => When ZoneMinder communicates with MPEG4 capable cameras using RTP with the unicast method it must open ports for the camera to connect back to for control and streaming purposes. This setting specifies the maximum port number that ZoneMinder will use. Ordinarily two adjacent ports are used for each camera, one for control packets and one for data packets. This port should be set to an even number, you may also need to open up a hole in your firewall to allow cameras to connect back if you wish to use unicasting. You should also ensure that you have opened up at least two ports for each monitor that will be connecting to unicasting network cameras.,[Category] => network,[Readonly] => 0,[Requires] => ),[ZM_OPT_FFMPEG] => Array ([Id] => 37,[Name] => ZM_OPT_FFMPEG,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Is the ffmpeg video encoder/decoder installed,[Help] => ZoneMinder can optionally encode a series of video images into an MPEG encoded movie file for viewing, downloading or storage. This option allows you to specify whether you have the ffmpeg tools installed. Note that creating MPEG files can be fairly CPU and disk intensive and is not a required option as events can still be reviewed as video streams without it.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_PATH_FFMPEG] => Array ([Id] => 38,[Name] => ZM_PATHFFMPEG,[Value] => /usr/bin/ffmpeg,[Type] => string,[DefaultValue] => /usr/bin/ffmpeg,[Hint] => /absolute/path/to/somewhere,[Pattern] => (?^:^((?:/[^/])+?)/?$),[Format] => $1 ,[Prompt] => Path to (optional) ffmpeg mpeg encoder,[Help] => This path should point to where ffmpeg has been installed.,[Category] => images,[Readonly] => 0,[Requires] => ZM_OPT_FFMPEG=1),[ZM_FFMPEG_INPUT_OPTIONS] => Array ([Id] => 39,[Name] => ZM_FFMPEG_INPUT_OPTIONS,[Value] => ,[Type] => string,[DefaultValue] => ,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => Additional input options to ffmpeg,[Help] => Ffmpeg can take many options on the command line to control the quality of video produced. This option allows you to specify your own set that apply to the input to ffmpeg (options that are given before the -i option). Check the ffmpeg documentation for a full list of options which may be used here.,[Category] => images,[Readonly] => 0,[Requires] => ZM_OPT_FFMPEG=1),[ZM_FFMPEG_OUTPUT_OPTIONS] => Array ([Id] => 40,[Name] => ZM_FFMPEG_OUTPUT_OPTIONS,[Value] => -r 25,[Type] => string,[DefaultValue] => -r 25,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => Additional output options to ffmpeg,[Help] => Ffmpeg can take many options on the command line to control the quality of video produced. This option allows you to specify your own set that apply to the output from ffmpeg (options that are given after the -i option). Check the ffmpeg documentation for a full list of options which may be used here. The most common one will often be to force an output frame rate supported by the video encoder.,[Category] => images,[Readonly] => 0,[Requires] => ZM_OPT_FFMPEG=1),[ZM_FFMPEG_FORMATS] => Array ([Id] => 41,[Name] => ZM_FFMPEGFORMATS,[Value] => mpg mpeg wmv asf avi mov swf 3gp,[Type] => string,[DefaultValue] => mpg mpeg wmv asf avi* mov swf 3gp,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => Formats to allow for ffmpeg video generation,[Help] => Ffmpeg can generate video in many different formats. This option allows you to list the ones you want to be able to select. As new formats are supported by ffmpeg you can add them here and be able to use them immediately. Adding a '_' after a format indicates that this will be the default format used for web video, adding '' defines the default format for phone video.,[Category] => images,[Readonly] => 0,[Requires] => ZM_OPT_FFMPEG=1),[ZM_LOG_LEVEL_SYSLOG] => Array ([Id] => 42,[Name] => ZM_LOG_LEVEL_SYSLOG,[Value] => 0,[Type] => integer,[DefaultValue] => 0,[Hint] => None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Save logging output to the system log,[Help] => ZoneMinder logging is now more more integrated between components and allows you to specify the destination for logging output and the individual levels for each. This option lets you control the level of logging output that goes to the system log. ZoneMinder binaries have always logged to the system log but now scripts and web logging is also included. To preserve the previous behaviour you should ensure this value is set to Info or Warning. This option controls the maximum level of logging that will be written, so Info includes Warnings and Errors etc. To disable entirely, set this option to None. You should use caution when setting this option to Debug as it can affect severely affect system performance. If you want debug you will also need to set a level and component below,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_LEVEL_FILE] => Array ([Id] => 43,[Name] => ZM_LOG_LEVEL_FILE,[Value] => -5,[Type] => integer,[DefaultValue] => -5,[Hint] => None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Save logging output to component files,[Help] => ZoneMinder logging is now more more integrated between components and allows you to specify the destination for logging output and the individual levels for each. This option lets you control the level of logging output that goes to individual log files written by specific components. This is how logging worked previously and although useful for tracking down issues in specific components it also resulted in many disparate log files. To preserve this behaviour you should ensure this value is set to Info or Warning. This option controls the maximum level of logging that will be written, so Info includes Warnings and Errors etc. To disable entirely, set this option to None. You should use caution when setting this option to Debug as it can affect severely affect system performance though file output has less impact than the other options. If you want debug you will also need to set a level and component below,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_LEVEL_WEBLOG] => Array ([Id] => 44,[Name] => ZM_LOG_LEVEL_WEBLOG,[Value] => -5,[Type] => integer,[DefaultValue] => -5,[Hint] => None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Save logging output to the weblog,[Help] => ZoneMinder logging is now more more integrated between components and allows you to specify the destination for logging output and the individual levels for each. This option lets you control the level of logging output from the web interface that goes to the httpd error log. Note that only web logging from PHP and JavaScript files is included and so this option is really only useful for investigating specific issues with those components. This option controls the maximum level of logging that will be written, so Info includes Warnings and Errors etc. To disable entirely, set this option to None. You should use caution when setting this option to Debug as it can affect severely affect system performance. If you want debug you will also need to set a level and component below,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_LEVEL_DATABASE] => Array ([Id] => 45,[Name] => ZM_LOG_LEVEL_DATABASE,[Value] => 0,[Type] => integer,[DefaultValue] => 0,[Hint] => None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Save logging output to the database,[Help] => ZoneMinder logging is now more more integrated between components and allows you to specify the destination for logging output and the individual levels for each. This option lets you control the level of logging output that is written to the database. This is a new option which can make viewing logging output easier and more intuitive and also makes it easier to get an overall impression of how the system is performing. If you have a large or very busy system then it is possible that use of this option may slow your system down if the table becomes very large. Ensure you use the LOG_DATABASE_LIMIT option to keep the table to a manageable size. This option controls the maximum level of logging that will be written, so Info includes Warnings and Errors etc. To disable entirely, set this option to None. You should use caution when setting this option to Debug as it can affect severely affect system performance. If you want debug you will also need to set a level and component below,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_DATABASE_LIMIT] => Array ([Id] => 46,[Name] => ZM_LOG_DATABASE_LIMIT,[Value] => 7 day,[Type] => string,[DefaultValue] => 7 day,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => Maximum number of log entries to retain,[Help] => If you are using database logging then it is possible to quickly build up a large number of entries in the Logs table. This option allows you to specify how many of these entries are kept. If you set this option to a number greater than zero then that number is used to determine the maximum number of rows, less than or equal to zero indicates no limit and is not recommended. You can also set this value to time values such as ' day' which will limit the log entries to those newer than that time. You can specify 'hour', 'day', 'week', 'month' and 'year', note that the values should be singular (no 's' at the end). The Logs table is pruned periodically so it is possible for more than the expected number of rows to be present briefly in the meantime.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_DEBUG] => Array ([Id] => 47,[Name] => ZM_LOG_DEBUG,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Switch debugging on,[Help] => ZoneMinder components usually support debug logging available to help with diagnosing problems. Binary components have several levels of debug whereas more other components have only one. Normally this is disabled to minimise performance penalties and avoid filling logs too quickly. This option lets you switch on other options that allow you to configure additional debug information to be output. Components will pick up this instruction when they are restarted.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_DEBUG_TARGET] => Array ([Id] => 48,[Name] => ZM_LOG_DEBUGTARGET,[Value] => ,[Type] => string,[DefaultValue] => ,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => What components should have extra debug enabled,[Help] => There are three scopes of debug available. Leaving this option blank means that all components will use extra debug (not recommended). Setting this option to '', e.g. _zmc, will limit extra debug to that component only. Setting this option to '', e.g. '_zmc_m1' will limit extra debug to that instance of the component only. This is ordinarily what you probably want to do. To debug scripts use their names without the .pl extension, e.g. '_zmvideo' and to debug issues with the web interface use '_web'. You can specify multiple targets by separating them with '|' characters.,[Category] => logging,[Readonly] => 0,[Requires] => ZM_LOG_DEBUG=1),[ZM_LOG_DEBUG_LEVEL] => Array ([Id] => 49,[Name] => ZM_LOG_DEBUG_LEVEL,[Value] => 1,[Type] => integer,[DefaultValue] => 1,[Hint] => 1|2|3|4|5|6|7|8|9,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => What level of extra debug should be enabled,[Help] => There are 9 levels of debug available, with higher numbers being more debug and level 0 being no debug. However not all levels are used by all components. Also if there is debug at a high level it is usually likely to be output at such a volume that it may obstruct normal operation. For this reason you should set the level carefully and cautiously until the degree of debug you wish to see is present. Scripts and the web interface only have one level so this is an on/off type option for them.,[Category] => logging,[Readonly] => 0,[Requires] => ZM_LOG_DEBUG=1),[ZM_LOG_DEBUG_FILE] => Array ([Id] => 50,[Name] => ZM_LOG_DEBUG_FILE,[Value] => /tmp/zm/zm_debug.log+,[Type] => string,[DefaultValue] => /tmp/zm/zm_debug.log+,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => Where extra debug is output to,[Help] => This option allows you to specify a different target for debug output. All components have a default log file which will norally be in /tmp or /var/log and this is where debug will be written to if this value is empty. Adding a path here will temporarily redirect debug, and other logging output, to this file. This option is a simple filename and you are debugging several components then they will all try and write to the same file with undesirable consequences. Appending a '+' to the filename will cause the file to be created with a '.' suffix containing your process id. In this way debug from each run of a component is kept separate. This is the recommended setting as it will also prevent subsequent runs from overwriting the same log. You should ensure that permissions are set up to allow writing to the file and directory specified here.,[Category] => logging,[Readonly] => 0,[Requires] => ZM_LOG_DEBUG=1),[ZM_LOG_CHECK_PERIOD] => Array ([Id] => 51,[Name] => ZM_LOG_CHECK_PERIOD,[Value] => 900,[Type] => integer,[DefaultValue] => 900,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Time period used when calculating overall system health,[Help] => When ZoneMinder is logging events to the database it can retrospectively examine the number of warnings and errors that have occurred to calculate an overall state of system health. This option allows you to indicate what period of historical events are used in this calculation. This value is expressed in seconds and is ignored if LOG_LEVEL_DATABASE is set to None.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_ALERT_WAR_COUNT] => Array ([Id] => 52,[Name] => ZM_LOG_ALERT_WAR_COUNT,[Value] => 1,[Type] => integer,[DefaultValue] => 1,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Number of warnings indicating system alert state,[Help] => When ZoneMinder is logging events to the database it can retrospectively examine the number of warnings and errors that have occurred to calculate an overall state of system health. This option allows you to specify how many warnings must have occurred within the defined time period to generate an overall system alert state. A value of zero means warnings are not considered. This value is ignored if LOG_LEVEL_DATABASE is set to None.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_ALERT_ERR_COUNT] => Array ([Id] => 53,[Name] => ZM_LOG_ALERT_ERR_COUNT,[Value] => 1,[Type] => integer,[DefaultValue] => 1,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Number of errors indicating system alert state,[Help] => When ZoneMinder is logging events to the database it can retrospectively examine the number of warnings and errors that have occurred to calculate an overall state of system health. This option allows you to specify how many errors must have occurred within the defined time period to generate an overall system alert state. A value of zero means errors are not considered. This value is ignored if LOG_LEVEL_DATABASE is set to None.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_ALERT_FAT_COUNT] => Array ([Id] => 54,[Name] => ZM_LOG_ALERT_FAT_COUNT,[Value] => 0,[Type] => integer,[DefaultValue] => 0,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Number of fatal error indicating system alert state,[Help] => When ZoneMinder is logging events to the database it can retrospectively examine the number of warnings and errors that have occurred to calculate an overall state of system health. This option allows you to specify how many fatal errors (including panics) must have occurred within the defined time period to generate an overall system alert state. A value of zero means fatal errors are not considered. This value is ignored if LOG_LEVEL_DATABASE is set to None.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_ALARM_WAR_COUNT] => Array ([Id] => 55,[Name] => ZM_LOG_ALARM_WAR_COUNT,[Value] => 100,[Type] => integer,[DefaultValue] => 100,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Number of warnings indicating system alarm state,[Help] => When ZoneMinder is logging events to the database it can retrospectively examine the number of warnings and errors that have occurred to calculate an overall state of system health. This option allows you to specify how many warnings must have occurred within the defined time period to generate an overall system alarm state. A value of zero means warnings are not considered. This value is ignored if LOG_LEVEL_DATABASE is set to None.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_ALARM_ERR_COUNT] => Array ([Id] => 56,[Name] => ZM_LOG_ALARM_ERR_COUNT,[Value] => 10,[Type] => integer,[DefaultValue] => 10,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Number of errors indicating system alarm state,[Help] => When ZoneMinder is logging events to the database it can retrospectively examine the number of warnings and errors that have occurred to calculate an overall state of system health. This option allows you to specify how many errors must have occurred within the defined time period to generate an overall system alarm state. A value of zero means errors are not considered. This value is ignored if LOG_LEVEL_DATABASE is set to None.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_ALARM_FAT_COUNT] => Array ([Id] => 57,[Name] => ZM_LOG_ALARM_FAT_COUNT,[Value] => 1,[Type] => integer,[DefaultValue] => 1,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Number of fatal error indicating system alarm state,[Help] => When ZoneMinder is logging events to the database it can retrospectively examine the number of warnings and errors that have occurred to calculate an overall state of system health. This option allows you to specify how many fatal errors (including panics) must have occurred within the defined time period to generate an overall system alarm state. A value of zero means fatal errors are not considered. This value is ignored if LOG_LEVEL_DATABASE is set to None.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_RECORD_EVENT_STATS] => Array ([Id] => 58,[Name] => ZM_RECORD_EVENT_STATS,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Record event statistical information, switch off if too slow,[Help] => This version of ZoneMinder records detailed information about events in the Stats table. This can help in profiling what the optimum settings are for Zones though this is tricky at present. However in future releases this will be done more easily and intuitively, especially with a large sample of events. The default option of 'yes' allows this information to be collected now in readiness for this but if you are concerned about performance you can switch this off in which case no Stats information will be saved.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_RECORD_DIAG_IMAGES] => Array ([Id] => 59,[Name] => ZM_RECORD_DIAG_IMAGES,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Record intermediate alarm diagnostic images, can be very slow,[Help] => In addition to recording event statistics you can also record the intermediate diagnostic images that display the results of the various checks and processing that occur when trying to determine if an alarm event has taken place. There are several of these images generated for each frame and zone for each alarm or alert frame so this can have a massive impact on performance. Only switch this setting on for debug or analysis purposes and remember to switch it off again once no longer required.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_DUMP_CORES] => Array ([Id] => 60,[Name] => ZM_DUMP_CORES,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Create core files on unexpected process failure.,[Help] => When an unrecoverable error occurs in a ZoneMinder binary process is has traditionally been trapped and the details written to logs to aid in remote analysis. However in some cases it is easier to diagnose the error if a core file, which is a memory dump of the process at the time of the error, is created. This can be interactively analysed in the debugger and may reveal more or better information than that available from the logs. This option is recommended for advanced users only otherwise leave at the default. Note using this option to trigger core files will mean that there will be no indication in the binary logs that a process has died, they will just stop, however the zmdc log will still contain an entry. Also note that you may have to explicitly enable core file creation on your system via the 'ulimit -c' command or other means otherwise no file will be created regardless of the value of this option.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_PATH_MAP] => Array ([Id] => 61,[Name] => ZM_PATHMAP,[Value] => /dev/shm,[Type] => string,[DefaultValue] => /dev/shm,[Hint] => /absolute/path/to/somewhere,[Pattern] => (?^:^((?:/[^/])+?)/?$),[Format] => $1 ,[Prompt] => Path to the mapped memory files that that ZoneMinder can use,[Help] => ZoneMinder has historically used IPC shared memory for shared data between processes. This has it's advantages and limitations. This version of ZoneMinder can use an alternate method, mapped memory, instead with can be enabled with the --enable--mmap directive to configure. This requires less system configuration and is generally more flexible. However it requires each shared data segment to map onto a filesystem file. This option indicates where those mapped files go. You should ensure that this location has sufficient space for these files and for the best performance it should be a tmpfs file system or ramdisk otherwise disk access may render this method slower than the regular shared memory one.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_PATH_SOCKS] => Array ([Id] => 62,[Name] => ZM_PATHSOCKS,[Value] => /tmp/zm,[Type] => string,[DefaultValue] => /tmp/zm,[Hint] => /absolute/path/to/somewhere,[Pattern] => (?^:^((?:/[^/])+?)/?$),[Format] => $1 ,[Prompt] => Path to the various Unix domain socket files that ZoneMinder uses,[Help] => ZoneMinder generally uses Unix domain sockets where possible. This reduces the need for port assignments and prevents external applications from possibly compromising the daemons. However each Unix socket requires a .sock file to be created. This option indicates where those socket files go.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_PATH_LOGS] => Array ([Id] => 63,[Name] => ZM_PATHLOGS,[Value] => /var/log/zm,[Type] => string,[DefaultValue] => /var/log/zm,[Hint] => /absolute/path/to/somewhere,[Pattern] => (?^:^((?:/[^/])+?)/?$),[Format] => $1 ,[Prompt] => Path to the various logs that the ZoneMinder daemons generate,[Help] => There are various daemons that are used by ZoneMinder to perform various tasks. Most generate helpful log files and this is where they go. They can be deleted if not required for debugging.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_PATH_SWAP] => Array ([Id] => 64,[Name] => ZM_PATHSWAP,[Value] => /tmp/zm,[Type] => string,[DefaultValue] => /tmp/zm,[Hint] => /absolute/path/to/somewhere,[Pattern] => (?^:^((?:/[^/])+?)/?$),[Format] => $1 ,[Prompt] => Path to location for temporary swap images used in streaming,[Help] => Buffered playback requires temporary swap images to be stored for each instance of the streaming daemons. This option determines where these images will be stored. The images will actually be stored in sub directories beneath this location and will be automatically cleaned up after a period of time.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_WEB_TITLE_PREFIX] => Array ([Id] => 65,[Name] => ZM_WEB_TITLE_PREFIX,[Value] => ZM,[Type] => string,[DefaultValue] => ZM,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => The title prefix displayed on each window,[Help] => If you have more than one installation of ZoneMinder it can be helpful to display different titles for each one. Changing this option allows you to customise the window titles to include further information to aid identification.,[Category] => web,[Readonly] => 0,[Requires] => ),[ZM_WEB_RESIZE_CONSOLE] => Array ([Id] => 66,[Name] => ZM_WEB_RESIZE_CONSOLE,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Should the console window resize itself to fit,[Help] => Traditionally the main ZoneMinder web console window has resized itself to shrink to a size small enough to list only the monitors that are actually present. This is intended to make the window more unobtrusize but may not be to everyones tastes, especially if opened in a tab in browsers which support this kind if layout. Switch this option off to have the console window size left to the users preference,[Category] => web,[Readonly] => 0,[Requires] => ),[ZM_WEB_POPUP_ON_ALARM] => Array ([Id] => 67,[Name] => ZM_WEB_POPUP_ON_ALARM,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Should the monitor window jump to the top if an alarm occurs,[Help] => When viewing a live monitor stream you can specify whether you want the window to pop to the front if an alarm occurs when the window is minimised or behind another window. This is most useful if your monitors are over doors for example when they can pop up if someone comes to the doorway.,[Category] => web,[Readonly] => 0,[Requires] => ),[ZM_OPT_X10] => Array ([Id] => 68,[Name] => ZM_OPT_X10,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Support interfacing with X10 devices,[Help] => If you have an X10 Home Automation setup in your home you can use ZoneMinder to initiate or react to X10 signals if your computer has the appropriate interface controller. This option indicates whether X10 options will be available in the browser client.,[Category] => x10,[Readonly] => 0,[Requires] => ),[ZM_X10_DEVICE] => Array ([Id] => 69,[Name] => ZM_X10DEVICE,[Value] => /dev/ttyS0,[Type] => string,[DefaultValue] => /dev/ttyS0,[Hint] => /absolute/path/to/somewhere,[Pattern] => (?^:^((?:/[^/])+?)/?$),[Format] => $1 ,[Prompt] => What device is your X10 controller connected on,[Help] => If you have an X10 controller device (e.g. XM10U) connected to your computer this option details which port it is conected on, the default of /dev/ttyS0 maps to serial or com port 1.,[Category] => x10,[Readonly] => 0,[Requires] => ZM_OPT_X10=1),[ZM_X10_HOUSE_CODE] => Array ([Id] => 70,[Name] => ZM_X10_HOUSE_CODE,[Value] => A,[Type] => string,[DefaultValue] => A,[Hint] => A-P,[Pattern] => (?^i:^([A-P])),[Format] => uc($1) ,[Prompt] => What X10 house code should be used,[Help] => X10 devices are grouped together by identifying them as all belonging to one House Code. This option details what that is. It should be a single letter between A and P.,[Category] => x10,[Readonly] => 0,[Requires] => ZM_OPT_X10=1),[ZM_X10_DB_RELOAD_INTERVAL] => Array ([Id] => 71,[Name] => ZM_X10_DB_RELOAD_INTERVAL,[Value] => 60,[Type] => integer,[DefaultValue] => 60,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => How often (in seconds) the X10 daemon reloads the monitors from the database,[Help] => The zmx10 daemon periodically checks the database to find out what X10 events trigger, or result from, alarms. This option determines how frequently this check occurs, unless you change this area frequently this can be a fairly large value.,[Category] => x10,[Readonly] => 0,[Requires] => ZM_OPT_X10=1),[ZM_WEB_SOUND_ON_ALARM] => Array ([Id] => 72,[Name] => ZM_WEB_SOUND_ON_ALARM,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Should the monitor window play a sound if an alarm occurs,[Help] => When viewing a live monitor stream you can specify whether you want the window to play a sound to alert you if an alarm occurs.,[Category] => web,[Readonly] => 0,[Requires] => ),[ZM_WEB_ALARM_SOUND] => Array ([Id] => 73,[Name] => ZM_WEB_ALARMSOUND,[Value] => ,[Type] => string,[DefaultValue] => ,[Hint] => filename,[Pattern] => (?^:^([a-zA-Z0-9-.]+)$),[Format] => $1 ,[Prompt] => The sound to play on alarm, put this in the sounds directory,[Help] => You can specify a sound file to play if an alarm occurs whilst you are watching a live monitor stream. So long as your browser understands the format it does not need to be any particular type. This file should be placed in the sounds directory defined earlier.,[Category] => web,[Readonly] => 0,[Requires] => ZM_WEB_SOUND_ON_ALARM=1),[ZM_WEB_COMPACT_MONTAGE] => Array ([Id] => 74,[Name] => ZM_WEB_COMPACT_MONTAGE,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Compact the montage view by removing extra detail,[Help] => The montage view shows the output of all of your active monitors in one window. This include a small menu and status information for each one. This can increase the web traffic and make the window larger than may be desired. Setting this option on removes all this extraneous information and just displays the images.,[Category] => web,[Readonly] => 0,[Requires] => ),[ZM_OPT_FAST_DELETE] => Array ([Id] => 75,[Name] => ZM_OPT_FAST_DELETE,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Delete only event database records for speed,[Help] => Normally an event created as the result of an alarm consists of entries in one or more database tables plus the various files associated with it. When deleting events in the browser it can take a long time to remove all of this if your are trying to do a lot of events at once. It is recommended that you set this option which means that the browser client only deletes the key entries in the events table, which means the events will no longer appear in the listing, and leaves the zmaudit daemon to clear up the rest later.,[Category] => system,[Readonly] => 0,[Requires] => ),[ZM_STRICT_VIDEO_CONFIG] => Array ([Id] => 76,[Name] => ZM_STRICT_VIDEO_CONFIG,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Allow errors in setting video config to be fatal,[Help] => With some video devices errors can be reported in setting the various video attributes when in fact the operation was successful. Switching this option off will still allow these errors to be reported but will not cause them to kill the video capture daemon. Note however that doing this will cause all errors to be ignored including those which are genuine and which may cause the video capture to not function correctly. Use this option with caution.,[Category] => config,[Readonly] => 0,[Requires] => ),[ZM_SIGNAL_CHECK_POINTS] => Array ([Id] => 77,[Name] => ZM_SIGNAL_CHECK_POINTS,[Value] => 10,[Type] => integer,[DefaultValue] => 10,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => How many points in a captured image to check for signal loss,[Help] => For locally attached video cameras ZoneMinder can check for signal loss by looking at a number of random points on each captured image. If all of these points are set to the same fixed colour then the camera is assumed to have lost signal. When this happens any open events are closed and a short one frame signal loss event is generated, as is another when the signal returns. This option defines how many points on each image to check. Note /usr/share/zoneminder/www/includes/logger.php

knight-of-ni commented 10 years ago

While testing the latest master branch over the past couple weeks, I have not seen this issue. Do you still experience this logzilla?

barjac commented 10 years ago

I can't test locally since UVC is broken in ZM. My webcam is the only camera that I can use on my main machine. (master is not on my server). The breakage is somewhere in the last 27 commits. :\

knight-of-ni commented 10 years ago

Did we end up resolving this? I forget.

barjac commented 10 years ago

Nope it's still there: I just re-installed zm 1.28 from 38ec44f, created new db and added my uvc webcam, veiwed it once and checked the log which follows:

2014-11-07 18:01:17.016472 zms 22407 INF Got signal 15 (Terminated), exiting /home/baz/rpmbuild/BUILD/ZoneMinder-1.28.0/src/zm_signal.cpp 40 2014-11-07 18:00:38.833403 zms 22407 WAR Shared data not initialised by capture daemon, some query functions may not be available or produce invalid results /home/baz/rpmbuild/BUILD/ZoneMinder-1.28.0/src/zm_monitor.cpp 424 2014-11-07 18:00:38.696019 web_js 22392 PNC Unknown error type: [8] Undefined index: file #0 Panic(Unknown error type: [8] Undefined index: file) called at [/usr/share/zoneminder/www/includes/logger.php:581] #1 ErrorHandler(8, Undefined index: file, /usr/share/zoneminder/www/ajax/log.php, 13, Array ([_GET] => Array (),[_POST] => Array ([view] => request,[request] => log,[task] => create,[browser] => Array ([name] => firefox,[version] => 31,[platform] => linux),[level] => WAR,[message] => Adjusting to minimum width when getting popup size for tag 'watch' - getPopupSize()),[_COOKIE] => Array ([zmBandwidth] => medium,[zmSkin] => classic,[replayMode] => gapless,[ZMSESSID] => isth3earivonpqf6vbe7n11kg2),[_FILES] => Array (),[_SERVER] => Array ([UNIQUE_ID] => VF0Ixi68SEfOVqlPaByTIQAAAA4,[HTTP_HOST] => jackodesktop,[HTTP_USER_AGENT] => Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0,[HTTP_ACCEPT] => application/json,[HTTP_ACCEPT_LANGUAGE] => en-gb,en;q=0.5,[HTTP_ACCEPT_ENCODING] => gzip, deflate,[HTTP_X_REQUESTED_WITH] => XMLHttpRequest,[HTTP_X_REQUEST] => JSON,[CONTENT_TYPE] => application/x-www-form-urlencoded; charset=utf-8,[HTTP_REFERER] => http://jackodesktop/zm/,[CONTENT_LENGTH] => 234,[HTTP_COOKIE] => zmBandwidth=medium; zmSkin=classic; replayMode=gapless; ZMSESSID=isth3earivonpqf6vbe7n11kg2,[HTTP_CONNECTION] => keep-alive,[HTTP_PRAGMA] => no-cache,[HTTP_CACHE_CONTROL] => no-cache,[PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin,[SERVER_SIGNATURE] => ,[SERVER_SOFTWARE] => Apache/2.4.10 (Mageia) PHP/5.6.2,[SERVER_NAME] => jackodesktop,[SERVER_ADDR] => 192.168.1.65,[SERVER_PORT] => 80,[REMOTE_ADDR] => 192.168.1.65,[DOCUMENT_ROOT] => /var/www/html,[REQUEST_SCHEME] => http,[CONTEXT_PREFIX] => /zm,[CONTEXT_DOCUMENT_ROOT] => /usr/share/zoneminder/www,[SERVER_ADMIN] => root@localhost,[SCRIPT_FILENAME] => /usr/share/zoneminder/www/index.php,[REMOTE_PORT] => 38566,[GATEWAY_INTERFACE] => CGI/1.1,[SERVER_PROTOCOL] => HTTP/1.1,[REQUEST_METHOD] => POST,[QUERY_STRING] => ,[REQUEST_URI] => /zm/index.php,[SCRIPT_NAME] => /zm/index.php,[PHP_SELF] => /zm/index.php,[REQUEST_TIME_FLOAT] => 1415383238.675,[REQUEST_TIME] => 1415383238),[_REQUEST] => Array ([view] => request,[request] => log,[task] => create,[browser] => Array ([name] => firefox,[version] => 31,[platform] => linux),[level] => WAR,[message] => Adjusting to minimum width when getting popup size for tag 'watch' - getPopupSize()),[debug] => ,[protocol] => http,[skin] => classic,[skinBase] => Array ([0] => classic),[_SESSION] => Array ([skin] => classic),[GLOBALS] => Array ( RECURSION,[configFile] => /etc/zm.conf,[localConfigFile] => zm.conf,[cfg] => Resource id #7,[str] => ,[matches] => Array ([0] => ZM_SERVER_HOST= ,[1] => ZM_SERVER_HOST,[2] => ),[dbLogLevel] => 0,[dbConn] => PDO Object (),[config] => Array ([ZM_LANG_DEFAULT] => Array ([Id] => 0,[Name] => ZM_LANG_DEFAULT,[Value] => en_gb,[Type] => string,[DefaultValue] => en_gb,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => Default language used by web interface,[Help] => ZoneMinder allows the web interface to use languages other than English if the appropriate language file has been created and is present. This option allows you to change the default language that is used from the shipped language, British English, to another language,[Category] => system,[Readonly] => 0,[Requires] => ),[ZM_OPT_USE_AUTH] => Array ([Id] => 1,[Name] => ZM_OPT_USE_AUTH,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Authenticate user logins to ZoneMinder,[Help] => ZoneMinder can run in two modes. The simplest is an entirely unauthenticated mode where anyone can access ZoneMinder and perform all tasks. This is most suitable for installations where the web server access is limited in other ways. The other mode enables user accounts with varying sets of permissions. Users must login or authenticate to access ZoneMinder and are limited by their defined permissions.,[Category] => system,[Readonly] => 0,[Requires] => ),[ZM_AUTH_TYPE] => Array ([Id] => 2,[Name] => ZM_AUTH_TYPE,[Value] => builtin,[Type] => string,[DefaultValue] => builtin,[Hint] => builtin|remote,[Pattern] => (?^i:^([br])),[Format] => $1 =~ /^b/ ? "builtin" : "remote" ,[Prompt] => What is used to authenticate ZoneMinder users,[Help] => ZoneMinder can use two methods to authenticate users when running in authenticated mode. The first is a builtin method where ZoneMinder provides facilities for users to log in and maintains track of their identity. The second method allows interworking with other methods such as http basic authentication which passes an independently authentication 'remote' user via http. In this case ZoneMinder would use the supplied user without additional authentication provided such a user is configured ion ZoneMinder.,[Category] => system,[Readonly] => 0,[Requires] => ZM_OPT_USE_AUTH=1),[ZM_AUTH_RELAY] => Array ([Id] => 3,[Name] => ZM_AUTH_RELAY,[Value] => hashed,[Type] => string,[DefaultValue] => hashed,[Hint] => hashed|plain|none,[Pattern] => (?^i:^([hpn])),[Format] => ($1 =~ /^h/) ? "hashed" : ($1 =~ /^p/ ? "plain" : "none" ) ,[Prompt] => Method used to relay authentication information,[Help] => When ZoneMinder is running in authenticated mode it can pass user details between the web pages and the back end processes. There are two methods for doing this. This first is to use a time limited hashed string which contains no direct username or password details, the second method is to pass the username and passwords around in plaintext. This method is not recommend except where you do not have the md5 libraries available on your system or you have a completely isolated system with no external access. You can also switch off authentication relaying if your system is isolated in other ways.,[Category] => system,[Readonly] => 0,[Requires] => ZM_OPT_USE_AUTH=1),[ZM_AUTH_HASH_SECRET] => Array ([Id] => 4,[Name] => ZM_AUTH_HASH_SECRET,[Value] => ...Change me to something unique...,[Type] => string,[DefaultValue] => ...Change me to something unique...,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => Secret for encoding hashed authentication information,[Help] => When ZoneMinder is running in hashed authenticated mode it is necessary to generate hashed strings containing encrypted sensitive information such as usernames and password. Although these string are reasonably secure the addition of a random secret increases security substantially.,[Category] => system,[Readonly] => 0,[Requires] => ZM_OPT_USE_AUTH=1;ZM_AUTH_RELAY=hashed),[ZM_AUTH_HASH_IPS] => Array ([Id] => 5,[Name] => ZM_AUTH_HASH_IPS,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Include IP addresses in the authentication hash,[Help] => When ZoneMinder is running in hashed authenticated mode it can optionally include the requesting IP address in the resultant hash. This adds an extra level of security as only requests from that address may use that authentication key. However in some circumstances, such as access over mobile networks, the requesting address can change for each request which will cause most requests to fail. This option allows you to control whether IP addresses are included in the authentication hash on your system. If you experience intermitent problems with authentication, switching this option off may help.,[Category] => system,[Readonly] => 0,[Requires] => ZM_OPT_USE_AUTH=1;ZM_AUTH_RELAY=hashed),[ZM_AUTH_HASH_LOGINS] => Array ([Id] => 6,[Name] => ZM_AUTH_HASH_LOGINS,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Allow login by authentication hash,[Help] => The normal process for logging into ZoneMinder is via the login screen with username and password. In some circumstances it may be desirable to allow access directly to one or more pages, for instance from a third party application. If this option is enabled then adding an 'auth' parameter to any request will include a shortcut login bypassing the login screen, if not already logged in. As authentication hashes are time and, optionally, IP limited this can allow short-term access to ZoneMinder screens from other web pages etc. In order to use this the calling application will hae to generate the authentication hash itself and ensure it is valid. If you use this option you should ensure that you have modified the ZM_AUTH_HASH_SECRET to somethign unique to your system.,[Category] => system,[Readonly] => 0,[Requires] => ZM_OPT_USE_AUTH=1;ZM_AUTH_RELAY=hashed),[ZM_DIR_EVENTS] => Array ([Id] => 7,[Name] => ZM_DIREVENTS,[Value] => events,[Type] => string,[DefaultValue] => events,[Hint] => directory,[Pattern] => (?^:^([a-zA-Z0-9-.]+)$),[Format] => $1 ,[Prompt] => Directory where events are stored,[Help] => This is the path to the events directory where all the event images and other miscellaneous files are stored. CAUTION: The directory you specify here cannot be outside the web root. This is a common mistake. Most users should never change this value. If you intend to record events to a second disk or network share, then you should mount the drive or share directly to the ZoneMinder events folder or follow the instructions in the ZoneMinder Wiki titled Using a dedicated Hard Drive.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_USE_DEEP_STORAGE] => Array ([Id] => 8,[Name] => ZM_USE_DEEP_STORAGE,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Use a deep filesystem hierarchy for events,[Help] => Traditionally ZoneMinder stores all events for a monitor in one directory for that monitor. This is simple and efficient except when you have very large amounts of events. Some filesystems are unable to store more than 32k files in one directory and even without this limitation, large numbers of files in a directory can slow creation and deletion of files. This option allows you to select an alternate method of storing events by year/month/day/hour/min/second which has the effect of separating events out into more directories, resulting in less per directory, and also making it easier to manually navigate to any events that may have happened at a particular time or date.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_DIR_IMAGES] => Array ([Id] => 9,[Name] => ZM_DIRIMAGES,[Value] => images,[Type] => string,[DefaultValue] => images,[Hint] => directory,[Pattern] => (?^:^([a-zA-Z0-9-.]+)$),[Format] => $1 ,[Prompt] => Directory where the images that the ZoneMinder client generates are stored,[Help] => ZoneMinder generates a myriad of images, mostly of which are associated with events. For those that aren't this is where they go. CAUTION: The directory you specify here cannot be outside the web root. This is a common mistake. Most users should never change this value. If you intend to save images to a second disk or network share, then you should mount the drive or share directly to the ZoneMinder images folder or follow the instructions in the ZoneMinder Wiki titled Using a dedicated Hard Drive.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_DIR_SOUNDS] => Array ([Id] => 10,[Name] => ZM_DIRSOUNDS,[Value] => sounds,[Type] => string,[DefaultValue] => sounds,[Hint] => directory,[Pattern] => (?^:^([a-zA-Z0-9-.]+)$),[Format] => $1 ,[Prompt] => Directory to the sounds that the ZoneMinder client can use,[Help] => ZoneMinder can optionally play a sound file when an alarm is detected. This indicates where to look for this file. CAUTION: The directory you specify here cannot be outside the web root. Most users should never change this value.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_PATH_ZMS] => Array ([Id] => 11,[Name] => ZM_PATHZMS,[Value] => /zmcgi/nph-zms,[Type] => string,[DefaultValue] => /zmcgi/nph-zms,[Hint] => relative/path/to/somewhere,[Pattern] => (?^:^((?:[^/].)?)/?$),[Format] => $1 ,[Prompt] => Web path to zms streaming server,[Help] => The ZoneMinder streaming server is required to send streamed images to your browser. It will be installed into the cgi-bin path given at configuration time. This option determines what the web path to the server is rather than the local path on your machine. Ordinarily the streaming server runs in parser-header mode however if you experience problems with streaming you can change this to non-parsed-header (nph) mode by changing 'zms' to 'nph-zms'.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_COLOUR_JPEG_FILES] => Array ([Id] => 12,[Name] => ZM_COLOUR_JPEG_FILES,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Colourise greyscale JPEG files,[Help] => Cameras that capture in greyscale can write their captured images to jpeg files with a corresponding greyscale colour space. This saves a small amount of disk space over colour ones. However some tools such as ffmpeg either fail to work with this colour space or have to convert it beforehand. Setting this option to yes uses up a little more space but makes creation of MPEG files much faster.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_ADD_JPEG_COMMENTS] => Array ([Id] => 13,[Name] => ZM_ADD_JPEG_COMMENTS,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Add jpeg timestamp annotations as file header comments,[Help] => JPEG files may have a number of extra fields added to the file header. The comment field may have any kind of text added. This options allows you to have the same text that is used to annotate the image additionally included as a file header comment. If you archive event images to other locations this may help you locate images for particular events or times if you use software that can read comment headers.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_JPEG_FILE_QUALITY] => Array ([Id] => 14,[Name] => ZM_JPEG_FILE_QUALITY,[Value] => 70,[Type] => integer,[DefaultValue] => 70,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Set the JPEG quality setting for the saved event files (1-100),[Help] => When ZoneMinder detects an event it will save the images associated with that event to files. These files are in the JPEG format and can be viewed or streamed later. This option specifies what image quality should be used to save these files. A higher number means better quality but less compression so will take up more disk space and take longer to view over a slow connection. By contrast a low number means smaller, quicker to view, files but at the price of lower quality images. This setting applies to all images written except if the capture image has caused an alarm and the alarm file quality option is set at a higher value when that is used instead.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_JPEG_ALARM_FILE_QUALITY] => Array ([Id] => 15,[Name] => ZM_JPEG_ALARM_FILE_QUALITY,[Value] => 0,[Type] => integer,[DefaultValue] => 0,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Set the JPEG quality setting for the saved event files during an alarm (1-100),[Help] => This value is equivalent to the regular jpeg file quality setting above except that it only applies to images saved while in an alarm state and then only if this value is set to a higher quality setting than the ordinary file setting. If set to a lower value then it is ignored. Thus leaving it at the default of 0 effectively means to use the regular file quality setting for all saved images. This is to prevent acccidentally saving important images at a worse quality setting.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_JPEG_IMAGE_QUALITY] => Array ([Id] => 16,[Name] => ZM_JPEG_IMAGE_QUALITY,[Value] => 70,[Type] => integer,[DefaultValue] => 70,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Set the JPEG quality setting for the streamed 'live' images (1-100),[Help] => When viewing a 'live' stream for a monitor ZoneMinder will grab an image from the buffer and encode it into JPEG format before sending it. This option specifies what image quality should be used to encode these images. A higher number means better quality but less compression so will take longer to view over a slow connection. By contrast a low number means quicker to view images but at the price of lower quality images. This option does not apply when viewing events or still images as these are usually just read from disk and so will be encoded at the quality specified by the previous options.,[Category] => hidden,[Readonly] => 0,[Requires] => ),[ZM_JPEG_STREAM_QUALITY] => Array ([Id] => 17,[Name] => ZM_JPEG_STREAM_QUALITY,[Value] => 70,[Type] => integer,[DefaultValue] => 70,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Set the JPEG quality setting for the streamed 'live' images (1-100),[Help] => When viewing a 'live' stream for a monitor ZoneMinder will grab an image from the buffer and encode it into JPEG format before sending it. This option specifies what image quality should be used to encode these images. A higher number means better quality but less compression so will take longer to view over a slow connection. By contrast a low number means quicker to view images but at the price of lower quality images. This option does not apply when viewing events or still images as these are usually just read from disk and so will be encoded at the quality specified by the previous options.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_MPEG_TIMED_FRAMES] => Array ([Id] => 18,[Name] => ZM_MPEG_TIMED_FRAMES,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Tag video frames with a timestamp for more realistic streaming,[Help] => When using streamed MPEG based video, either for live monitor streams or events, ZoneMinder can send the streams in two ways. If this option is selected then the timestamp for each frame, taken from it's capture time, is included in the stream. This means that where the frame rate varies, for instance around an alarm, the stream will still maintain it's 'real' timing. If this option is not selected then an approximate frame rate is calculated and that is used to schedule frames instead. This option should be selected unless you encounter problems with your preferred streaming method.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_MPEG_LIVE_FORMAT] => Array ([Id] => 19,[Name] => ZM_MPEG_LIVE_FORMAT,[Value] => swf,[Type] => string,[DefaultValue] => swf,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => What format 'live' video streams are played in,[Help] => When using MPEG mode ZoneMinder can output live video. However what formats are handled by the browser varies greatly between machines. This option allows you to specify a video format using a file extension format, so you would just enter the extension of the file type you would like and the rest is determined from that. The default of 'asf' works well under Windows with Windows Media Player but I'm currently not sure what, if anything, works on a Linux platform. If you find out please let me know! If this option is left blank then live streams will revert to being in motion jpeg format,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_MPEG_REPLAY_FORMAT] => Array ([Id] => 20,[Name] => ZM_MPEG_REPLAY_FORMAT,[Value] => swf,[Type] => string,[DefaultValue] => swf,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => What format 'replay' video streams are played in,[Help] => When using MPEG mode ZoneMinder can replay events in encoded video format. However what formats are handled by the browser varies greatly between machines. This option allows you to specify a video format using a file extension format, so you would just enter the extension of the file type you would like and the rest is determined from that. The default of 'asf' works well under Windows with Windows Media Player and 'mpg', or 'avi' etc should work under Linux. If you know any more then please let me know! If this option is left blank then live streams will revert to being in motion jpeg format,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_RAND_STREAM] => Array ([Id] => 21,[Name] => ZM_RAND_STREAM,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Add a random string to prevent caching of streams,[Help] => Some browsers can cache the streams used by ZoneMinder. In order to prevent his a harmless random string can be appended to the url to make each invocation of the stream appear unique.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_OPT_CAMBOZOLA] => Array ([Id] => 22,[Name] => ZM_OPT_CAMBOZOLA,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Is the (optional) cambozola java streaming client installed,[Help] => Cambozola is a handy low fat cheese flavoured Java applet that ZoneMinder uses to view image streams on browsers such as Internet Explorer that don't natively support this format. If you use this browser it is highly recommended to install this from http://www.charliemouse.com/code/cambozola/ however if it is not installed still images at a lower refresh rate can still be viewed.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_PATH_CAMBOZOLA] => Array ([Id] => 23,[Name] => ZM_PATHCAMBOZOLA,[Value] => cambozola.jar,[Type] => string,[DefaultValue] => cambozola.jar,[Hint] => relative/path/to/somewhere,[Pattern] => (?^:^((?:[^/].)?)/?$),[Format] => $1 ,[Prompt] => Web path to (optional) cambozola java streaming client,[Help] => Cambozola is a handy low fat cheese flavoured Java applet that ZoneMinder uses to view image streams on browsers such as Internet Explorer that don't natively support this format. If you use this browser it is highly recommended to install this from http://www.charliemouse.com/code/cambozola/ however if it is not installed still images at a lower refresh rate can still be viewed. Leave this as 'cambozola.jar' if cambozola is installed in the same directory as the ZoneMinder web client files.,[Category] => images,[Readonly] => 0,[Requires] => ZM_OPT_CAMBOZOLA=1),[ZM_RELOAD_CAMBOZOLA] => Array ([Id] => 24,[Name] => ZM_RELOAD_CAMBOZOLA,[Value] => 0,[Type] => integer,[DefaultValue] => 0,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => After how many seconds should Cambozola be reloaded in live view,[Help] => Cambozola allows for the viewing of streaming MJPEG however it caches the entire stream into cache space on the computer, setting this to a number > 0 will cause it to automatically reload after that many seconds to avoid filling up a hard drive.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_TIMESTAMP_ON_CAPTURE] => Array ([Id] => 25,[Name] => ZM_TIMESTAMP_ON_CAPTURE,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Timestamp images as soon as they are captured,[Help] => ZoneMinder can add a timestamp to images in two ways. The default method, when this option is set, is that each image is timestamped immediately when captured and so the image held in memory is marked right away. The second method does not timestamp the images until they are either saved as part of an event or accessed over the web. The timestamp used in both methods will contain the same time as this is preserved along with the image. The first method ensures that an image is timestamped regardless of any other circumstances but will result in all images being timestamped even those never saved or viewed. The second method necessitates that saved images are copied before being saved otherwise two timestamps perhaps at different scales may be applied. This has the (perhaps) desirable side effect that the timestamp is always applied at the same resolution so an image that has scaling applied will still have a legible and correctly scaled timestamp.,[Category] => config,[Readonly] => 0,[Requires] => ),[ZM_CPU_EXTENSIONS] => Array ([Id] => 26,[Name] => ZM_CPU_EXTENSIONS,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Use advanced CPU extensions to increase performance,[Help] => When advanced processor extensions such as SSE2 or SSSE3 are available, ZoneMinder can use them, which should increase performance and reduce system load. Enabling this option on processors that do not support the advanced processors extensions used by ZoneMinder is harmless and will have no effect.,[Category] => config,[Readonly] => 0,[Requires] => ),[ZM_FAST_IMAGE_BLENDS] => Array ([Id] => 27,[Name] => ZM_FAST_IMAGE_BLENDS,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Use a fast algorithm to blend the reference image,[Help] => To detect alarms ZoneMinder needs to blend the captured image with the stored reference image to update it for comparison with the next image. The reference blend percentage specified for the monitor controls how much the new image affects the reference image. There are two methods that are available for this. If this option is set then fast calculation which does not use any multiplication or division is used. This calculation is extremely fast, however it limits the possible blend percentages to 50%, 25%, 12.5%, 6.25%, 3.25% and 1.5%. Any other blend percentage will be rounded to the nearest possible one. The alternative is to switch this option off and use standard blending instead, which is slower.,[Category] => config,[Readonly] => 0,[Requires] => ),[ZM_OPT_ADAPTIVE_SKIP] => Array ([Id] => 28,[Name] => ZM_OPT_ADAPTIVE_SKIP,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Should frame analysis try and be efficient in skipping frames,[Help] => In previous versions of ZoneMinder the analysis daemon would attempt to keep up with the capture daemon by processing the last captured frame on each pass. This would sometimes have the undesirable side-effect of missing a chunk of the initial activity that caused the alarm because the pre-alarm frames would all have to be written to disk and the database before processing the next frame, leading to some delay between the first and second event frames. Setting this option enables a newer adaptive algorithm where the analysis daemon attempts to process as many captured frames as possible, only skipping frames when in danger of the capture daemon overwriting yet to be processed frames. This skip is variable depending on the size of the ring buffer and the amount of space left in it. Enabling this option will give you much better coverage of the beginning of alarms whilst biasing out any skipped frames towards the middle or end of the event. However you should be aware that this will have the effect of making the analysis daemon run somewhat behind the capture daemon during events and for particularly fast rates of capture it is possible for the adaptive algorithm to be overwhelmed and not have time to react to a rapid build up of pending frames and thus for a buffer overrun condition to occur.,[Category] => config,[Readonly] => 0,[Requires] => ),[ZM_MAX_SUSPEND_TIME] => Array ([Id] => 29,[Name] => ZM_MAX_SUSPEND_TIME,[Value] => 30,[Type] => integer,[DefaultValue] => 30,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Maximum time that a monitor may have motion detection suspended,[Help] => ZoneMinder allows monitors to have motion detection to be suspended, for instance while panning a camera. Ordinarily this relies on the operator resuming motion detection afterwards as failure to do so can leave a monitor in a permanently suspended state. This setting allows you to set a maximum time which a camera may be suspended for before it automatically resumes motion detection. This time can be extended by subsequent suspend indications after the first so continuous camera movement will also occur while the monitor is suspended.,[Category] => config,[Readonly] => 0,[Requires] => ),[ZM_OPT_REMOTE_CAMERAS] => Array ([Id] => 30,[Name] => ZM_OPT_REMOTE_CAMERAS,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Are you going to use remote/networked cameras,[Help] => ZoneMinder can work with both local cameras, ie. those attached physically to your computer and remote or network cameras. If you will be using networked cameras select this option.,[Category] => hidden,[Readonly] => 0,[Requires] => ),[ZM_NETCAM_REGEXPS] => Array ([Id] => 31,[Name] => ZM_NETCAM_REGEXPS,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Use regular expression matching with network cameras,[Help] => Traditionally ZoneMinder has used complex regular regular expressions to handle the multitude of formats that network cameras produce. In versions from 1.21.1 the default is to use a simpler and faster built in pattern matching methodology. This works well with most networks cameras but if you have problems you can try the older, but more flexible, regular expression based method by selecting this option. Note, to use this method you must have libpcre installed on your system.,[Category] => hidden,[Readonly] => 0,[Requires] => ZM_OPT_REMOTE_CAMERAS=1),[ZM_HTTP_VERSION] => Array ([Id] => 32,[Name] => ZM_HTTP_VERSION,[Value] => 1.1,[Type] => string,[DefaultValue] => 1.1,[Hint] => 1.1|1.0,[Pattern] => (?^:^(1.[01])$),[Format] => $1?$1:"" ,[Prompt] => The version of HTTP that ZoneMinder will use to connect,[Help] => ZoneMinder can communicate with network cameras using either of the HTTP/1.1 or HTTP/1.0 standard. A server will normally fall back to the version it supports with no problem so this should usually by left at the default. However it can be changed to HTTP/1.0 if necessary to resolve particular issues.,[Category] => network,[Readonly] => 0,[Requires] => ),[ZM_HTTP_UA] => Array ([Id] => 33,[Name] => ZM_HTTP_UA,[Value] => ZoneMinder,[Type] => string,[DefaultValue] => ZoneMinder,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => The user agent that ZoneMinder uses to identify itself,[Help] => When ZoneMinder communicates with remote cameras it will identify itself using this string and it's version number. This is normally sufficient, however if a particular cameras expects only to communicate with certain browsers then this can be changed to a different string identifying ZoneMinder as Internet Explorer or Netscape etc.,[Category] => network,[Readonly] => 0,[Requires] => ),[ZM_HTTP_TIMEOUT] => Array ([Id] => 34,[Name] => ZM_HTTP_TIMEOUT,[Value] => 2500,[Type] => integer,[DefaultValue] => 2500,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => How long ZoneMinder waits before giving up on images (milliseconds),[Help] => When retrieving remote images ZoneMinder will wait for this length of time before deciding that an image is not going to arrive and taking steps to retry. This timeout is in milliseconds (1000 per second) and will apply to each part of an image if it is not sent in one whole chunk.,[Category] => network,[Readonly] => 0,[Requires] => ),[ZM_MIN_RTP_PORT] => Array ([Id] => 35,[Name] => ZM_MIN_RTP_PORT,[Value] => 40200,[Type] => integer,[DefaultValue] => 40200,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Minimum port that ZoneMinder will listen for RTP traffic on,[Help] => When ZoneMinder communicates with MPEG4 capable cameras using RTP with the unicast method it must open ports for the camera to connect back to for control and streaming purposes. This setting specifies the minimum port number that ZoneMinder will use. Ordinarily two adjacent ports are used for each camera, one for control packets and one for data packets. This port should be set to an even number, you may also need to open up a hole in your firewall to allow cameras to connect back if you wish to use unicasting.,[Category] => network,[Readonly] => 0,[Requires] => ),[ZM_MAX_RTP_PORT] => Array ([Id] => 36,[Name] => ZM_MAX_RTP_PORT,[Value] => 40499,[Type] => integer,[DefaultValue] => 40499,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Maximum port that ZoneMinder will listen for RTP traffic on,[Help] => When ZoneMinder communicates with MPEG4 capable cameras using RTP with the unicast method it must open ports for the camera to connect back to for control and streaming purposes. This setting specifies the maximum port number that ZoneMinder will use. Ordinarily two adjacent ports are used for each camera, one for control packets and one for data packets. This port should be set to an even number, you may also need to open up a hole in your firewall to allow cameras to connect back if you wish to use unicasting. You should also ensure that you have opened up at least two ports for each monitor that will be connecting to unicasting network cameras.,[Category] => network,[Readonly] => 0,[Requires] => ),[ZM_OPT_FFMPEG] => Array ([Id] => 37,[Name] => ZM_OPT_FFMPEG,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Is the ffmpeg video encoder/decoder installed,[Help] => ZoneMinder can optionally encode a series of video images into an MPEG encoded movie file for viewing, downloading or storage. This option allows you to specify whether you have the ffmpeg tools installed. Note that creating MPEG files can be fairly CPU and disk intensive and is not a required option as events can still be reviewed as video streams without it.,[Category] => images,[Readonly] => 0,[Requires] => ),[ZM_PATH_FFMPEG] => Array ([Id] => 38,[Name] => ZM_PATHFFMPEG,[Value] => /usr/bin/ffmpeg,[Type] => string,[DefaultValue] => /usr/bin/ffmpeg,[Hint] => /absolute/path/to/somewhere,[Pattern] => (?^:^((?:/[^/])+?)/?$),[Format] => $1 ,[Prompt] => Path to (optional) ffmpeg mpeg encoder,[Help] => This path should point to where ffmpeg has been installed.,[Category] => images,[Readonly] => 0,[Requires] => ZM_OPT_FFMPEG=1),[ZM_FFMPEG_INPUT_OPTIONS] => Array ([Id] => 39,[Name] => ZM_FFMPEG_INPUT_OPTIONS,[Value] => ,[Type] => string,[DefaultValue] => ,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => Additional input options to ffmpeg,[Help] => Ffmpeg can take many options on the command line to control the quality of video produced. This option allows you to specify your own set that apply to the input to ffmpeg (options that are given before the -i option). Check the ffmpeg documentation for a full list of options which may be used here.,[Category] => images,[Readonly] => 0,[Requires] => ZM_OPT_FFMPEG=1),[ZM_FFMPEG_OUTPUT_OPTIONS] => Array ([Id] => 40,[Name] => ZM_FFMPEG_OUTPUT_OPTIONS,[Value] => -r 25,[Type] => string,[DefaultValue] => -r 25,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => Additional output options to ffmpeg,[Help] => Ffmpeg can take many options on the command line to control the quality of video produced. This option allows you to specify your own set that apply to the output from ffmpeg (options that are given after the -i option). Check the ffmpeg documentation for a full list of options which may be used here. The most common one will often be to force an output frame rate supported by the video encoder.,[Category] => images,[Readonly] => 0,[Requires] => ZM_OPT_FFMPEG=1),[ZM_FFMPEG_FORMATS] => Array ([Id] => 41,[Name] => ZM_FFMPEGFORMATS,[Value] => mpg mpeg wmv asf avi mov swf 3gp,[Type] => string,[DefaultValue] => mpg mpeg wmv asf avi* mov swf 3gp,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => Formats to allow for ffmpeg video generation,[Help] => Ffmpeg can generate video in many different formats. This option allows you to list the ones you want to be able to select. As new formats are supported by ffmpeg you can add them here and be able to use them immediately. Adding a '_' after a format indicates that this will be the default format used for web video, adding '' defines the default format for phone video.,[Category] => images,[Readonly] => 0,[Requires] => ZM_OPT_FFMPEG=1),[ZM_LOG_LEVEL_SYSLOG] => Array ([Id] => 42,[Name] => ZM_LOG_LEVEL_SYSLOG,[Value] => 0,[Type] => integer,[DefaultValue] => 0,[Hint] => None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Save logging output to the system log,[Help] => ZoneMinder logging is now more more integrated between components and allows you to specify the destination for logging output and the individual levels for each. This option lets you control the level of logging output that goes to the system log. ZoneMinder binaries have always logged to the system log but now scripts and web logging is also included. To preserve the previous behaviour you should ensure this value is set to Info or Warning. This option controls the maximum level of logging that will be written, so Info includes Warnings and Errors etc. To disable entirely, set this option to None. You should use caution when setting this option to Debug as it can affect severely affect system performance. If you want debug you will also need to set a level and component below,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_LEVEL_FILE] => Array ([Id] => 43,[Name] => ZM_LOG_LEVEL_FILE,[Value] => -5,[Type] => integer,[DefaultValue] => -5,[Hint] => None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Save logging output to component files,[Help] => ZoneMinder logging is now more more integrated between components and allows you to specify the destination for logging output and the individual levels for each. This option lets you control the level of logging output that goes to individual log files written by specific components. This is how logging worked previously and although useful for tracking down issues in specific components it also resulted in many disparate log files. To preserve this behaviour you should ensure this value is set to Info or Warning. This option controls the maximum level of logging that will be written, so Info includes Warnings and Errors etc. To disable entirely, set this option to None. You should use caution when setting this option to Debug as it can affect severely affect system performance though file output has less impact than the other options. If you want debug you will also need to set a level and component below,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_LEVEL_WEBLOG] => Array ([Id] => 44,[Name] => ZM_LOG_LEVEL_WEBLOG,[Value] => -5,[Type] => integer,[DefaultValue] => -5,[Hint] => None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Save logging output to the weblog,[Help] => ZoneMinder logging is now more more integrated between components and allows you to specify the destination for logging output and the individual levels for each. This option lets you control the level of logging output from the web interface that goes to the httpd error log. Note that only web logging from PHP and JavaScript files is included and so this option is really only useful for investigating specific issues with those components. This option controls the maximum level of logging that will be written, so Info includes Warnings and Errors etc. To disable entirely, set this option to None. You should use caution when setting this option to Debug as it can affect severely affect system performance. If you want debug you will also need to set a level and component below,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_LEVEL_DATABASE] => Array ([Id] => 45,[Name] => ZM_LOG_LEVEL_DATABASE,[Value] => 0,[Type] => integer,[DefaultValue] => 0,[Hint] => None=-5|Panic=-4|Fatal=-3|Error=-2|Warning=-1|Info=0|Debug=1,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Save logging output to the database,[Help] => ZoneMinder logging is now more more integrated between components and allows you to specify the destination for logging output and the individual levels for each. This option lets you control the level of logging output that is written to the database. This is a new option which can make viewing logging output easier and more intuitive and also makes it easier to get an overall impression of how the system is performing. If you have a large or very busy system then it is possible that use of this option may slow your system down if the table becomes very large. Ensure you use the LOG_DATABASE_LIMIT option to keep the table to a manageable size. This option controls the maximum level of logging that will be written, so Info includes Warnings and Errors etc. To disable entirely, set this option to None. You should use caution when setting this option to Debug as it can affect severely affect system performance. If you want debug you will also need to set a level and component below,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_DATABASE_LIMIT] => Array ([Id] => 46,[Name] => ZM_LOG_DATABASE_LIMIT,[Value] => 7 day,[Type] => string,[DefaultValue] => 7 day,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => Maximum number of log entries to retain,[Help] => If you are using database logging then it is possible to quickly build up a large number of entries in the Logs table. This option allows you to specify how many of these entries are kept. If you set this option to a number greater than zero then that number is used to determine the maximum number of rows, less than or equal to zero indicates no limit and is not recommended. You can also set this value to time values such as ' day' which will limit the log entries to those newer than that time. You can specify 'hour', 'day', 'week', 'month' and 'year', note that the values should be singular (no 's' at the end). The Logs table is pruned periodically so it is possible for more than the expected number of rows to be present briefly in the meantime.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_DEBUG] => Array ([Id] => 47,[Name] => ZM_LOG_DEBUG,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Switch debugging on,[Help] => ZoneMinder components usually support debug logging available to help with diagnosing problems. Binary components have several levels of debug whereas more other components have only one. Normally this is disabled to minimise performance penalties and avoid filling logs too quickly. This option lets you switch on other options that allow you to configure additional debug information to be output. Components will pick up this instruction when they are restarted.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_DEBUG_TARGET] => Array ([Id] => 48,[Name] => ZM_LOG_DEBUGTARGET,[Value] => ,[Type] => string,[DefaultValue] => ,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => What components should have extra debug enabled,[Help] => There are three scopes of debug available. Leaving this option blank means that all components will use extra debug (not recommended). Setting this option to '', e.g. _zmc, will limit extra debug to that component only. Setting this option to '', e.g. '_zmc_m1' will limit extra debug to that instance of the component only. This is ordinarily what you probably want to do. To debug scripts use their names without the .pl extension, e.g. '_zmvideo' and to debug issues with the web interface use '_web'. You can specify multiple targets by separating them with '|' characters.,[Category] => logging,[Readonly] => 0,[Requires] => ZM_LOG_DEBUG=1),[ZM_LOG_DEBUG_LEVEL] => Array ([Id] => 49,[Name] => ZM_LOG_DEBUG_LEVEL,[Value] => 1,[Type] => integer,[DefaultValue] => 1,[Hint] => 1|2|3|4|5|6|7|8|9,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => What level of extra debug should be enabled,[Help] => There are 9 levels of debug available, with higher numbers being more debug and level 0 being no debug. However not all levels are used by all components. Also if there is debug at a high level it is usually likely to be output at such a volume that it may obstruct normal operation. For this reason you should set the level carefully and cautiously until the degree of debug you wish to see is present. Scripts and the web interface only have one level so this is an on/off type option for them.,[Category] => logging,[Readonly] => 0,[Requires] => ZM_LOG_DEBUG=1),[ZM_LOG_DEBUG_FILE] => Array ([Id] => 50,[Name] => ZM_LOG_DEBUG_FILE,[Value] => /var/log/zm/zm_debug.log+,[Type] => string,[DefaultValue] => /var/log/zm/zm_debug.log+,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => Where extra debug is output to,[Help] => This option allows you to specify a different target for debug output. All components have a default log file which will norally be in /tmp or /var/log and this is where debug will be written to if this value is empty. Adding a path here will temporarily redirect debug, and other logging output, to this file. This option is a simple filename and you are debugging several components then they will all try and write to the same file with undesirable consequences. Appending a '+' to the filename will cause the file to be created with a '.' suffix containing your process id. In this way debug from each run of a component is kept separate. This is the recommended setting as it will also prevent subsequent runs from overwriting the same log. You should ensure that permissions are set up to allow writing to the file and directory specified here.,[Category] => logging,[Readonly] => 0,[Requires] => ZM_LOG_DEBUG=1),[ZM_LOG_CHECK_PERIOD] => Array ([Id] => 51,[Name] => ZM_LOG_CHECK_PERIOD,[Value] => 900,[Type] => integer,[DefaultValue] => 900,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Time period used when calculating overall system health,[Help] => When ZoneMinder is logging events to the database it can retrospectively examine the number of warnings and errors that have occurred to calculate an overall state of system health. This option allows you to indicate what period of historical events are used in this calculation. This value is expressed in seconds and is ignored if LOG_LEVEL_DATABASE is set to None.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_ALERT_WAR_COUNT] => Array ([Id] => 52,[Name] => ZM_LOG_ALERT_WAR_COUNT,[Value] => 1,[Type] => integer,[DefaultValue] => 1,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Number of warnings indicating system alert state,[Help] => When ZoneMinder is logging events to the database it can retrospectively examine the number of warnings and errors that have occurred to calculate an overall state of system health. This option allows you to specify how many warnings must have occurred within the defined time period to generate an overall system alert state. A value of zero means warnings are not considered. This value is ignored if LOG_LEVEL_DATABASE is set to None.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_ALERT_ERR_COUNT] => Array ([Id] => 53,[Name] => ZM_LOG_ALERT_ERR_COUNT,[Value] => 1,[Type] => integer,[DefaultValue] => 1,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Number of errors indicating system alert state,[Help] => When ZoneMinder is logging events to the database it can retrospectively examine the number of warnings and errors that have occurred to calculate an overall state of system health. This option allows you to specify how many errors must have occurred within the defined time period to generate an overall system alert state. A value of zero means errors are not considered. This value is ignored if LOG_LEVEL_DATABASE is set to None.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_ALERT_FAT_COUNT] => Array ([Id] => 54,[Name] => ZM_LOG_ALERT_FAT_COUNT,[Value] => 0,[Type] => integer,[DefaultValue] => 0,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Number of fatal error indicating system alert state,[Help] => When ZoneMinder is logging events to the database it can retrospectively examine the number of warnings and errors that have occurred to calculate an overall state of system health. This option allows you to specify how many fatal errors (including panics) must have occurred within the defined time period to generate an overall system alert state. A value of zero means fatal errors are not considered. This value is ignored if LOG_LEVEL_DATABASE is set to None.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_ALARM_WAR_COUNT] => Array ([Id] => 55,[Name] => ZM_LOG_ALARM_WAR_COUNT,[Value] => 100,[Type] => integer,[DefaultValue] => 100,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Number of warnings indicating system alarm state,[Help] => When ZoneMinder is logging events to the database it can retrospectively examine the number of warnings and errors that have occurred to calculate an overall state of system health. This option allows you to specify how many warnings must have occurred within the defined time period to generate an overall system alarm state. A value of zero means warnings are not considered. This value is ignored if LOG_LEVEL_DATABASE is set to None.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_ALARM_ERR_COUNT] => Array ([Id] => 56,[Name] => ZM_LOG_ALARM_ERR_COUNT,[Value] => 10,[Type] => integer,[DefaultValue] => 10,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Number of errors indicating system alarm state,[Help] => When ZoneMinder is logging events to the database it can retrospectively examine the number of warnings and errors that have occurred to calculate an overall state of system health. This option allows you to specify how many errors must have occurred within the defined time period to generate an overall system alarm state. A value of zero means errors are not considered. This value is ignored if LOG_LEVEL_DATABASE is set to None.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_LOG_ALARM_FAT_COUNT] => Array ([Id] => 57,[Name] => ZM_LOG_ALARM_FAT_COUNT,[Value] => 1,[Type] => integer,[DefaultValue] => 1,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => Number of fatal error indicating system alarm state,[Help] => When ZoneMinder is logging events to the database it can retrospectively examine the number of warnings and errors that have occurred to calculate an overall state of system health. This option allows you to specify how many fatal errors (including panics) must have occurred within the defined time period to generate an overall system alarm state. A value of zero means fatal errors are not considered. This value is ignored if LOG_LEVEL_DATABASE is set to None.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_RECORD_EVENT_STATS] => Array ([Id] => 58,[Name] => ZM_RECORD_EVENT_STATS,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Record event statistical information, switch off if too slow,[Help] => This version of ZoneMinder records detailed information about events in the Stats table. This can help in profiling what the optimum settings are for Zones though this is tricky at present. However in future releases this will be done more easily and intuitively, especially with a large sample of events. The default option of 'yes' allows this information to be collected now in readiness for this but if you are concerned about performance you can switch this off in which case no Stats information will be saved.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_RECORD_DIAG_IMAGES] => Array ([Id] => 59,[Name] => ZM_RECORD_DIAG_IMAGES,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Record intermediate alarm diagnostic images, can be very slow,[Help] => In addition to recording event statistics you can also record the intermediate diagnostic images that display the results of the various checks and processing that occur when trying to determine if an alarm event has taken place. There are several of these images generated for each frame and zone for each alarm or alert frame so this can have a massive impact on performance. Only switch this setting on for debug or analysis purposes and remember to switch it off again once no longer required.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_DUMP_CORES] => Array ([Id] => 60,[Name] => ZM_DUMP_CORES,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Create core files on unexpected process failure.,[Help] => When an unrecoverable error occurs in a ZoneMinder binary process is has traditionally been trapped and the details written to logs to aid in remote analysis. However in some cases it is easier to diagnose the error if a core file, which is a memory dump of the process at the time of the error, is created. This can be interactively analysed in the debugger and may reveal more or better information than that available from the logs. This option is recommended for advanced users only otherwise leave at the default. Note using this option to trigger core files will mean that there will be no indication in the binary logs that a process has died, they will just stop, however the zmdc log will still contain an entry. Also note that you may have to explicitly enable core file creation on your system via the 'ulimit -c' command or other means otherwise no file will be created regardless of the value of this option.,[Category] => logging,[Readonly] => 0,[Requires] => ),[ZM_PATH_MAP] => Array ([Id] => 61,[Name] => ZM_PATHMAP,[Value] => /dev/shm,[Type] => string,[DefaultValue] => /dev/shm,[Hint] => /absolute/path/to/somewhere,[Pattern] => (?^:^((?:/[^/])+?)/?$),[Format] => $1 ,[Prompt] => Path to the mapped memory files that that ZoneMinder can use,[Help] => ZoneMinder has historically used IPC shared memory for shared data between processes. This has it's advantages and limitations. This version of ZoneMinder can use an alternate method, mapped memory, instead with can be enabled with the --enable--mmap directive to configure. This requires less system configuration and is generally more flexible. However it requires each shared data segment to map onto a filesystem file. This option indicates where those mapped files go. You should ensure that this location has sufficient space for these files and for the best performance it should be a tmpfs file system or ramdisk otherwise disk access may render this method slower than the regular shared memory one.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_PATH_SOCKS] => Array ([Id] => 62,[Name] => ZM_PATHSOCKS,[Value] => /run/zoneminder,[Type] => string,[DefaultValue] => /run/zoneminder,[Hint] => /absolute/path/to/somewhere,[Pattern] => (?^:^((?:/[^/])+?)/?$),[Format] => $1 ,[Prompt] => Path to the various Unix domain socket files that ZoneMinder uses,[Help] => ZoneMinder generally uses Unix domain sockets where possible. This reduces the need for port assignments and prevents external applications from possibly compromising the daemons. However each Unix socket requires a .sock file to be created. This option indicates where those socket files go.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_PATH_LOGS] => Array ([Id] => 63,[Name] => ZM_PATHLOGS,[Value] => /var/log/zm,[Type] => string,[DefaultValue] => /var/log/zm,[Hint] => /absolute/path/to/somewhere,[Pattern] => (?^:^((?:/[^/])+?)/?$),[Format] => $1 ,[Prompt] => Path to the various logs that the ZoneMinder daemons generate,[Help] => There are various daemons that are used by ZoneMinder to perform various tasks. Most generate helpful log files and this is where they go. They can be deleted if not required for debugging.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_PATH_SWAP] => Array ([Id] => 64,[Name] => ZM_PATHSWAP,[Value] => /run/zoneminder,[Type] => string,[DefaultValue] => /run/zoneminder,[Hint] => /absolute/path/to/somewhere,[Pattern] => (?^:^((?:/[^/])+?)/?$),[Format] => $1 ,[Prompt] => Path to location for temporary swap images used in streaming,[Help] => Buffered playback requires temporary swap images to be stored for each instance of the streaming daemons. This option determines where these images will be stored. The images will actually be stored in sub directories beneath this location and will be automatically cleaned up after a period of time.,[Category] => paths,[Readonly] => 0,[Requires] => ),[ZM_WEB_TITLE_PREFIX] => Array ([Id] => 65,[Name] => ZM_WEB_TITLE_PREFIX,[Value] => ZM,[Type] => string,[DefaultValue] => ZM,[Hint] => string,[Pattern] => (?^:^(.+)$),[Format] => $1 ,[Prompt] => The title prefix displayed on each window,[Help] => If you have more than one installation of ZoneMinder it can be helpful to display different titles for each one. Changing this option allows you to customise the window titles to include further information to aid identification.,[Category] => web,[Readonly] => 0,[Requires] => ),[ZM_WEB_RESIZE_CONSOLE] => Array ([Id] => 66,[Name] => ZM_WEB_RESIZE_CONSOLE,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Should the console window resize itself to fit,[Help] => Traditionally the main ZoneMinder web console window has resized itself to shrink to a size small enough to list only the monitors that are actually present. This is intended to make the window more unobtrusize but may not be to everyones tastes, especially if opened in a tab in browsers which support this kind if layout. Switch this option off to have the console window size left to the users preference,[Category] => web,[Readonly] => 0,[Requires] => ),[ZM_WEB_POPUP_ON_ALARM] => Array ([Id] => 67,[Name] => ZM_WEB_POPUP_ON_ALARM,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Should the monitor window jump to the top if an alarm occurs,[Help] => When viewing a live monitor stream you can specify whether you want the window to pop to the front if an alarm occurs when the window is minimised or behind another window. This is most useful if your monitors are over doors for example when they can pop up if someone comes to the doorway.,[Category] => web,[Readonly] => 0,[Requires] => ),[ZM_OPT_X10] => Array ([Id] => 68,[Name] => ZM_OPT_X10,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Support interfacing with X10 devices,[Help] => If you have an X10 Home Automation setup in your home you can use ZoneMinder to initiate or react to X10 signals if your computer has the appropriate interface controller. This option indicates whether X10 options will be available in the browser client.,[Category] => x10,[Readonly] => 0,[Requires] => ),[ZM_X10_DEVICE] => Array ([Id] => 69,[Name] => ZM_X10DEVICE,[Value] => /dev/ttyS0,[Type] => string,[DefaultValue] => /dev/ttyS0,[Hint] => /absolute/path/to/somewhere,[Pattern] => (?^:^((?:/[^/])+?)/?$),[Format] => $1 ,[Prompt] => What device is your X10 controller connected on,[Help] => If you have an X10 controller device (e.g. XM10U) connected to your computer this option details which port it is conected on, the default of /dev/ttyS0 maps to serial or com port 1.,[Category] => x10,[Readonly] => 0,[Requires] => ZM_OPT_X10=1),[ZM_X10_HOUSE_CODE] => Array ([Id] => 70,[Name] => ZM_X10_HOUSE_CODE,[Value] => A,[Type] => string,[DefaultValue] => A,[Hint] => A-P,[Pattern] => (?^i:^([A-P])),[Format] => uc($1) ,[Prompt] => What X10 house code should be used,[Help] => X10 devices are grouped together by identifying them as all belonging to one House Code. This option details what that is. It should be a single letter between A and P.,[Category] => x10,[Readonly] => 0,[Requires] => ZM_OPT_X10=1),[ZM_X10_DB_RELOAD_INTERVAL] => Array ([Id] => 71,[Name] => ZM_X10_DB_RELOAD_INTERVAL,[Value] => 60,[Type] => integer,[DefaultValue] => 60,[Hint] => integer,[Pattern] => (?^:^(d+)$),[Format] => $1 ,[Prompt] => How often (in seconds) the X10 daemon reloads the monitors from the database,[Help] => The zmx10 daemon periodically checks the database to find out what X10 events trigger, or result from, alarms. This option determines how frequently this check occurs, unless you change this area frequently this can be a fairly large value.,[Category] => x10,[Readonly] => 0,[Requires] => ZM_OPT_X10=1),[ZM_WEB_SOUND_ON_ALARM] => Array ([Id] => 72,[Name] => ZM_WEB_SOUND_ON_ALARM,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Should the monitor window play a sound if an alarm occurs,[Help] => When viewing a live monitor stream you can specify whether you want the window to play a sound to alert you if an alarm occurs.,[Category] => web,[Readonly] => 0,[Requires] => ),[ZM_WEB_ALARM_SOUND] => Array ([Id] => 73,[Name] => ZM_WEB_ALARMSOUND,[Value] => ,[Type] => string,[DefaultValue] => ,[Hint] => filename,[Pattern] => (?^:^([a-zA-Z0-9-.]+)$),[Format] => $1 ,[Prompt] => The sound to play on alarm, put this in the sounds directory,[Help] => You can specify a sound file to play if an alarm occurs whilst you are watching a live monitor stream. So long as your browser understands the format it does not need to be any particular type. This file should be placed in the sounds directory defined earlier.,[Category] => web,[Readonly] => 0,[Requires] => ZM_WEB_SOUND_ON_ALARM=1),[ZM_WEB_COMPACT_MONTAGE] => Array ([Id] => 74,[Name] => ZM_WEB_COMPACT_MONTAGE,[Value] => 0,[Type] => boolean,[DefaultValue] => no,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Compact the montage view by removing extra detail,[Help] => The montage view shows the output of all of your active monitors in one window. This include a small menu and status information for each one. This can increase the web traffic and make the window larger than may be desired. Setting this option on removes all this extraneous information and just displays the images.,[Category] => web,[Readonly] => 0,[Requires] => ),[ZM_OPT_FAST_DELETE] => Array ([Id] => 75,[Name] => ZM_OPT_FAST_DELETE,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Delete only event database records for speed,[Help] => Normally an event created as the result of an alarm consists of entries in one or more database tables plus the various files associated with it. When deleting events in the browser it can take a long time to remove all of this if your are trying to do a lot of events at once. It is recommended that you set this option which means that the browser client only deletes the key entries in the events table, which means the events will no longer appear in the listing, and leaves the zmaudit daemon to clear up the rest later.,[Category] => system,[Readonly] => 0,[Requires] => ),[ZM_STRICT_VIDEO_CONFIG] => Array ([Id] => 76,[Name] => ZM_STRICT_VIDEO_CONFIG,[Value] => 1,[Type] => boolean,[DefaultValue] => yes,[Hint] => yes|no,[Pattern] => (?^i:^([yn])),[Format] => ($1 =~ /^y/) ? "yes" : "no" ,[Prompt] => Allow errors in setting video config to be fatal,[Help] => With some video devices errors can be reported in setting the various video attributes when in fact the operation was successful. Switching this option off will still allow these errors to be reported but will not cause them to kill the video capture daemon. Note however that doing this will cause all errors to be ignored including those which are genuine and which may cause the video capture to not function correctly. Use this option with caution.,[Category] => config,[Readonly] => 0,[Requires] => ),[ZM_SIGNAL_CHECK_POINTS] => Array ([Id] => 77,[Name] => ZM_SIGNAL_CHECK_POINTS,[Value] => 10,[Type] => integer,[Default /usr/share/zoneminder/www/includes/logger.php 581 2014-11-07 18:00:32.098750 zmdc 21412 WAR Can't find process with command of 'zma -m 1' zmdc.pl 2014-11-07 18:00:32.095786 zmc_dvideo0 22362 INF Starting Capture /home/baz/rpmbuild/BUILD/ZoneMinder-1.28.0/src/zmc.cpp 195 2014-11-07 18:00:32.084882 zmc_dvideo0 22362 INF No direct match for the selected palette and target colorspace. Format conversion is required, performance penalty expected /home/baz/rpmbuild/BUILD/ZoneMinder-1.28.0/src/zm_local_camera.cpp 408 2014-11-07 18:00:32.080134 zmc_dvideo0 22362 INF Selected capture palette: YUV 4:2:2 (YUYV) (YUYV) /home/baz/rpmbuild/BUILD/ZoneMinder-1.28.0/src/zm_local_camera.cpp 348 2014-11-07 18:00:32.057850 zmdc 21412 INF 'zmc -d /dev/video0' starting at 14/11/07 18:00:32, pid = 22362 zmdc.pl 2014-11-07 18:00:32.057850 zmdc 22362 INF 'zmc -d /dev/video0' started at 14/11/07 18:00:32 zmdc.pl 2014-11-07 18:00:32.050210 zmdc 21412 INF Starting pending process, zmc -d /dev/video0 zmdc.pl 2014-11-07 18:00:32.041930 zmdc 21412 ERR 'zmc -d /dev/video0' exited abnormally, exit status 255 zmdc.pl 2014-11-07 18:00:32.032947 zmc_dvideo0 22354 INF No direct match for the selected palette and target colorspace. Format conversion is required, performance penalty expected /home/baz/rpmbuild/BUILD/ZoneMinder-1.28.0/src/zm_local_camera.cpp 408 2014-11-07 18:00:32.002519 zmc_dvideo0 22354 INF Selected capture palette: YUV 4:2:2 (YUYV) (YUYV) /home/baz/rpmbuild/BUILD/ZoneMinder-1.28.0/src/zm_local_camera.cpp 348 2014-11-07 18:00:31.818670 zmdc 21412 INF 'zmc -d /dev/video0' starting at 14/11/07 18:00:31, pid = 22354 zmdc.pl 2014-11-07 18:00:31.818670 zmdc 22354 INF 'zmc -d /dev/video0' started at 14/11/07 18:00:31 zmdc.pl 2014-11-07 18:00:31.739260 zmdc 21412 WAR Can't find process with command of 'zmc -d /dev/video0' zmdc.pl 2014-11-07 18:00:31.658470 zmdc 21412 WAR Can't find process with command of 'zma -m 1' zmdc.pl 2014-11-07 18:00:03.075520 zmwatch 21463 INF Watchdog pausing for 30 seconds zmwatch.pl
2014-11-07 18:00:03.067460 zmwatch 21463 INF Watchdog starting zmwatch.pl
2014-11-07 18:00:03.012820 zmaudit 21453 INF deleting zmaudit.pl
2014-11-07 18:00:03.005560 zmaudit 21453 INF Filesystem monitor link 'Monitor-1' does not point to valid monitor directory zmaudit.pl
2014-11-07 18:00:02.998470 zmaudit 21453 INF deleting zmaudit.pl
2014-11-07 18:00:02.988970 zmaudit 21453 INF Filesystem monitor '1' does not exist in database zmaudit.pl
2014-11-07 18:00:02.984580 zmdc 21412 INF 'zmwatch.pl' starting at 14/11/07 18:00:02, pid = 21463 zmdc.pl 2014-11-07 18:00:02.984580 zmdc 21463 INF 'zmwatch.pl' started at 14/11/07 18:00:02 zmdc.pl 2014-11-07 18:00:02.960460 zmfilter 21445 INF Scanning for events zmfilter.pl 2014-11-07 18:00:02.899840 zmdc 21453 INF 'zmaudit.pl -c' started at 14/11/07 18:00:02 zmdc.pl 2014-11-07 18:00:02.899820 zmdc 21412 INF 'zmaudit.pl -c' starting at 14/11/07 18:00:02, pid = 21453 zmdc.pl 2014-11-07 18:00:02.821700 zmdc 21412 INF 'zmfilter.pl' starting at 14/11/07 18:00:02, pid = 21445 zmdc.pl 2014-11-07 18:00:02.821670 zmdc 21445 INF 'zmfilter.pl' started at 14/11/07 18:00:02 zmdc.pl 2014-11-07 17:59:59.751520 zmdc 21412 INF Server starting at 14/11/07 17:59:59 zmdc.pl 2014-11-07 17:59:59.420100 zmpkg 21398 INF Command: start

knight-of-ni commented 10 years ago

Before "the big one" occurs, zoneminder complains:

2014-11-07 18:00:03.005560 zmaudit 21453 INF Filesystem monitor link 'Monitor-1' does not point to valid monitor directory zmaudit.pl
2014-11-07 18:00:02.998470 zmaudit 21453 INF deleting zmaudit.pl
2014-11-07 18:00:02.988970 zmaudit 21453 INF Filesystem monitor '1' does not exist in database zmaudit.pl

It doesn't look like the new monitor is being written properly to the database and/or disk. I'd double check file and dB permissions, user accounts, etc. Let's get the monitor created w/o any errors and then see if we still get "the big one".

barjac commented 10 years ago

I'm thinking that those errors were before the monitor was created, as now there are no more similar errors and monitoring and events are all working without problem. I will kill the db, recreate it and keep a time check on when I add the monitor.

barjac commented 10 years ago

Yes, those messages occur before any monitor is added:

2014-11-07 22:56:04.550140 zmwatch 3682 INF Watchdog pausing for 30 seconds zmwatch.pl
2014-11-07 22:56:04.507870 zmaudit 3672 INF deleting zmaudit.pl
2014-11-07 22:56:04.467410 zmwatch 3682 INF Watchdog starting zmwatch.pl
2014-11-07 22:56:04.457470 zmaudit 3672 INF Filesystem monitor link 'Monitor-1' does not point to valid monitor directory zmaudit.pl
2014-11-07 22:56:04.402200 zmaudit 3672 INF deleting zmaudit.pl
2014-11-07 22:56:04.335700 zmaudit 3672 INF Filesystem monitor '1' does not exist in database zmaudit.pl
2014-11-07 22:56:04.324980 zmdc 3682 INF 'zmwatch.pl' started at 14/11/07 22:56:04 zmdc.pl 2014-11-07 22:56:04.324980 zmdc 3627 INF 'zmwatch.pl' starting at 14/11/07 22:56:04, pid = 3682 zmdc.pl 2014-11-07 22:56:04.301400 zmfilter 3664 INF Scanning for events zmfilter.pl 2014-11-07 22:56:04.239690 zmdc 3672 INF 'zmaudit.pl -c' started at 14/11/07 22:56:04 zmdc.pl 2014-11-07 22:56:04.239690 zmdc 3627 INF 'zmaudit.pl -c' starting at 14/11/07 22:56:04, pid = 3672 zmdc.pl 2014-11-07 22:56:04.163000 zmdc 3664 INF 'zmfilter.pl' started at 14/11/07 22:56:04 zmdc.pl 2014-11-07 22:56:04.163000 zmdc 3627 INF 'zmfilter.pl' starting at 14/11/07 22:56:04, pid = 3664 zmdc.pl 2014-11-07 22:56:01.091490 zmdc 3627 INF Server starting at 14/11/07 22:56:01 zmdc.pl 2014-11-07 22:56:00.937450 zmpkg 3614 INF Command: start zmpkg.pl

barjac commented 10 years ago

Following on from the above log it looks OK adding the monitor, but the logzilla happens when clicking the link to view it:

2014-11-07 23:02:37.427311 zms 10006 WAR Shared data not initialised by capture daemon, some query functions may not be available or produce invalid results /home/baz/rpmbuild/BUILD/ZoneMinder-1.28.0/src/zm_monitor.cpp 424 2014-11-07 23:02:37.295038 web_js 3611 PNC Unknown error type: [8] Undefined index: file #0 Panic(Unknown error type: [8] Undefined index: file)####################.logzilla.############### 2014-11-07 23:02:23.666962 zmc_dvideo0 7875 INF Monitor-1: 1000 - Capturing at 7.94 fps /home/baz/rpmbuild/BUILD/ZoneMinder-1.28.0/src/zm_monitor.cpp 2899 2014-11-07 23:00:17.495417 zmc_dvideo0 7875 INF Starting Capture /home/baz/rpmbuild/BUILD/ZoneMinder-1.28.0/src/zmc.cpp 195 2014-11-07 23:00:17.484295 zmc_dvideo0 7875 INF No direct match for the selected palette and target colorspace. Format conversion is required, performance penalty expected /home/baz/rpmbuild/BUILD/ZoneMinder-1.28.0/src/zm_local_camera.cpp 408 2014-11-07 23:00:17.476804 zmc_dvideo0 7875 INF Selected capture palette: YUV 4:2:2 (YUYV) (YUYV) /home/baz/rpmbuild/BUILD/ZoneMinder-1.28.0/src/zm_local_camera.cpp 348 2014-11-07 23:00:17.449340 zmdc 7875 INF 'zmc -d /dev/video0' started at 14/11/07 23:00:17 zmdc.pl 2014-11-07 23:00:17.449000 zmdc 3627 INF 'zmc -d /dev/video0' starting at 14/11/07 23:00:17, pid = 7875 zmdc.pl 2014-11-07 23:00:17.441310 zmdc 3627 INF Starting pending process, zmc -d /dev/video0 zmdc.pl 2014-11-07 23:00:17.332870 zmdc 3627 ERR 'zmc -d /dev/video0' exited abnormally, exit status 255 zmdc.pl 2014-11-07 23:00:17.210320 zmdc 3627 WAR Can't find process with command of 'zma -m 1' zmdc.pl 2014-11-07 23:00:17.153814 zmc_dvideo0 7863 INF No direct match for the selected palette and target colorspace. Format conversion is required, performance penalty expected /home/baz/rpmbuild/BUILD/ZoneMinder-1.28.0/src/zm_local_camera.cpp 408 2014-11-07 23:00:17.147405 zmc_dvideo0 7863 INF Selected capture palette: YUV 4:2:2 (YUYV) (YUYV) /home/baz/rpmbuild/BUILD/ZoneMinder-1.28.0/src/zm_local_camera.cpp 348 2014-11-07 23:00:17.127910 zmdc 7863 INF 'zmc -d /dev/video0' started at 14/11/07 23:00:17 zmdc.pl 2014-11-07 23:00:17.127770 zmdc 3627 INF 'zmc -d /dev/video0' starting at 14/11/07 23:00:17, pid = 7863 zmdc.pl 2014-11-07 23:00:17.048740 zmdc 3627 WAR Can't find process with command of 'zmc -d /dev/video0' zmdc.pl 2014-11-07 23:00:16.924750 zmdc 3627 WAR Can't find process with command of 'zma -m 1' zmdc.pl

knight-of-ni commented 10 years ago

@connortechnology showed me a trick the other day I hadn't thought of to get more output.

Try starting the monitor directly from the command line and then paste the output: zmc -d /dev/video0 -and try this too- zmc -m 1

I'm wondering if the attempt to start the monitor isn't returning some funky character that is not getting escaped properly by the logger. Just guessing for the moment.

barjac commented 10 years ago

No output from either.

knight-of-ni commented 10 years ago

Guys, this one has me completely stumped.

connortechnology commented 10 years ago

So I kinda know what's going on. The problem is line 13 of log.php.. It is expecting _POST to have $_POST[file] defined, but it is not. So php barfs and goes to our error handler which isn't setup to handle error case E_NOTICE and so barfs large. So we need to do two things: handle E_NOTICE and figure out why $_POST[file] isn't set to something and handle that case

connortechnology commented 10 years ago

So this request is formed in js/logger.js and it looks like file should always be in $_POST even if empty... but it's not.

I just pushed to master a quick fix to handle empty $_POST[file] which should prevent the logzilla

kylejohnson commented 10 years ago

Commit ebe35c2135abd32be41cfea933170ad0723b3b2f