Motion - Motion Guide Alphabetical Option Reference Manual

Motion Guide - Alphabetical Option Reference Manual

%TMPL:INCLUDE{"edit"}% %TMPL:DEF{"tabs"}%%TMPL:END% %TMPL:INCLUDE{"view"}% %TMPL:DEF{"formtop"}%%TMPL:END% %TMPL:DEF{"formbottom"}%%TMPL:END% %TMPL:DEF{"content"}%

  • Type:
  • Range / Valid values:
  • Default:
  • Group:

%TEXT%
%TMPL:END% Areas are numbered like that:

      1    2    3
      4    5    6
      7    8    9

One or more areas can be specified with this option.

Example: You want to monitor if the center of motion occurrs in the lower third of the image - that is area 7, 8 and 9. Simply set 'area_detect' to '789' and 'on_area_detect' will be executed as soon as the center of motion was detected in area 7, 8 or 9. If you want to monitor area 2, 3, 5 and 6, set '2356'. Motion will try to adjust the brightness of the video device if the images captured are too dark or too light. This option will be most useful for video devices like web cams, which sometimes don't have such an option in hardware.

The auto_brightness feature will adjust the brightness of the device up or down until the value defined by the option brightness is reached (1 = dark, 255 = bright). If brightness is zero auto_brightness will try to adjust to the average brightness level 128.

You need to know if the camera supports auto brightness. Most cameras have auto everything. If your video device already does this for you this option might cause oscillations. If you do not know assume that it has and do not use the Motion auto brightness feature. At least not to start with. Value 0 means that Motion does not set the brightness value but leaves it unchanged.

If this setting is used in conjunction with the auto_brightness feature, then this setting is the average brightness level in the range 1 (dark) to 255 (bright) that the auto_brightness feature will try to achieve by adjusting the device brightness up and down.

By setting this to on, the control using http (browser) can only be accessed using login and password ( following the Basic Authentication defined in HTTP RFC ) The recommended value for most is "on" which means that you can navigate and control Motion with a normal browser. By setting this option to "off" the replies are in plain text which may be easier to parse for 3rd party programs that control Motion. By setting this to on, the control using http (browser) can only be accessed on the same machine on which Motion is running. This sets the TCP/IP port number to be used for control of motion using http (browser). Port numbers below 1024 normally requires that you have root privileges. Port 8080 is a fine choice of port to use for the purpose. Daemon mode is what you typically will use once you are done experimenting and have motion run permanently in the background on a server.

Wonder about the word and its spelling. Look here!

Motion can be compiled with MySQL, PostgreSQL or SQLite3 database support. When enabled Motion can be configured to add a record to a table in the database as specified by the sql_query. The query can contain the fields that are used and the value are given by using conversion specifiers for dynamic data like filename, time, number of detected pixels etc. Motion does not place any binary images in the database and it cannot remove old records.

Motion only adds records to the database when files are created. The database contains records of saved files which means to get a record in the database the feature that enables for example motion detection, timelapse, snapshots etc must be enabled. The sql_log options defines which types of files are logged in the database.

A way of tuning (by removing or enhancing) noise in the motion image. Options for the despeckle feature are any of 'e', 'E', 'd' or 'D'. This can be combined by a trailing 'l' (letter l) which enables the labeling feature. Default: Not Defined (Don't despeckle and label).

Wind blowing grass and trees around or poor light conditions can cause a lot of dots (or noise) to appear in the motion image (See the section on Tuning Motion). This feature removes (or enhances!) this noise and so improves the reliability of motion.

The 'e' option removes diamonds, 'E' removes squares and alternating eE will remove circles. Each e/E you add will shrink the noise by a pixel all the way around. So 'despeckle Ee' will remove circles of radius 2. However, this will also shrink the detection by 2 and will affect the threshold. So to remove noise and then restore the detected motion to its original size try 'despeckle EedD'.

After the despeckle feature is done you can let the labeling feature search for areas of connected pixels and "label" each area. The program will now trigger motion based on the number of changed pixels in the largest area. In other words, the largest labeled area has to be above the threshold to trigger a motion detected.

The value EedDl is a good starting point. The possible combinations are endless and it requires many experiments to find the best combination. Just remember that the labeling feature only works as intended if it runs after the despeckle feature. Ie. the letter 'l' must be the last letter and only one 'l'.

If you have very few problems with false detections leave this option either blank or at EedD which will remove most of the single pixel noise. A very detailed technical explanation of the despeckle part can be found at the webpage of the author of this feature Ian McConnell's Webcam: Motion Web Page This feature is not meant to be the normal mode of operation. Especially not if you have any of the picture or movie features enabled since it will keep on saving pictures on the disk and you will soon run out of disk space. So be careful with this command.

If your frame rate is 10 pictures per second motion will save 10 new picture pr second until the disk is full.

It does all the normal actions that are done when motion is detected. It saves pictures on the harddisk, execute external scripts, etc as fast as the frame rate of the camera. So it is probably a good idea to run with a low framerate when using this feature and to not use activate all the features that saves files on the disk.

The idea of this feature is that you can turn the feature on and off for a short period of time to test or to generate continuous movie films when needed. Recommended value is 60 seconds (Default). The value 0 is allowed (but not recommended) and disables events causing all Motion to be written to one single movie file and no pre_capture. You can force an event to end and a new to begin using the http control 'http://host:port/thread_number/action/makemovie'. Disabling events has bad side effects on noise_tune and smartmask. Both features can only work properly outside an event. When event_gap is set to 0, both features don't work properly anymore.

An event is defined as a series of motion images taken within a short timeframe. E.g. a person walking through the room is an event that may have caused 10 single jpg images to be stored. This option defines how long a pause between detected motions that is needed to be defined as a new event.

The event_gap timer starts after the last motion is detected and post_capture images have been saved and appended to open movie mpeg files.

Any motion detected before the event_gap timer times out resets the event_gap timer so it starts counting over again.

Detailed Description

The option 'event_gap' is important. It defines how long a period of no motion detected it takes before we say an event is over. An event is defined as a series of motion images taken within a short timeframe. E.g. a person walking through the room is an event that may have caused 10 single jpg images to be stored. Motion detected includes post_captured frames set by the 'post_capture' option. The 'event_gap' option defines how long a pause between detected motions that is needed to be defined as a new event. A good starting value is 60 seconds.

The way 'event_gap' works in more technical terms is:
  • event_gap is a timer that timeout 'event_gap' seconds after the last video frame with motion is detected.
  • If 'post_capture' is activated then the event_gap timer starts counting after the last image of the post_capture buffer has been saved.
  • The event_gap timer is reset and starts all over each time new motion is detected, so you will not miss any action by having a short 'event_gap' value. It will just create more events (e.g. more mpegs files)

The event_gap value impacts many functions in Motion.
  • When the event_gap timer runs out the event number is increased by one next time motion is detected. When you use the %v conversion specifier in filenames or text features this means that the number in filename or text increased by one.
  • The pre_capture feature only works at the beginning of an event. So if you have a very large 'event_gap' value pre_capture is not working very often.
  • When you make mpegs using the ffmpeg features a new mpeg file is started at the beginning of an event when the first motion is detected. When 'event_gap' seconds has passed without motion (and post_captured frames saved) the movie file is completed and closed.
  • Do not use large event_gap values to generate one large movie file. If Motion stops working this movie file never gets properly completed and closed and you will not be able to view it.
  • Some of the tracking features sets the camera back to the center position when an event is over.
You can use conversion specifiers in this option. To use this feature you need to install the FFmpeg Streaming Multimedia System.

Experiment to get the desired quality. The better quality the bigger files. This option is ignored if ffmpeg_variable_bitrate is not 0 (disabled). Works like ffmpeg_cap_new but outputs motion pixel type pictures instead.

This feature generates the special motion type movie where you only see the pixels that changes as a graytone image. If labelling is enabled you see the largest area in blue. Smartmask is shown in red. The filename given is the same as the normal mpegs except they have an 'm' appended after the filename before the .mpg. E.g. 20040424181525m.mpg

To use this feature you need to install the FFmpeg Streaming Multimedia System Generates a new film at the beginning of each new event and appends to the film for each motion detected within the same event. The current event ends when the time defined by the 'gap' option has passed with no motion detected. At the next detection of motion a new mpeg film is started.

To use this feature you need to install the FFmpeg Streaming Multimedia System

Must not be included in config file without having ffmpeg installed. To use this feature you need to install the FFmpeg Streaming Multimedia System

Must not be included in config file without having ffmpeg installed.

Default value is equivalent to legacy 'oldlayout' option For Motion 3.0 compatible mode (directories based on date and time) choose: %Y/%m/%d/%H%M%S

File extension .mpg or .avi is automatically added so do not include this.

This option uses conversion specifiers which are codes that start by % and then a letter. The conversion specifiers used has the same function as for the C function strftime (3). The most commonly used are:
  • %Y = year
  • %m = month as two digits
  • %d = date
  • %H = hour
  • %M = minute
  • %S = second
  • %T = HH:MM:SS

These are unique to motion
  • %v = event
  • %q = frame number
  • %t = thread (camera) number
  • %D = changed pixels
  • %N = noise level
  • %i = width of motion area
  • %J = height of motion area
  • %K = X coordinate of motion center
  • %L = Y coordinate of motion center
  • %C = value defined by text_event

If you are happy with the directory structures the way they were in earlier versions of motion use %v-%Y%m%d%H%M%S for 'oldlayout on' and %Y/%m/%d/%H%M%S for 'oldlayout off'. Works like ffmpeg_output_movies but outputs motion pixel type pictures instead.

This feature generates the special motion type movie where you only see the pixels that changes as a graytone image. If labelling is enabled you see the largest area in blue. Smartmask is shown in red. The filename given is the same as the normal mpegs except they have an 'm' appended after the filename before the .mpg. E.g. 20040424181525m.mpg

To use this feature you need to install the FFmpeg Streaming Multimedia System Generates a new film at the beginning of each new event and appends to the film for each motion detected within the same event. The current event ends when the time defined by the 'gap' option has passed with no motion detected. At the next detection of motion a new mpeg film is started.

To use this feature you need to install the FFmpeg Streaming Multimedia System

Must not be included in config file without having ffmpeg installed. This feature uses ffmpegs libavcodec to encode a timelapse movie saving a picture frame at the interval in seconds set by this parameter. Setting this option to 0 disables it.

The feature gives your viewer the chance to watch the day pass by. It makes a nice effect to film flowers etc closeup during the day. Options like frame_rate, snapshot, gap etc have no impact on the ffmpeg timelapse function.

Note that the timelapse format is always mpeg1 independent of ffmpeg_video_codec. This is because mpeg1 allows the timelapse to stop and the file to be reopened and more film appended.

To use this feature you need to install the FFmpeg Streaming Multimedia System.

(renamed from ffmpeg_timelaps to ffmpeg_timelapse in 3.1.14) Note that it is important that you use the conversion specifiers in ffmpeg_filename that ensure that the new timelapse file indeed is a new file. If the filename does not change Motion will simply append the timelapse pictures to the existing file.

The value 'Manual' means that Motion does not automatically rollover to a new filename. You can do it manually using the http control interface by setting the option 'ffmpeg_timelapse' to 0 and then back to your chosen value. Value 'hourly' rolls over on the full hour. Value 'daily' which is the default rolls over at midnight. There are two weekly options because depending on where you come from a week may either start on Sunday or Monday. And 'monthly' naturally rolls over on the 1st of the month. Experiment for the value that gives you the desired compromise between size and quality. Supported formats are:

  • mpeg4 or msmpeg4 - gives you files with extension .avi
  • msmpeg4 is recommended for use with Windows Media Player because it requires no installation of codec on the Windows client.
  • swf - gives you a flash film with extension .swf
  • flv - gives you a flash video with extension .flv
  • ffv1 - FF video codec 1 for Lossless Encoding ( experimental )
  • mov - QuickTime ( testing )
  • ogg - Ogg/Theora ( testing )
  • mp4 - MPEG-4 Part 14 H264 encoding
  • mkv - Matroska H264 encoding
  • hevc - H.265 / HEVC (High Efficiency Video Coding)

Timelapse videos have two options.
  • swf - Creates swf file with mpeg-2 encoding.
    If motion is shutdown and restarted, new pics will be appended to any previously created file with name indicated for timelapse.
  • mpeg4 - Creates avi file with the default encoding.
    If motion is shutdown and restarted, new pics will create a new file with the name indicated for timelapse.
The faster you fetch pictures from the camera the more CPU load you get and the more pictures get included when Motion is detected.

Motion will stop storing pictures if the framerate is set to less than 2.

Set this parameter to the maximum number of images per second that you want to store either as images or as mpeg films.

To set intervals longer than one second use the 'minimum_frame_time' option instead. This option is only relevant if you have a TV tuner card where you can select the tuner frequency. Your tuner card must support this feature. Recommended value is 60 seconds (Default). The value 0 is allowed (but not recommended) and disables events causing all Motion to be written to one single mpeg file and no pre_capture. You can force an event to end and a new to begin using the http control 'http://host:port/thread_number/action/makemovie'. Disabling events has bad side effects on noise_tune and smartmask. Both features can only work properly outside an event. When gap is set to 0, both features don't work properly anymore.

An event is defined as a series of motion images taken within a short timeframe. E.g. a person walking through the room is an event that may have caused 10 single jpg images to be stored. This option defines how long a pause between detected motions that is needed to be defined as a new event.

The gap timer starts after the last motion is detected and post_capture images have been saved and appended to open movie mpeg files.

Any motion detected before the gap timer times out resets the gap timer so it starts counting over again.

Detailed Description

The option 'gap' is important. It defines how long a period of no motion detected it takes before we say an event is over. An event is defined as a series of motion images taken within a short timeframe. E.g. a person walking through the room is an event that may have caused 10 single jpg images to be stored. Motion detected includes post_captured frames set by the 'post_capture' option. The 'gap' option defines how long a pause between detected motions that is needed to be defined as a new event. A good starting value is 60 seconds.

The way 'gap' works in more technical terms is:
  • Gap is a timer that timeout 'gap' seconds after the last video frame with motion is detected.
  • If 'post_capture' is activated then the gap timer starts counting after the last image of the post_capture buffer has been saved.
  • The gap timer is reset and starts all over each time new motion is detected, so you will not miss any action by having a short 'gap' value. It will just create more events (e.g. more mpegs files)

The gap value impacts many functions in Motion.
  • When the gap timer runs out the event number is increased by one next time motion is detected. When you use the %v conversion specifier in filenames or text features this means that the number in filename or text increased by one.
  • The pre_capture feature only works at the beginning of an event. So if you have a very large 'gap' value pre_capture is not working very often.
  • When you make mpegs using the ffmpeg features a new mpeg file is started at the beginning of an event when the first motion is detected. When 'gap' seconds has passed without motion (and post_captured frames saved) the mpeg files is completed and closed.
  • Do not use large gap values to generate one large mpeg4 file. If Motion stops working this mpeg4 file never gets properly completed and closed and you will not be able to view it.
  • Some of the tracking features sets the camera back to the center position when an event is over.

Note that 'gap' and 'minimum_gap' have nothing to do with each other. The height of the image in pixels. Motion does not scale so should be set to the actual size of the v4l device. In case of a net camera motion sets the height to the height of the first image read.

Motion actually set the size of the image coming from the video4linux device.

Your camera or capture/TV card will not support any picture size. You must know which frame size (width and height) the camera supports. If you do not know start with width 320 and height 240 which most cameras and capture cards supports.

For some device drivers like pwc (driver for Philips USB cameras) setting the size to a non-standard value makes the driver create an image of the nearest smaller size and create a gray band around the image to fit the size given by motion. Note that it is the driver and not motion that generates the gray band. Motion will try to detect motion in the entire image including the gray band.

Motion requires that dimensions of camera image must have both height and width that are a multiple of 16. Thís is normally not a problem. All standard sizes like 640, 480, 352, 320, 288, 240, ...etc are multiples of 16. Normally only relevant for NTSC cameras. This parameter is really used only with video capture cards that has more than one input.

However if you set the input number to e.g. 1 for a USB camera motion writes an error message back. If you set it to -1 it does not give you any warning.

If you have a video capture card you can define the channel to tune to using this option. If you are using a USB device or network camera you should set the value to the default -1.

Many TV tuner cards have the input channels: TV Tuner = 0, Standard composite video = 1, S-VHS = 3. Other have TV=0, composite video 1= 1, composite video = 2, S-VHS = 3. It is recommended to set the parameter to -1 for USB cameras as your first try. For video capture cards input 1 is normally the composite video input but it may also be 0. Try both until it works. This sets the TCP/IP port number to be used for control of motion using http (browser). Port numbers below 1024 normally requires that you have root privileges. Port 8080 is a fine choice of port to use for the purpose. Default value is equivalent to legacy 'oldlayout' option. For Motion 3.0 compatible mode (directories based on date and time) choose: %Y/%m/%d/%H/%M/%S-%q

This option uses conversion specifiers which are codes that start by % and then a letter. The conversion specifiers used has the same function as for the C function strftime (3). The most commonly used are:
  • %Y = year
  • %m = month as two digits
  • %d = date
  • %H = hour
  • %M = minute
  • %S = second
  • %T = HH:MM:SS

These are unique to motion
  • %v = event
  • %q = frame number
  • %t = thread (camera) number
  • %D = changed pixels
  • %N = noise level
  • %i = width of motion area
  • %J = height of motion area
  • %K = X coordinate of motion center
  • %L = Y coordinate of motion center
  • %C = value defined by text_event

If you are happy with the directory structures the way they were in earlier versions of motion use %v-%Y%m%d%H%M%S-%q for 'oldlayout on' and %Y/%m/%d/%H/%M/%S-%q for 'oldlayout off'.

The value 'preview' only works when 'output_normal' is set to 'best'. It makes Motion name the best preview jpeg file (image with most changed pixels during the event) with the same body name as the mpeg movie created during the same event. The purpose is to create a good single image that represents the saved mpeg moview so you can decide if you want to see it and spend time downloading it from a web page. Experiment to see what works best for your application.

Note: From version 3.1.17 (snap release 2 and on) this option has changed from a boolean (on or off) to a number in percent between 0 and 100. Zero means the option is disabled.

The value defines the picture areas in percent that will trigger the lightswitch condition. When lightswitch is detected motion detection is disabled for 5 picture frames. This is to avoid false detection when light conditions change and when a camera changes sensitivity at low light. The value 'preview' only works when 'output_normal' is set to either 'first' or 'best'. The value 'preview' only works when 'output_normal' is set to either 'first' or 'best'.
  • Set to 'box' will draw the traditional box.
  • Set to 'redbox' will draw a red box.
  • Set to 'cross' will draw a little cross to mark center.
  • Set to 'redcross' will draw a little red cross to mark center.
You can use this parameter to set how much information you want from the logging.

You will typically use a high value when you are trouble-shooting a problem.

The 9 levels are

Level Short Name
1 EMG Emergency
2 ALR Alert
3 CRT Crritical
4 ERR Error
5 WRN Warning
6 NTC Notice
7 INF Info
8 DBG Debug
9 ALL All
This enables users and developers to isolate logging information to a specific area of interest.

The log types are

Short Name
COR Core
STR Stream
ENC Encoder
NET Netcam
DBL Database
EVT Events
TRK Tracking
VID V4L1/2 Bktr
ALL All

low_cpu

  • Type: Integer
  • Range / Valid values: 0 - 100
  • Default: 0 (disabled)
  • Option Topic
When this option is not zero motion will be in a low cpu mode while not detecting motion. In low cpu mode Motion reduces the framerate to the value given for this option. Value zero means disabled. ( DEPRECATED )

This is smart for running a server that also does other tasks such as running Apache, MySQL etc. Motion grabs this lower number of frames per second until it detects motion. Then it speeds up to normal speed and take pictures as set by the option "framerate".

Full path of the PGM (portable gray map) mask file (binary format).

If you have one or more areas of the camera image in which you do NOT want motion detected (e.g. a tree that moves in the wind or a corner of the picture where you can see cars/pedestrians passing by) you need a mask file. This file is a picture that you create in your favorite photo editing program. The areas that you want detected must be white. The error that you want ignored must be black. The pgm image must be the same size (number of pixels high and wide) as the pictures that are taken by the camera (video4linux device).

You can adjust sensitivity by using gray tones.

If you do not have a mask file disable this option by not having it in the config file or comment it out ("#"or ";" as first character in line). If you are using the rotate option, note that the mask is applied after the rotation.

Detailed Description

The mask file must be a pgm format image file (portable gray map). Note that you must choose the BINARY (raw) format, and the code requires that the whitespace between the width and height values at the start of the file takes the form of a single space character. This is the line after the "P5". If yours doesn't, you may need to use a hex editor to modify it.

The feature is simple. Create an image of exact the same size as the ones you get from your video device (camera). Make a purely white picture and paint the areas that you want to mask out black. You can also make gray areas where you want to lower the sensitivity to motion. Normally you will stick to pure black and white.

One easy method for generating the mask file is as follows.

You can just take a motion captured picture, edit it with black and white for the mask and save it as a pgm file. If you cannot save in this format save as a grayscale jpg and then you can convert it to pgm format with

djpeg -grayscale -pnm [inputfile] > mask.pgm

(assuming you have djpeg installed - part of the jpeg lib package).

Note that the mask file option masks off the detection of motion. The entire picture is still shown on the picture. This means that you cannot use the feature to mask off an area that you do not want people to see.

Below are an example of a webcam picture and a mask file to prevent the detection cars in the street.

Normal picture. Notice the street is visible through the hedge.

Mask file (converted to png format so it can be shown by your web browser)

This same mask feature can be used to mask off individual pixels of unimportant motion. For example, any edge will typically show some noise. Leaves moving in the wind cause noise, but only at the edges of the leaves. You may not want to mask off the entire area. The parameter sets the limit of the time and not the size of the file The parameter sets the limit of the time and not the size of the file This option is used when you want to capture images at a rate lower than 2 per second.

When this is enabled the framerate option is used only to set the pace the Motion service the webcam port etc. Running Motion at framerate 2 is normally fine.

minimum_gap

  • Type: Integer
  • Range / Valid values: 0 - 2147483647
  • Default: 0 (no minimum)
  • Option Topic

The minimum time between two shots in seconds. ( DEPRECATED )

This is the minimum gap between the storing pictures while detecting motion.

The value zero means that pictures can be stored almost at the framerate of the camera. Normally you will set this to 0

This option has nothing to do with the 'gap' option.

ALERT! From motion 3.2.7 this feature has been removed because it was in practical a useless feature. It prevented saving more than one picture per minimum_gap seconds but the capturing and motion detect was still run at full framerate loading the CPU heavily. From 3.2.7 a new feature called minimum_frame_time has been introduced which lower the capture rate. So it gives the same effect as minimum_gap did but additionally lower the CPU load significantly.

Note that the picture frames are buffered by Motion and once motion is detected also the first frames containing motion are saved so you will not miss anything.

The feature is used when you get many false detections when the camera changes light sensitivity or light changes.

Experiment for best setting. Even though Motion accepts large values you should set this to a relatively low number (below 10). For each step larger than 1 Motion reserves space in RAM for the picture frame buffer. If you have a large value Motion will miss many frames from the camera while it is processing the all the pictures in the buffer. Using this you can view the results in real time. E.g. by using the program camstream. The difference between this option and the video-pipe option is that this option shows the motion version of the images instead of the normal images.

Disable this option by not having it in the config file (or comment it out with "#" or ";"). File extension .mpg or .avi is automatically added so do not include this.

This option uses conversion specifiers which are codes that start by % and then a letter. The conversion specifiers used has the same function as for the C function strftime (3). The most commonly used are:
  • %Y = year
  • %m = month as two digits
  • %d = date
  • %H = hour
  • %M = minute
  • %S = second
  • %T = HH:MM:SS

These are unique to motion
  • %v = event
  • %q = frame number
  • %t = thread (camera) number
  • %D = changed pixels
  • %N = noise level
  • %i = width of motion area
  • %J = height of motion area
  • %K = X coordinate of motion center
  • %L = Y coordinate of motion center
  • %C = value defined by text_event

If you are happy with the directory structures the way they were in earlier versions of motion use %v-%Y%m%d%H%M%S for 'oldlayout on' and %Y/%m/%d/%H%M%S for 'oldlayout off'.

Default value is equivalent to legacy 'oldlayout' option For Motion 3.0 compatible mode (directories based on date and time) choose: %Y/%m/%d/%H%M%S MySQL CONFIG FILE OPTION. Motion must be built with MySQL libraries to use this feature.

If you compiled motion with MySQL support you will need to set the mysql options if you want motion to log events to the database MySQL CONFIG FILE OPTION. Motion must be built with MySQL libraries to use this feature MySQL CONFIG FILE OPTION. Motion must be built with MySQL libraries to use this feature. MySQL CONFIG FILE OPTION. Motion must be built with MySQL libraries to use this feature
  • 1.0: the historical implementation using HTTP/1.0, closing the socket after each http request.
  • keep_alive: Use HTTP/1.0 requests with keep alive header to reuse the same connection.
  • 1.1: Use HTTP/1.1 requests that support keep alive as default.
  • off: The historical implementation using HTTP/1.0, closing the socket after each http request.
  • on: Use HTTP/1.1 requests that support keep alive as default.
  • force: Use HTTP/1.0 requests with keep alive header to reuse the same connection.
Use this if you need to connect to a network camera through a proxy server.

Example of syntax: "http://myproxy.mydomain.com:1024

If the proxy port number is 80 you can ommit the port number. Then the syntax is use "http://myproxy.mydomain.com" .

Leave this option undefined if you do not use a proxy server.

Motion can connect to a network camera through a normal TCP socket. All you need to give it is the URL. The URL given must return either one single jpeg picture or an mjpeg stream.

If you are using a network camera, size will be auto-detected

Available prefixes to the URL:

  • http://
  • ftp://
  • mjpg://
  • rtsp://
  • mjpeg://
  • file:///

The prefixes of mjpg and mjpeg are not actual protocols and allow the user to specify different formats and methods to access the network stream. They are internally translated into http. For options such as rtsp, it is recommended that the connection string be validated with other applications such as ffplay or VLC.

When the netcam_url is defined the video4linux options are ignored

Example of URL: http://www.gate.com/pe1rxq/jeroen.jpg.

Also watch out that you do not use a URL that create an HTML page with an embedded jpg. What must be returned is the jpg picture itself or the raw mjpeg stream.

night_compensate

  • Type: Boolean
  • Range / Valid values: on, off
  • Default: off
  • Option Topic

When this option is set the noise threshold will be lowered if the picture is dark. This will improve the sensitivity in dark places. However it might also increase the number of false alarms since most cameras also increase light sensitivity with their AGC (Automatic Gain Control) and this will increase noise. ( DEPRECATED )

It has normally been the advice not to use this with 'noise_tune' turned on. However the latest experience is that with the new improved noise_tune algorithm it actually works fine in combination with 'night_compensate'.

This is different from the threshold parameter. This is changes at pixel level. The purpose is to eliminate the changes generated by electric noise in the camera. Especially in complete darkness you can see the noise as small grey dots that come randomly in the picture. This noise can create false motion detection. What this parameter means is that the intensity of a pixel must change more than +/- the noise threshold parameter to be counted This feature makes Motion continuously adjust the noise threshold for distinguishing between noise and motion. The 'noise_level' setting is ignored when activating this feature. This is a new feature and new algorithm. It may give different results depending on camera and light conditions. Report your experience with it on the Motion mailing list. If it does not work well, deactivate the 'noise_tune' option and use the manual setting of 'noise_level' instead This value is only used for capture cards using the BTTV driver.

Full path name of the program/script.

This can be any type of program or script. Remember to set the execution bit in the ACL and if it is a script type program such as perl or bash also remember the shebang line (e.g. #! /usr/bin/perl) as the first line of the script.

The command is run when an event is over. I.e. the number of seconds defined by the time 'gap' has passed since the last detection of motion and motion closes the mpeg file. Full path name of the program/script.

This can be any type of program or script. Remember to set the execution bit in the ACL and if it is a script type program such as perl or bash also remember the shebang line (e.g. #!/user/bin/perl) as the first line of the script.

The command is run when an event starts. I.e. the first motion is detected since the last event.

This option replaces the former options 'mail', 'sms' and 'execute' To disable the feature simply do not include the option in the file or comment it out by placing a "#" or ";" as the first character on the line before the execute command Full path name of the program/script.

This can be any type of program or script. Remember to set the execution bit in the ACL and if it is a script type program such as perl or bash also remember the shebang line (e.g. #!/user/bin/perl) as the first line of the script.

The command is run when an event is over. I.e. the number of seconds defined by the time 'gap' has passed since the last detection of motion and motion closes the mpeg file.

This option was previously called onffmpegclose.

To include the path name of the picture in the command line, you can use the conversion specifier %f to insert the picture filename (full path) anywhere in the command.

Most common conversion specifiers

  • %Y = year, %m = month, %d = date
  • %H = hour, %M = minute, %S = second
  • %v = event
  • %q = frame number
  • %t = thread (camera) number
  • %D = changed pixels
  • %N = noise level
  • %i and %J = width and height of motion area
  • %K and %L = X and Y coordinates of motion center
  • %C = value defined by text_event
  • %f = filename with full path
  • %n = number indicating filetype
Full path name of the program/script.

This can be any type of program or script. Remember to set the execution bit in the ACL and if it is a script type program such as perl or bash also remember the shebang line (e.g. #!/user/bin/perl) as the first line of the script. When you use ffmpeg the film is generated on the fly and on_movie_start then runs when the new mpeg file is created. Often you will want to use the on_movie_end option which runs when the mpeg file is closed and the event is over.

This option was previously called onmpeg.

To include the path name of the picture in the command line, you can use the conversion specifier %f to insert the picture filename (full path) anywhere in the command.

Most common conversion specifiers

  • %Y = year, %m = month, %d = date
  • %H = hour, %M = minute, %S = second
  • %v = event
  • %q = frame number
  • %t = thread (camera) number
  • %D = changed pixels
  • %N = noise level
  • %i and %J = width and height of motion area
  • %K and %L = X and Y coordinates of motion center
  • %C = value defined by text_event
  • %f = filename with full path
  • %n = number indicating file-type
Full path name of the program/script.

This can be any type of program or script. Remember to set the execution bit in the file access control list (chmod) and if it is a script type program such as perl or bash also remember the shebang line (e.g. #!/usr/bin/perl) as the first line of the script.

To include the path name of the picture in the command line, you can use the conversion specifier %f to insert the picture filename (full path) anywhere in the command.

The script is run after the image is saved.

Most common conversion specifiers

  • %Y = year, %m = month, %d = date
  • %H = hour, %M = minute, %S = second
  • %v = event
  • %q = frame number
  • %t = thread (camera) number
  • %D = changed pixels
  • %N = noise level
  • %i and %J = width and height of motion area
  • %K and %L = X and Y coordinates of motion center
  • %C = value defined by text_event
  • %f = filename with full path
  • %n = number indicating file-type
This feature is not meant to be the normal mode of operation. Especially not if you have the output_normal or output_motion features enabled since it will keep on saving pictures on the disk and you will soon run out of disk space. So be careful with this command.

If your frame rate is 10 pictures per second motion will save 10 new picture pr second until the disk is full.

It does all the normal actions that are done when motion is detected. It saves pictures on the harddisk, execute external scripts, etc as fast as the frame rate of the camera. So it is probably a good idea to run with a low framerate when using this feature and to not use activate all the features that saves files on the disk.

The idea of this feature is that you can turn the feature on and off for a short period of time to test or to generate continuous mpeg films when needed. Motion images shows the motion content of the pictures. This is good for tuning and testing but probably not very interesting for the general public.

Default is not to store these motion images. Motion pictures are stored the same place and with the same filename as normal motion triggered pictures except they have an "m" appended at the end of the filename before the .jpg or .ppm. E.g. the name can be 01-20020424232936-00m.jpg. Motion images shows the motion content of the pictures. This is good for tuning and testing but probably not very interesting for the general public.

Default is not to store motion images. Motion pictures are stored the same place and with the same filename as normal motion triggered pictures except they have an "m" appended at the end of the filename before the .jpg or .ppm. E.g. the name can be 01-20020424232936-00m.jpg. If you set the value to 'first' Motion saves only the first motion detected picture per event.

If you set it to "best" Motion saves the picture with most changed pixels during the event. This is useful if you store mpegs on a webserver and want to present a jpeg to show the content of the mpeg on a webpage. "best" requires a little more CPU power and resources compared to "first".

Picture with motion nearest center of picture is saved when set to 'center' (since 3.2.10).

Set to 'off' to not write pictures (jpeg or ppm). If you set the value to 'first' Motion saves only the first motion detected picture per event.

If you set it to "best" Motion saves the picture with most changed pixels during the event. This is useful if you store mpegs on a webserver and want to present a jpeg to show the content of the mpeg on a webpage. "best" requires a little more CPU power and resources compared to "first".

Picture with motion nearest center of picture is saved when set to 'center'

Set to 'off' to not write pictures PostgreSQL CONFIG FILE OPTION. Motion must be built with PostgreSQL libraries to use this feature.

If you compiled motion with PostgreSQL support you will need to set all the pgsql_ options if you want motion to log events to the database. PostgreSQL CONFIG FILE OPTION. Motion must be built with pgsql_db libraries to use this feature. PostgreSQL CONFIG FILE OPTION. Motion must be built with PostgreSQL libraries to use this feature PostgreSQL CONFIG FILE OPTION. Motion must be built with PostgreSQL libraries to use this feature. PostgreSQL CONFIG FILE OPTION. Motion must be built with PostgreSQL libraries to use this feature. This option uses conversion specifiers which are codes that start by % and then a letter. The conversion specifiers used has the same function as for the C function strftime (3). The most commonly used are:
  • %Y = year
  • %m = month as two digits
  • %d = date
  • %H = hour
  • %M = minute
  • %S = second
  • %T = HH:MM:SS

These are unique to motion
  • %v = event
  • %q = frame number
  • %t = thread (camera) number
  • %D = changed pixels
  • %N = noise level
  • %i = width of motion area
  • %J = height of motion area
  • %K = X coordinate of motion center
  • %L = Y coordinate of motion center
  • %C = value defined by text_event

If you are happy with the directory structures the way they were in earlier versions of motion use %v-%Y%m%d%H%M%S-%q for 'oldlayout on' and %Y/%m/%d/%H/%M/%S-%q for 'oldlayout off'.

The value 'preview' only works when 'output_pictures' is set to 'best'. It makes Motion name the best preview jpeg file (image with most changed pixels during the event) with the same body name as the mpeg movie created during the same event. The purpose is to create a good single image that represents the saved mpeg moview so you can decide if you want to see it and spend time downloading it from a web page

Default value is equivalent to legacy 'oldlayout' option. For Motion 3.0 compatible mode (directories based on date and time) choose: %Y/%m/%d/%H/%M/%S-%q The recommendation is to always use jpg except if you have a specific need to store high quality pictures without any quality loss. For web cameras you should always choose jpg. Note that the built in webcam server requires that this parameter is set to off. The purpose of this is mainly to create smooth video clips each time motion is detected. Use it to you personal taste (and disk space)..

This option is the preferred way to create continuous movies. Post_capture does not consume extra RAM and it does not create pauses in the movie even with large values.

If you only store mpegs movies and do not have output_normal on, then the recommended post_capture value is what is equivalent to 1-5 seconds of movie. These are the valid values

Value Description
-1 Do not modify device setting
0 Power line frequency Disabled
1 50 Hz
2 60 Hz
3 Auto
The recommendation is to always use jpg except if you have a specific need to store high quality pictures without any quality loss. For web cameras you should always choose jpg. Note that the built in webcam server requires that this parameter is set to off. Motion buffers the number of picture frames defined by 'pre_capture'. When motion is detected the pictures in the buffer are included in the video clip generated by ffmpeg. The effect is that it seems the program knew in advance that the event was going to take place and started the recording before it actually happened. This is a nice feature that give more complete video clips of an event.

If pre_capture is set to 0 the feature is disabled. Keep this value below 5.

The recommended value would be approx 0.5 second of video so the value should be defined so it fits the framerate and the desired pre-capture time. E.g. 0.5 second at 20 frames pr second would mean a value of 5. You should never use a value larger than 10.

You can in theory have up to 100s of pre-captured frames but naturally this makes motion leave a larger footprint in the memory of the computer. More important Motion is processing all the buffered images including saving jpegs, encoding mpegs, writing to databases and executing external programs after the first image is detected as Motion.

Motion will not grab another image until this is done. This means that even moderate values for pre_capture combined with high framerates will mean that you will miss quite many frames of Motion. It is therefore recommended to use relative small values for pre_capture. Depending on your chosen framerate and depending on the features enabled values from 1-5 are sensible.

If you wish to create smooth mpegs during events using large pre_capture values will do the opposite! It will create a long pause where a lot of action is missed.

To get a smooth mpeg use a large value for post_capture which does not cost any performance hit or RAM space. When Motion is started and this option is defined, Motion creates a file containing the process ID if the main Motion thread. This can be used by scripts to identify the process number for example when you want to stop the process.

If you want to run multiple instances of Motion make sure to use different file names for the process ID file. The process ID file (pid file) can also be specified with the -p command line switch. 100 means hardly compressed. A small number means a much smaller file size but also a less nice quality image to look at. 50 is a good compromise for most. Only works in non-daemon mode. The rotation feature is used when the camera is hanging upside down (180 degrees) or if you choose a picture format in portrait instead of the normal landscape (90 or 270 degrees).

Note that the CPU load increases when using this feature with a value other than 0. Also note that Motion automatically swaps width and height if you rotate 90 or 270 degrees, so you don't have to touch these options. The Round Robin feature is automatically activated where multiple threads are sharing the same video device. Each thread can then set different input channels or frequencies to change camera.

If multiple threads use the same video device, they each can capture roundrobin_frames number of frames before having to share the device with the other threads. The Round Robin feature is automatically activated where multiple threads are sharing the same video device. Each thread can then set different input channels or frequencies to change camera.

When another thread wants to watch another input or frequency or size the first roundrobin_skip number of frames are skipped to allow the device to settle.

This feature is considered experimental in nature When this option is turned on, Motion starts in setup mode so that the parameters can be set more easily. You can run setup mode in either console mode or daemon mode.

With 'motion -s' Motion runs in console mode instead of daemon. It outputs a lot of useful information for each frame from the camera. Each message is prefixed by [number] where number is the camera number (thread number). When you look at the webcam stream you see a black image with numbers. What you see is the number of changed pixels, number of labeled areas and noise setting. When something moves you see the pixels detected as Motion in black and white. The largest labeled area (assuming despeckle is enabled and with the 'l' at the end) is blue. It is only the blue areas which is counted as Motion. If smartmask is enabled you see this as red areas. Here is a suggestion how to initially setup Motion.

  • Disable despeckle (comment it out in motion.conf).
  • Disable smartmask
  • Enable both http control and webcam by setting port numbers. Example 8080 for control and 8081 for webcam.
  • Start Motion in setup mode
  • View the webcam stream. Either with Iceweasel or with Firefox by entering in the address of http://localhost:8080/
  • Open a new tab and connect to the http interface. http://localhost:8080/ . You can now control and change almost anything while Motion is running. To disable a feature enter a space.
  • Start by experimenting with noise level. Do this both during daylight and during darkness. You will be surprised to see how much noise a camera makes during night. Try using the automatic noise feature. It should work for most.
  • Now try the despeckle feature. Enable it using the recommended default EedDl. If this is not enough experiment. Remember that the l must be the last letter.
  • Set the threshold to what you want to trigger Motion.

In normal daemon mode you can use the same setting with two browser tabs and experiment with settings of the camera if needed. From the web interface you can ask Motion to write all your changes back to the config files (motion.conf and thread config files). Smartmask is a dynamic, self-learning mask. Smartmask will disable sensitivity in areas with frequent motion (like trees in the wind). Sensitivity is turned on again after some time of no more motion in this area. The built mask is a bit larger at the borders than the actual motion was. This way smartmask works more reliable when sudden moves occur under windy conditions.

smart_mask_speed - tunes the slugginess of the mask. It accepts values from 0 (turned off) to 10 (fast). Fast means here that the mask is built quick, but it is also not staying very long with no more motion. Slow means that it takes a while until the mask is built but it also stays longer. A good start value for smart_mask_speed is 5. This setting is independent from the framerate. The attack and decay time is constant over all available framerates.

When smartmask is enabled and motion is also configured to either write motion-images or motion-mpegs, the current smartmask is copied as an overlay into the black/white motion-pictures/mpegs in red colour. Same thing happens to the webcam stream when Motion runs in setup_mode. That way you can easily adjust smart_mask_speed.

Detailed Description

The mask_file option provides a static mask to turn off sensitivity in certain areas. This is very usefull to mask a street with cars passing by all day long etc...

But imagine a scenario with large bushes and big trees where all the leaves are moving in the wind also triggering motion from time to time even with despeckle turned on. Of course you can also define a static mask here, but what if the bushes are growing during spring and summer? Well, you have to adapt the mask from time to time. What if the camera position moves slightly? What if someone grows new plants in your garden? You always have to setup a new static mask.

The answer to this problem is the smart mask feature introduced in Motion 3.1.18. A dynamic, self-learning mask.

Smart mask will disable sensitivity in areas with frequent motion (like trees in the wind). Sensitivity is turned on again after some time of no more motion in this area. The built mask is a bit larger at the borders than the actual motion. This way smartmask works more reliably when sudden moves occur under windy conditions. Default value is equivalent to legacy 'oldlayout' option. For Motion 3.0 compatible mode (directories based on date and time) choose: %Y/%m/%d/%H/%M/%S-snapshot

File extension .jpg or .ppm is automatically added so do not include this A symbolic link called lastsnap.jpg (or lastsnap.ppm) created in the target_dir will always point to the latest snapshot, unless snapshot_filename is exactly 'lastsnap'

This option uses conversion specifiers which are codes that start by % and then a letter. The conversion specifiers used has the same function as for the C function strftime (3). The most commonly used are:
  • %Y = year
  • %m = month as two digits
  • %d = date
  • %H = hour
  • %M = minute
  • %S = second
  • %T = HH:MM:SS

These are unique to motion
  • %v = event
  • %q = frame number
  • %t = thread (camera) number
  • %D = changed pixels
  • %N = noise level
  • %i = width of motion area
  • %J = height of motion area
  • %K = X coordinate of motion center
  • %L = Y coordinate of motion center
  • %C = value defined by text_event

If you are happy with the directory structures the way they were in earlier versions of motion use %v-%Y%m%d%H%M%S-snapshot for 'oldlayout on' and %Y/%m/%d/%H/%M/%S-snapshot for 'oldlayout off'.

For the equivalent of the now obsolete option 'snap_overwrite' use the value 'lastsnap'. The snapshots are stored in the target directory + the directory/filename specified by the snapshot_filename option.

This is the traditional web camera feature where a picture is taken at a regular interval independently of motion in the picture. Configuration option common to MySQL and PostgreSQL. Motion must be built with MySQL or PostgreSQL support to use this feature. Configuration option common to MySQL and PostgreSQL. Motion must be built with MySQL or PostgreSQL support to use this feature. Configuration option common to MySQL and PostgreSQL. Motion must be built with MySQL or PostgreSQL support to use this feature. Configuration option common to MySQL and PostgreSQL. Motion must be built with MySQL or PostgreSQL support to use this feature. Configuration option common to MySQL and PostgreSQL. Motion must be built with MySQL or PostgreSQL support to use this feature. Configuration option common to MySQL and PostgreSQL. Motion must be built with MySQL or PostgreSQL support to use this feature. Most common conversion specifiers

  • %Y = year, %m = month, %d = date
  • %H = hour, %M = minute, %S = second
  • %v = event
  • %q = frame number
  • %t = thread (camera) number
  • %D = changed pixels
  • %N = noise level
  • %i and %J = width and height of motion area
  • %K and %L = X and Y coordinates of motion center
  • %C = value defined by text_event
  • %f = filename with full path
  • %n = number indicating filetype

Sample Query

insert into security(camera, filename, frame, file_type, time_stamp, text_event) values('%t', '%f', '%q', '%n', '%Y-%m-%d %T', '%C') insert or ignore into images (camera_nbr, file_name, year, month, day, hour, minute) values (8, '%f', '%Y','%m','%d','%H','%M')

The filetype is defined as bits in a binary number

Normal picture 1
Snapshot picture 2
Debug picture 4
Movie file 8
Debug Movie File 16
Timelapse 32
The parameters have the following meaning.

  • 0 = disabled
  • 1 = Basic authentication
  • 2 = MD5 digest (the safer authentication)

Note that if you are enabling the webcontrol feature of Motion, you really really really ... should enable security authentications. No. Seriously. You really should. See the security warnings in this document regarding how it completely opens up your system.

Number can be defined by multiplying actual webcam rate by desired number of seconds. Actual webcam rate is the smallest of the numbers framerate and stream_maxrate. By setting this to on, the webcam can only be accessed on the same machine on which Motion is running. Don't set 'stream_maxrate' too high unless you only use it on the localhost or on an internal LAN. Use this option to save bandwidth when there is not anything important to see from the camera anyway. Note that each camera thread must have its own unique port number and it must also be different from the webcontrol_port number.

A good value to select is 8081 for camera 1, 8082 for camera 2, 8083 for camera 3 etc etc.

This must be placed in motion.conf and not in a thread config file Preview images are placed on to the webcontrol home page in thread number order. This parameter allows the user some flexibility in organizing the images on the page.

Setting this parameter to off will set the image to the right of any image from a lower numbered thread. Setting it to 'on' will place the image on the start of the next line(below).

Full customization of the webcontrol page is NOT planned in the Motion development. Users that require a more polished and customized preview page are encouraged to create their own local HTML page that references the streams

The mjpeg stream consists of a header followed by jpeg frames separated by content-length and boundary string. The quality level defines the size of the individual jpeg pictures in the mjpeg stream. If you set it too high you need quite a high bandwidth to view the stream. This is a round robin related feature used when you have a capture card with multiple inputs (controlled by the 'input' option) on the same videodevice. This is the target directory for all snapshots, images files and movie files. You will normally always want to specify this parameter as an absolute path.

Note that the options snapshot_filename, picture_filename, movie_filename, and timelapse_filename all allows specifying directories. These will all be relative to 'target_dir'. This means in principle that you can specify target_dir as '/' and be 100% flexible. It also means that Motion can write files all over your harddisk if you make a mistake. It is recommended to specify the target_dir as deep or detailed as possible for this reason. By setting this option to 'on' the number of pixels that changed compared to the reference frame is displayed in the upper right corner of the pictures. This is good for calibration and test. Maybe not so interesting for a greater public. Set it to your personal taste. This option makes the text defined by text_left, text_right and text_changes twice the normal size. This may be useful when using large picture formats such as 640 x 480. The idea is that %C can be used filenames and text_left/right for creating a unique identifier for each event.

Option text_event defines the value %C which then can be used in filenames and text_right/text_left. The text_event/%C uses the time stamp for the first image detected in a new event. %C is an empty string when no event is in progress (gap period expired). Pre_captured and minimum_motion_frames images are time stamped before the event happens so %C in text_left/right does not have any effect on those images. text_left is displayed in the lower left corner of the pictures. If the option is not defined no text is displayed at this position.

You can place the text in quotation marks to allow leading spaces. With a combination is spaces and newlines you can position the text anywhere on the picture.

Detailed Description

A conversion specifier is a code that starts by % (except newline which is \n). The conversion specifiers used has the same function as for the C function strftime (3). The most commonly used are:
  • %Y = year
  • %m = month as two digits
  • %d = date
  • %H = hour
  • %M = minute
  • %S = second
  • %T = HH:MM:SS

These are unique to motion
  • %v = event
  • %q = frame number
  • %t = thread (camera) number
  • %D = changed pixels
  • %N = noise level
  • %i = width of motion area
  • %J = height of motion area
  • %K = X coordinate of motion center
  • %L = Y coordinate of motion center
  • %C = value defined by text_event

With a combination of text, spaces, new lines \n and conversion specifiers you have some very flexible text features.

For a full list of conversion specifiers see the section Conversion Specifiers for Advanced Filename and Text Feature. text_right is displayed in the lower right corner of the pictures. If the option is not defined no text is displayed at this position.

You can place the text in quotation marks to allow leading spaces. With a combination is spaces and newlines you can position the text anywhere on the picture.

A major difference from text_left is that if this option is undefined the default is %Y-%m-%d\n%T which displays the date in ISO format YYYY-MM-DD and below the time in 24 hour clock HH:MM:SS.

Detailed Description

A conversion specifier is a code that starts by % (except newline which is \n). The conversion specifiers used has the same function as for the C function strftime (3). The most commonly used are:
  • %Y = year
  • %m = month as two digits
  • %d = date
  • %H = hour
  • %M = minute
  • %S = second
  • %T = HH:MM:SS

These are unique to motion
  • %v = event
  • %q = frame number
  • %t = thread (camera) number
  • %D = changed pixels
  • %N = noise level
  • %i = width of motion area
  • %J = height of motion area
  • %K = X coordinate of motion center
  • %L = Y coordinate of motion center
  • %C = value defined by text_event

With a combination of text, spaces, new lines \n and conversion specifiers you have some very flexible text features.

For a full list of conversion specifiers see the section Conversion Specifiers for Advanced Filename and Text Feature. This is used when you have more than one camera/device.

The single camera can get all its options from the default motion.conf file. If you have two or more cameras every camera must have its unique information in a separate thread config file. This must be at least the definition of the device or input number of a capture card.

Additionally you can add any other options such as target_dir, height/width etc. Format of the thread config files is the same as for the motion.conf.

You add one thread statement for each camera in motion.conf. Example
thread /usr/local/etc/thread1.conf
thread /usr/local/etc/thread2.conf

An option in a thread config file overrides the same option in motion.conf. This means that the options in motion.conf becomes the default value for all the cameras. The thread options must be the last options in the motion.conf file. The 'threshold' option is the most important detection setting. When motion runs it compares the current image frame with the previous and counts the number of changed pixels after having processed the image with noise filtering, masking, despeckle and labeling. If more pixels than defined by 'threshold' have changed we assume that we have detected motion. Set the threshold as low as possible so that you get the motion you want detected but large enough so that you do not get detections from noise and plants moving. Note that the larger your frames are, the more pixels you have. So for large picture frame sizes you need a higher threshold.

Use the -s (setup mode) command line option and/or the text_changes config file option to experiment to find the right threshold value. If you do not get small movements detected (see the mouse on the kitchen floor) lower the value. If motion detects too many birds or moving trees, increase the number. Practical values would be from a few hundred to 2000 indoors and 1000-10000 outdoors. This feature makes Motion continuously adjust the threshold for declaring motion.

The threshold setting is ignored when activating this feature. It may give different results depending on your camera, light conditions, indoor/outdoor, the motion to be detected etc. If it does not work well, deactivate the 'threshold_tune' option and use the manual setting of threshold instead.

There has been many reports from users that this feature does not work very well. Default value is equivalent to legacy 'oldlayout' option.

File extension .mpg is automatically added so do not include this.

This option uses conversion specifiers which are codes that start by % and then a letter. The conversion specifiers used has the same function as for the C function strftime (3). The most commonly used are:
  • %Y = year
  • %m = month as two digits
  • %d = date
  • %H = hour
  • %M = minute
  • %S = second
  • %T = HH:MM:SS

These are unique to motion
  • %v = event
  • %q = frame number
  • %t = thread (camera) number
  • %D = changed pixels
  • %N = noise level
  • %i = width of motion area
  • %J = height of motion area
  • %K = X coordinate of motion center
  • %L = Y coordinate of motion center
  • %C = value defined by text_event

For Motion 3.0 compatible mode (directories based on date and time) choose: %Y/%m/%d-timelapse

If you are happy with the directory structures the way they were in earlier versions of motion use %v-%Y%m%d-timelapse for 'oldlayout on' and %Y/%m/%d-timelapse for 'oldlayout off'. Requires a tracking camera type supported by Motion. Only used for iomojo camera. Only used for stepper motor tracking. Only used for stepper motor tracking. Only used for stepper motor tracking. Only used for stepper motor tracking. The actual delay is depending on the chosen framerate. If you want the camera to move maximum once every 2 seconds and the framerate is 10 then you need to set the track_move_wait value to 2 * 10 = 20 Only used for stepper motor tracking. Only used for stepper motor tracking. Requires a tracking camera type pwc Requires a tracking camera type pwc Only used for stepper motor tracking. Motion has special tracking options which use either a serial stepper motor controller, an iomojo smile cam or a Philips WebCam driver compatible pan/tilt camera such as the Logitech Quickcam Sphere or Orbit.

To disable tracking, set this to 0 and the other track options are ignored.

  • Value 1 is for the special Motion Tracking project using a stepper motor and a home made controller.
  • Value 2 is for the iomojo smilecam
  • Value 3 is for pwc type USB tracking cameras such as the Logitech Quickcam Sphere/Orbit which is driven by the pwc (Philips WebCam) driver. To use this camera your version of pwc must be at least 8.12.
  • Value 4 is the generic track type. Currently it has no other function than enabling some of the internal Motion features related to tracking. Eventually more functionality will be implemented for this type.
  • Value 5 is for uvcvideo type USB tracking cameras such as the Logitech Quickcam Sphere/Orbit MP (new Model) which is driven by the uvcvideo driver. This option was added in Motion 3.2.8.
Make sure to remove or comment out this option when running Motion under Linux. Supported values are

Value Name Short
0 V4L2_PIX_FMT_SN9C10X S910
1 V4L2_PIX_FMT_SBGGR16 BYR2
2 V4L2_PIX_FMT_SBGGR8 BA81
3 V4L2_PIX_FMT_SPCA561 S561
4 V4L2_PIX_FMT_SGBRG8 GBRG
5 V4L2_PIX_FMT_SGRBG8 GRBG
6 V4L2_PIX_FMT_PAC207 P207
7 V4L2_PIX_FMT_PJPG PJPG
8 V4L2_PIX_FMT_MJPEG MJPEG
9 V4L2_PIX_FMT_JPEG JPEG
10 V4L2_PIX_FMT_RGB24 RGB3
11 V4L2_PIX_FMT_SPCA501 S501
12 V4L2_PIX_FMT_SPCA505 S505
13 V4L2_PIX_FMT_SPCA508 S508
14 V4L2_PIX_FMT_UYVY UYVY
15 V4L2_PIX_FMT_YUYV YUYV
16 V4L2_PIX_FMT_YUV422P 422P
17 V4L2_PIX_FMT_YUV420 YU12
Using this you can view the results in real time. E.g. by using the program camstream.

Disable this option by not having it in the config file (or comment it out with "#" or ";") This is the video4linux device name. Ignore this for net cameras. Number can be defined by multiplying actual webcam rate by desired number of seconds. Actual webcam rate is the smallest of the numbers framerate and webcam_maxrate. By setting this to on, the webcam can only be accessed on the same machine on which Motion is running. Don't set 'webcam_maxrate' too high unless you only use it on the localhost or on an internal LAN. Use this option to save bandwidth when there is not anything important to see from the camera anyway.

Note that this feature was greatly improved from Motion version 3.2.2. Before 3.2.2 the option stopped the webcam stream except when Motion was detected. This made the feature not very useful because it made it difficult to connect to the webcam stream and most mjpeg viewers would timeout and give an error message. From 3.2.2 the feature has been greatly improved and actually quite recommendable. Note that each camera thread must have its own unique port number and it must also be different from the control_port number.

A good value to select is 8081 for camera 1, 8082 for camera 2, 8083 for camera 3 etc etc. The mjpeg stream consists of a header followed by jpeg frames separated by content-length and boundary string. The quality level defines the size of the individual jpeg pictures in the mjpeg stream. If you set it too high you need quite a high bandwidth to view the stream. By setting this to on, the control using http (browser) can only be accessed using login and password ( following the Basic Authentication defined in HTTP RFC ) The recommended value for most is "on" which means that you can navigate and control Motion with a normal browser. By setting this option to "off" the replies are in plain text which may be easier to parse for 3rd party programs that control Motion. By setting this to on, the control using http (browser) can only be accessed on the same machine on which Motion is running. This sets the TCP/IP port number to be used for control of motion using http (browser). Port numbers below 1024 normally requires that you have root privileges. Port 8080 is a fine choice of port to use for the purpose. Motion does not scale so should be set to the actual size of the v4l device.

In case of a net camera motion sets the height to the height of the first image read.

Motion actually set the size of the image coming from the video4linux device.

Your camera or capture/TV card will not support any picture size. You must know which frame size (width and height) the camera supports. If you do not know start with width 320 and height 240 which most cameras and capture cards supports.

For some device drivers like pwc (driver for Philips USB cameras) setting the size to a non-standard value makes the driver create an image of the nearest smaller size and create a gray band around the image to fit the size given by motion. Note that it is the driver and not motion that generates the gray band. Motion will try to detect motion in the entire image including the gray band.

Motion requires that dimensions of camera image must have both height and width that are a multiple of 16. Thís is normally not a problem. All standard sizes like 640, 480, 352, 320, 288, 240, ...etc are multiples of 16.

-- KennethLavrsen - 13 Apr 2005
Topic revision: r1 - 13 Apr 2005, KennethLavrsen
Copyright © 1999-2016 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Please do not email Kenneth for support questions (read why). Use the Support Requests page or join the Mailing List.
This website only use harmless session cookies. See Cookie Policy for details. By using this website you accept the use of these cookies.