mirror of
https://github.com/Motion-Project/motion.git
synced 2026-01-08 06:48:28 -05:00
5805 lines
264 KiB
HTML
5805 lines
264 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en-us">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<link href="motion.png" rel="icon" type="image/png">
|
|
<title>Motion</title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<link rel="stylesheet" type="text/css" href="motion_stylesheet.css" media="screen">
|
|
<script>
|
|
function fnc_topnav() {
|
|
var x = document.getElementById("id_topnav");
|
|
if (x.className === "topnav") {
|
|
x.className += " responsive";
|
|
} else {
|
|
x.className = "topnav";
|
|
}
|
|
}
|
|
function fnc_subnav() {
|
|
var x = document.getElementById("id_subnav");
|
|
if (x.className === "subnav") {
|
|
x.className += " responsive";
|
|
} else {
|
|
x.className = "subnav";
|
|
}
|
|
}
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<div class="topnav" id="id_topnav">
|
|
<img class="logoimg" src="motion.gif">
|
|
|
|
<a class="topnav-d" href="https://motion-project.github.io/motion_support.html">Support</a>
|
|
<a class="topnav-d" href="https://motion-project.github.io/motion_news.html" >News</a>
|
|
<a class="topnav-d" href="https://motion-project.github.io/motion_guide.html" >Documentation</a>
|
|
<a class="topnav-d" href="https://motion-project.github.io/motion_download.html">Download</a>
|
|
<a class="topnav-d" href="https://motion-project.github.io/index.html">Home</a>
|
|
|
|
<a class="topnav-m" href="https://motion-project.github.io/index.html">Home</a>
|
|
<a class="topnav-m" href="https://motion-project.github.io/motion_download.html">Download</a>
|
|
<a class="topnav-m" href="https://motion-project.github.io/motion_guide.html" >Documentation</a>
|
|
<a class="topnav-m" href="https://motion-project.github.io/motion_news.html" >News</a>
|
|
<a class="topnav-m" href="https://motion-project.github.io/motion_support.html">Support</a>
|
|
|
|
<a href="javascript:void(0);" class="icon" onclick="fnc_topnav()">☰</a>
|
|
</div>
|
|
|
|
<section class="page-header">
|
|
<h1>
|
|
Configuration
|
|
</h1>
|
|
</section>
|
|
|
|
<div class="subnav" id="id_subnav">
|
|
<div class="dropdown">
|
|
<button class="dropbtn">Basic Setup</button>
|
|
<div class="dropdown-content">
|
|
<a href="#top">General</a>
|
|
<a href="#basic_setup_v4l2">V4L2 Devices</a>
|
|
<a href="#basic_setup_network">Network Cameras</a>
|
|
<a href="#basic_setup_picam">Pi Camera</a>
|
|
<a href="#basic_setup_composite">Composite Cards</a>
|
|
<a href="#basic_setup_static">Static Files</a>
|
|
</div>
|
|
</div>
|
|
<div class="dropdown">
|
|
<button class="dropbtn">Commands/Files</button>
|
|
<div class="dropdown-content">
|
|
<a href="#commandlineoptions">Command Line</a>
|
|
<a href="#configfiles">Configuration Files </a>
|
|
<a href="#Signals_Sent">Signals</a>
|
|
</div>
|
|
</div>
|
|
<div class="dropdown">
|
|
<button class="dropbtn">Options-List</button>
|
|
<div class="dropdown-content">
|
|
<a href="#Configuration_OptionsAlpha" >Sorted alphabetically</a>
|
|
<a href="#Configuration_OptionsTopic" >Sorted by topic</a>
|
|
</div>
|
|
</div>
|
|
<div class="dropdown">
|
|
<button class="dropbtn">General/Cameras</button>
|
|
<div class="dropdown-content">
|
|
<a href="#OptTopic_System_Processing">System Processing</a>
|
|
<a href="#conversion_specifiers">Conversion Specifiers</a>
|
|
<a href="#OptTopic_Video4Linux_Devices">Video4Linux Devices</a>
|
|
<a href="#OptTopic_Network_Cameras">Network Cameras</a>
|
|
<a href="#OptTopic_Raspi_Cameras">Pi Cameras</a>
|
|
</div>
|
|
</div>
|
|
<div class="dropdown">
|
|
<button class="dropbtn">Processing/Output</button>
|
|
<div class="dropdown-content">
|
|
<a href="#OptTopic_Image_Processing">Image Processing</a>
|
|
<a href="#OptTopic_Motion_Detection">Motion Detection</a>
|
|
<a href="#OptTopic_Scripts">Script Execution</a>
|
|
<a href="#OptTopic_Pictures">Pictures</a>
|
|
<a href="#OptTopic_Movies">Movies</a>
|
|
<a href="#OptTopic_Pipe">Pipe Output</a>
|
|
</div>
|
|
</div>
|
|
<div class="dropdown">
|
|
<button class="dropbtn">Webcontrol/Streams</button>
|
|
<div class="dropdown-content">
|
|
<a href="#OptTopic_Webcontrol">Webcontrol</a>
|
|
<a href="#OptTopic_Stream">Live Stream</a>
|
|
<a href="#OptTopic_Database">Database Options</a>
|
|
<a href="#OptTopic_Tracking">Tracking Options</a>
|
|
</div>
|
|
</div>
|
|
|
|
<a href="javascript:void(0);" class="icon" onclick="fnc_subnav()">menu⇓   </a>
|
|
</div>
|
|
|
|
<section class="main-content">
|
|
<h2><a name="Basic_Setup"></a> Basic Setup </h2>
|
|
<ul>
|
|
<p></p>
|
|
Motion is able to process images from many different types of cameras. The following is brief overview
|
|
of the process to set up the Motion software.
|
|
<ul>
|
|
<li>Determine the type of camera
|
|
<ul>
|
|
<li> <a href="#basic_setup_v4l2" >v4l2 devices</a> which are most webcams</li>
|
|
<li> <a href="#basic_setup_composite" >Composite capture cards</a> </li>
|
|
<li> <a href="#basic_setup_network" >Network or IP cameras</a> </li>
|
|
<li> <a href="#basic_setup_picam" >The PI camera</a> </li>
|
|
<li> <a href="#basic_setup_static" >Static movie files</a>.
|
|
</ul>
|
|
<li>Specify the camera in the <a href="#configfiles" >configuration files</a>.</li>
|
|
<li>Start Motion from a terminal via the <a href="#commandlineoptions" >command line</a></li>
|
|
<li>Review the messages to ensure camera was found and press cntrl-c to exit</li>
|
|
<li>Specify a <a href="#target_dir" >target_dir</a> in the configuration file.</li>
|
|
<li>Enable the <a href="#OptDetail_Stream" >web stream</a> in the configuration file </li>
|
|
<ul>
|
|
<li> Specify a <a href="#stream_port" >stream_port</a></li>
|
|
<li> Optionally turn off <a href="#stream_localhost" >stream_localhost</a> if you want to view
|
|
the stream from a different computer</li>
|
|
</ul>
|
|
<li>Enable the <a href="#OptDetail_Webcontrol" >web control</a> in the configuration file </li>
|
|
<ul>
|
|
<li> Specify a <a href="#webcontrol_port" >webcontrol_port</a></li>
|
|
<li> Optionally turn off <a href="#webcontrol_localhost" >webcontrol_localhost</a> if you want to view
|
|
the webcontrol from a different computer</li>
|
|
<li> Specify which parameters to show on the webcontrol via <a href="#webcontrol_parms" >webcontrol_parms</a></li>
|
|
<li> Optionally specify a <a href="#stream_preview_method" >stream_preview_method</a></li>
|
|
</ul>
|
|
</ul>
|
|
The above should allow users to get Motion running and being able to view images via the stream. The
|
|
next steps refine and finish a basic setup.
|
|
<ul>
|
|
<li> Refine how the image is captured with the <a href="#OptTopic_Image_Processing" >image processing</a> parameters</li>
|
|
<li> Specify the <a href="#OptTopic_Motion_Detection" >motion detection</a> parameters</li>
|
|
<li>
|
|
<a href="#OptTopic_Scripts" >Execute scripts</a>, Save
|
|
<a href="#OptTopic_Pictures" >pictures</a> or
|
|
<a href="#OptTopic_Movies" >movies</a>.
|
|
</li>
|
|
</ul>
|
|
The most difficult step in the above process will be the motion detection settings and specifying them
|
|
to minimize the false positives. To assist this process, Motion provides the
|
|
<a href="#stream_preview_method" >stream_preview_method</a> option 3 which allows users to see side
|
|
by side images of where the motion is occurring next to the regular image.
|
|
<ul>
|
|
<li> Specify <a href="#stream_preview_method" >stream_preview_method 3</a></li>
|
|
<li> Specify <a href="#webcontrol_parms" >webcontrol_parms 2</a> </li>
|
|
<li> Start Motion and in a web browser navigate to the webcontrol port</li>
|
|
<li> Try adjusting the
|
|
<a href="#threshold" >threshold</a>,
|
|
<a href="#noise_level" >noise_level</a>,
|
|
<a href="#despeckle_filter" >despeckle_filter</a> and
|
|
<a href="#smart_mask_speed" >smart_mask_speed</a>
|
|
</li>
|
|
<li> Make sure to write configuration to file in order to save any changes.</li>
|
|
</ul>
|
|
Motion also includes a <a href="#setup_mode" >setup_mode</a> which provides more values reported
|
|
on the motion images and in the log to assist the setup.
|
|
<p></p>
|
|
The following are some additional topics which may be of interest during the initial setup.
|
|
<ul>
|
|
<li>Run automatically at start (Run as <a href="#basic_setup_service" >service</a>)</li>
|
|
<li>Remove depreciated parameters warnings (<a href="#config_depreciated" >Remove Depreciated</a>)</li>
|
|
<li>List/include all possible configuration parameters (<a href="#config_listall" >All parameters</a>)</li>
|
|
</ul>
|
|
<p></p>
|
|
<a name="basic_setup_v4l2"></a>
|
|
<strong>Video4linux devices</strong> must be installed per the requirements of the camera. It is
|
|
out of the scope of this document to tell you how to do this and it depends on which type of camera. Once
|
|
the camera is installed it will have the device name(s) of /dev/video0, /dev/video1, /dev/video2...
|
|
<p></p>
|
|
FreeBSD has a different naming scheme for pci devices that use the bktr subsystem. The bktr subsystem will report
|
|
devices using a naming scheme of /dev/bktr0, /dev/bktr1, etc. These device may also need to use the other
|
|
special device for the tuner. The tuner will need to be specified with the tunerdevice option as /dev/tuner0.
|
|
<p></p>
|
|
USB cameras take a lot of bandwidth. A USB camera connected to a USB2 port or hub consumes virtually
|
|
all the bandwidth that the port can handle. Even with a small framesize and low framerate you should not expect to have
|
|
more than one camera per USB controller. If you need more than one USB camera it is possible to add extra USB PCI cards
|
|
to your computer. It is also possible that your computer has more than one controller for different USB slots. For
|
|
example, if the computer has six USB ports, the three on the left may be on controller A versus the three on the right
|
|
may be on controller B. In this situation, connecting two cameras to ports only on the left would not work due to
|
|
excessive bandwidth. However connecting one camera to port on the right and the other to the port on the left
|
|
may work since they are on different controllers.
|
|
|
|
<p></p>
|
|
Motion permits the use of video cards that have discreet input channels. Since USB cameras do not have input channels,
|
|
the option <a href="#input" >input</a> must be set to the value -1 for USB cameras.
|
|
<p></p>
|
|
|
|
<a name="basic_setup_network"></a>
|
|
<strong>Network cameras</strong> are set up via the
|
|
<a href="#netcam_url" >netcam_url</a> parameter.
|
|
The latest versions of Motion support rtsp format which many cameras now stream. Some users have requested
|
|
a list of the network cameras that will work with Motion. Since Motion can now process RTSP streams, almost
|
|
all cameras are supported. Simply review the specifications of the camera and validate that
|
|
RTSP or RTMP is listed. The cameras that will not work are those specifically sold to be integrated into
|
|
proprietary software monitoring systems. When determining cameras, consider carefully before selecting a
|
|
wireless camera. Cameras require a solid consistent signal and use a lot of bandwidth. Inconsistencies in
|
|
the wireless signal can result in a poor user experience so the use of a hardwired camera is recommended.
|
|
<p></p>
|
|
The URL connection string to enter is specific to the camera and is
|
|
usually provided by the manufacturer. The connection string is the same as what would be used by other
|
|
video playing software such as VLC. If the camera does not stream via RTSP and instead uses a MJPEG, then Motion
|
|
can also view that format. See the option <a href="#netcam_url" >netcam_url</a> for
|
|
additional options.
|
|
<p></p>
|
|
|
|
<a name="basic_setup_picam"></a>
|
|
<strong>Raspberry Pi cameras</strong> can be set up two different ways. If Motion is installed by using the
|
|
apt packages (e.g. apt-get install motion), then the camera must be set up using the bcm2835-v4l2 module which creates
|
|
a v4l2 device for the camera. Users will need to install this module using the
|
|
command <code>sudo modprobe bcm2835-v4l2</code>. This
|
|
will set up the camera as a normal v4l2 device and it can be accessed via a standard /dev/videoX device. If Motion is
|
|
built from source or installed via the deb packages on the project release page, then an additional option is to set
|
|
up the camera using the <a href="#mmalcam_name" >mmalcam_name</a> parameter or using
|
|
the bcm2835-v4l2 module. <strong>When Motion is installed via apt, the mmalcam option is not available.</strong>
|
|
<p></p>
|
|
|
|
<a name="basic_setup_composite"></a>
|
|
<strong>Composite video cards</strong> are normally made with a chip called BT878 (older cards have a BT848). They
|
|
all use the Linux driver called 'bttv'.
|
|
<p></p>
|
|
There are cards with more then one video input but still only one BT878 chip. They have a video multiplexer which
|
|
input is selected with the config option <a href="#input" >input</a>. Input channel numbers start at 0
|
|
(which is why the value -1 and not 0 disables input selection). There are video capture cards available
|
|
with 4 or 8 inputs but only one chip. They present themselves as one single video device and
|
|
you select input using the 'input' option. If you define e.g. 4 camera config files with the
|
|
same video device name but different input numbers Motion automatically
|
|
goes into round robin mode.
|
|
<p></p>
|
|
Many TV tuner cards have the input channels: TV Tuner = 0, Standard composite video = 1, S-VHS = 3.
|
|
Others have TV=0, composite video 1= 1, composite video = 2, S-VHS = 3.
|
|
For video capture cards input 1 is normally the composite video input.
|
|
<p></p>
|
|
Some capture cards are specially made for surveillance with for example 4 inputs.
|
|
Others have a TV tuner, a composite input and perhaps also a S-Video input.
|
|
For all these cards the inputs are numbered. The numbering varies from card to card so the easiest
|
|
is to experiment with a program such as VLC that can show the video stream.
|
|
<p></p>
|
|
If you use the TV tuner input you also need to set the frequency of the TV channel using the
|
|
option <a href="#frequency" >frequency</a>. Otherwise
|
|
set <a href="#frequency" >frequency</a> to 0.
|
|
<p></p>
|
|
Finally you need to set the TV <a href="#norm" >norm</a>.
|
|
Values: 0 (PAL), 1 (NTSC), 2 (SECAM), 3 (PAL NC no colour). Default is 0 (PAL).
|
|
If your camera is a PAL black and white you may get a better result with norm=3 (PAL no colour).
|
|
<p></p>
|
|
|
|
<a name="basic_setup_static"></a>
|
|
<strong>Static files</strong> can also be processed by Motion in one of two ways. The first method
|
|
is by using the <a href="#netcam_url" >netcam_url</a> option and using a prefix of file:\\. With
|
|
this method, Motion will process the file at the speed specified by
|
|
<a href="#framerate" >framerate</a>. This allows the user to either speed up or slow down the video
|
|
processing to suit the particular need.
|
|
<p></p>
|
|
The second option for processing a static file requires a bit of additional setup and uses a
|
|
v4l2loopback device. To set this up, first install the loopback software as described in the
|
|
<a href="#OptDetail_Pipe" >Output - Pipe Options</a>
|
|
section of this guide to create a /dev/videoX device and then use software such as ffmpeg to stream
|
|
the static file into the v4l2 device. e.g.
|
|
<code> ffmpeg -re -i mymovie.mp4 -f v4l2 /dev/video0 </code> Then in a separate terminal, start Motion
|
|
with it set to use the <code>/dev/video0</code> device as input. This method can can also be used to
|
|
reformat the content to a different format. The following outputs the original movie into a gray pixel format.
|
|
<code> ffmpeg -re -i mymovie.mp4 -f v4l2 -pix_fmt gray /dev/video0 </code>
|
|
This can be helpful as a interim process where ffmpeg supports a particular input but that format is not yet supported
|
|
by Motion.
|
|
|
|
<p></p>
|
|
<a name="basic_setup_service"></a>
|
|
<strong>Run as Service</strong>
|
|
<p></p>
|
|
The following instructions are only applicable to Debian and Ubuntu based systems. For other distributions, users
|
|
should consult their distribution documentation and provide pull requests to the Motion developers so that this
|
|
section can be updated with their distribution.
|
|
<p></p>
|
|
Motion can be set up to run as a service which means that it will start automatically whenever the computer
|
|
is started. When Motion is installed from apt or from a deb file, default files are installed which can be
|
|
easily modified so that Motion starts as a service. If Motion is built directly from source and installed,
|
|
then these additional files will need to be copied, modified and installed manually from the source and packaging
|
|
repositories.
|
|
<p></p>
|
|
When setting up Motion to run as a service, it should be done only after all the other configuration
|
|
has been completed. It is much easier to edit and revise the parameters when Motion is just running
|
|
in a terminal rather than as a service.
|
|
<p></p>
|
|
To set up to run as a service, first edit the file <code>/etc/default/motion</code> and revise the line
|
|
to indicate <code>start_motion_daemon=yes</code>.
|
|
Next, edit the main motion.conf file and specify <a href="#daemon" >daemon</a> as <code>on</code>
|
|
When the computer is restarted, Motion should now be running. The following commands control
|
|
the Motion service.
|
|
<ul>
|
|
<li>Start the Motion service<code>sudo service motion start</code></li>
|
|
<li>Stop the Motion service<code>sudo service motion stop</code></li>
|
|
<li>Restart the Motion service<code>sudo service motion restart</code></li>
|
|
</ul>
|
|
<p></p>
|
|
When running as a service, Motion runs as the user <code>motion</code> and this user is automatically
|
|
added to the user group of <code>video</code>. By only be included in this user group, when Motion is
|
|
run, it will only have limited permissions. It is NOT recommended that this user get added to the
|
|
<code>sudo</code> group. Instead, only add this user to groups that are specifically required.
|
|
<p></p>
|
|
On newer distributions, the above method of running a service is depreciated (but still functional) in
|
|
favor of the systemctl method. Since this is not available on all the distributions which Motion is
|
|
deployed, the above method is retained. Once systemctl is available on all the deployed versions, Motion
|
|
will transition to systemctl as the service method. For users that wish to systemctl rather than the above
|
|
method, a <code>motion.system</code> file is included in the source code.
|
|
<p></p>
|
|
For users that are building and installing from source without a deb file, the file <code>motion.init-Debian</code>
|
|
will need to be copied from the examples directory or from the source directory. It will need to be renamed and put
|
|
into <code>/etc/init.d/motion</code>. Ensure that it is also marked as executable and has root ownership. Next,
|
|
create the file <code>/etc/default/motion</code> with the entry as specified above. Finally, create the
|
|
<code>motion</code> user as needed. The scripts that create the groups and users when using
|
|
the deb packages can be used as a model. These scripts can be reviewed in the motion-packaging repo, within the
|
|
debian directory, motion.postinst (e.g. <code>motion-packaging/debian/motion.postinst</code>
|
|
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<h2><a name="commandlineoptions"></a> Command Line Options </h2>
|
|
<ul>
|
|
<p></p>
|
|
SYNOPSIS
|
|
<code>motion [ -hbnsm ] [ -c config file path ] [ -d level ] [ -k level ] [ -p pid_file ] [ -l log_file ]</code>
|
|
<p></p>
|
|
<ul>
|
|
<li>-c : Full path and filename of config file.</li>
|
|
<li>-h : Show help screen</li>
|
|
<li>-b : Run in daemon mode</li>
|
|
<li>-n : Run in non-daemon mode</li>
|
|
<li>-s : Run in setup mode. Also forces non-daemon mode.</li>
|
|
<li>-d : Run with message log level 1 - 9</li>
|
|
<li>-k : Run with message log type 1 - 9</li>
|
|
<li>-l : Full path and file name for log file</li>
|
|
<li>-p : Full path and file name for the process id file</li>
|
|
<li>-m : Start in pause mode</li>
|
|
</ul>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<h2><a name="configfiles"></a> The Configuration Files </h2>
|
|
<ul>
|
|
<p></p>
|
|
If Motion was invoked with command line option <code>-c pathname</code> Motion will expect the config file to
|
|
be as specified. When you specify the config file on the command line with -c you can call it anything.
|
|
|
|
<p></p>
|
|
If you do not specify -c or the filename you give Motion does not exist, Motion will search for the
|
|
configuration file called 'motion.conf' in the following order:
|
|
|
|
<p></p>
|
|
<ol>
|
|
<li> Current directory from where motion was invoked</li>
|
|
<li> Then in a directory called '.motion' in the current users home directory (shell environment
|
|
variable $HOME). E.g. /home/goofy/.motion/motion.conf</li>
|
|
<li> The directory defined by the --sysconfdir=DIR when running .configure during installation of
|
|
Motion<br />(If this option was not defined the default is /etc/motion)</li>
|
|
</ol>
|
|
If you have write access to /usr/local/etc/motion then the editor recommends having only one motion.conf file
|
|
in the default /usr/local/etc/motion directory.
|
|
|
|
<p></p>
|
|
Motion has a configuration file in the distribution package called motion-dist.conf. When you run 'make install' this
|
|
file gets copied to the /usr/local/etc/motion directory.
|
|
|
|
<p></p>
|
|
The configuration file needs to be renamed from motion-dist.conf to motion.conf. The original file is called
|
|
motion-dist.conf so that your working motion.conf file does not accidentally get overwritten when
|
|
you re-install or upgrade to a newer version of Motion.
|
|
|
|
<p></p>
|
|
If you have more than one camera you should not try and invoke Motion more times. Motion is made to work with
|
|
more than one camera at the same time. The motion.conf file establishes global parameters that apply to all
|
|
cameras and separate camera.conf files that specify the parameters that apply to
|
|
each specific camera. The camera.conf files are specified at the bottom of the motion.conf file. If you only
|
|
have one camera you only need the motion.conf file but if you have more than one camera, then you will
|
|
need to have
|
|
<strong>one camera config file per camera</strong> plus the motion.conf file.
|
|
|
|
<p></p>
|
|
If you have for example two cameras you need motion.conf
|
|
<strong>and two</strong> camera config files. So a total of <strong>three</strong> config files.
|
|
|
|
<p></p>
|
|
An option that is common to all cameras can be placed in motion.conf. (You can also put all parameters in the
|
|
camera files but that makes a lot of editing when you change a common thing).
|
|
|
|
<p></p>
|
|
An option that is unique to a camera must be specified in each camera file.
|
|
|
|
<p></p>
|
|
The first camera is defined in the first camera file called from motion.conf. The 2nd camera is defined in the
|
|
2nd camera file called from motion.conf etc.
|
|
|
|
<p></p>
|
|
Any option defined in motion.conf will be used for all cameras except for the cameras in which the same option
|
|
is defined in a camera config file.
|
|
|
|
<p></p>
|
|
To make it clear, the camera files format and syntax is the same as motion.conf. An example of what you might want
|
|
in a camera file as follows: assume you have two cameras, attached to one system. Create files camera0.conf and
|
|
camera1.conf. At the end of motion.conf, uncomment out the lines that refer to them. The full contents of the
|
|
camera files can be as simple as
|
|
<p></p>
|
|
<p></p>
|
|
camera0.conf:
|
|
<br /><code> videodevice /dev/video0</code>
|
|
<p></p>
|
|
<p></p>
|
|
camera1.conf:
|
|
<br /><code> videodevice /dev/video1</code>
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
Motion reads its configuration parameters in the following sequence. If the same
|
|
parameter exists more than one place <strong>the last one read wins</strong>
|
|
<ol>
|
|
<li> Motion reads the configuration file motion.conf from the beginning of the file going down line by line.</li>
|
|
<li> If the option "camera" is defined in motion.conf, the camera configuration file(s) is/(are) read.</li>
|
|
<li> Motion continues reading the rest of the motion.conf file. Any options from here will overrule the same
|
|
option previously defines in a camera config file.</li>
|
|
<li> Motion reads the command line option again overruling any previously defined options.</li>
|
|
</ol>
|
|
So always call the camera config files in the end of the motion.conf file. If you define options in motion.conf
|
|
AFTER the camera file calls, the same options in the camera files will never be used. So always put the camera
|
|
file call at the end of motion.conf.
|
|
|
|
<p></p>
|
|
Nearly all config options can be unique for a specific camera and placed in a camera config file.
|
|
There are a few options that must be in motion.conf and cannot be in a camera config
|
|
file: webcontrol_* , daemon, and camera.
|
|
|
|
<p></p>
|
|
If motion is built without specific features such as ffmpeg, mysql etc it will ignore the options that
|
|
belong to those features.
|
|
|
|
<p></p>
|
|
<a name="config_depreciated"></a>
|
|
<p></p>
|
|
<strong>Depreciated Parameters</strong>
|
|
<p></p>
|
|
Over the years, Motion has added many new configuration parameters and changed the name
|
|
of a few of them so that there is some consistency to the parameter names. Since version
|
|
3.4.1, when a configuration parameter has a new name or additional functionality, Motion will
|
|
try to interpret the value specified for the old parameter and translate it to the new parameter.
|
|
These translations will be reported in the log as Motion is started. To eliminate these warnings,
|
|
ensure that a <a href="#webcontrol_port" >webcontrol_port</a> is specified and that the
|
|
<a href="#webcontrol_interface" >webcontrol_interface</a> is specified as 0 (or not listed). Then start
|
|
motion, open a browser and navigate to the webcontrol port. When on that page, select
|
|
<code>write configuration</code>. This will re-write the configuration files with all the current
|
|
parameters to Motion. Note that depending upon where the configuration files are located, Motion
|
|
may need to be started using <code>sudo</code>.
|
|
|
|
<p></p>
|
|
<a name="config_listall"></a>
|
|
<p></p>
|
|
<strong>Parameters in distributed configuration files</strong>
|
|
<p></p>
|
|
As of this writing, Motion includes over 150 parameters. With this volume of parameters, navigating
|
|
the configuration file with every possible has become onerous. Starting with version 4.2, the distributed
|
|
configuration files only include a limited subset of the configuration parameters. Users can add to the
|
|
files as needed the parameters that are applicable to their set up. Users that wish to have every parameter
|
|
listed and included in the configuration file can follow the process described immediately above in
|
|
the <a href="#config_depreciated" >Remove Depreciated</a> section.
|
|
i.e. Use the webcontrol interface to write out the configuration file.
|
|
<p></p>
|
|
Extended descriptions / documentation are not included in the configuration file. This guide
|
|
should be consulted for documentation of the configuration parameters.
|
|
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<h2><a name="Signals_Sent"></a> Signals (sent with e.g. kill command) </h2>
|
|
<ul>
|
|
<p></p>
|
|
A signal can be sent from the command line by typing
|
|
e.g. <code>kill -s SIGHUP pid</code>, where the last parameter is the process ID which
|
|
you get by typing <code>ps -ef ¦ grep motion</code>. The PID is the first on the
|
|
list which is the parent process for the threads.
|
|
Motion responds to the following signals:
|
|
<p></p>
|
|
<div class="tblsignal">
|
|
<table border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="30%">
|
|
<col width="30%">
|
|
<col width="30%">
|
|
</colgroup>
|
|
<thead >
|
|
<tr >
|
|
<th bgcolor="#edf4f9" word-wrap:break-word > Signal </th>
|
|
<th bgcolor="#edf4f9" word-wrap:break-word > Description </th>
|
|
<th bgcolor="#edf4f9" word-wrap:break-word > Editors comment </th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" word-wrap:break-word > SIGHUP </td>
|
|
<td bgcolor="#edf4f9" word-wrap:break-word > The config file will be reread. </td>
|
|
<td bgcolor="#edf4f9" word-wrap:break-word > This is a very useful signal when you experiment with settings in the config file. </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" word-wrap:break-word > SIGTERM </td>
|
|
<td bgcolor="#edf4f9" word-wrap:break-word > If needed motion will create an movie file of the last event and exit </td>
|
|
<td bgcolor="#edf4f9" word-wrap:break-word > </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" word-wrap:break-word > SIGUSR1 </td>
|
|
<td bgcolor="#edf4f9" word-wrap:break-word > Motion will create an movie file of the current event. </td>
|
|
<td bgcolor="#edf4f9" word-wrap:break-word > </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<h2><a name="Configuration_OptionsAlpha"></a> Configuration Options-Listed Alphabetically </h2>
|
|
<ul>
|
|
<p></p>
|
|
These are the options that can be used in the config file.
|
|
<p></p>
|
|
All number values are integer numbers (no decimals allowed). Boolean options can be on or off.
|
|
<p></p>
|
|
Some configuration options are only used if Motion is built on a system that has the matching software libraries installed (MySQL, PostgreSQL, SQLite, FFMPEG, etc).
|
|
<p></p>
|
|
<p></p>
|
|
<style>
|
|
@media screen and (max-width: 48em) {
|
|
.tblalpha td:nth-of-type(1):before {content: "v3.2"; padding-right: 10px;}
|
|
.tblalpha td:nth-of-type(2):before {content: "v4.0"; padding-right: 10px;}
|
|
.tblalpha td:nth-of-type(3):before {content: "v4.1"; padding-right: 10px;}
|
|
.tblalpha td:nth-of-type(4):before {content: "Cur."; padding-right: 10px;}
|
|
}
|
|
</style>
|
|
<div class="tblalpha">
|
|
<table cellspacing="0" border="0">
|
|
<colgroup width="15%"></colgroup>
|
|
<colgroup width="25%"></colgroup>
|
|
<colgroup width="25%"></colgroup>
|
|
<colgroup width="25%"></colgroup>
|
|
<tr>
|
|
<td align="left"><b>Version 3.2</b></td>
|
|
<td align="left"><b>Version 4.0</b></td>
|
|
<td align="left"><b>Version 4.1</b></td>
|
|
<td align="left"><b>Current Version</b></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">area_detect</td>
|
|
<td align="left">area_detect</td>
|
|
<td align="left">area_detect</td>
|
|
<td align="left"><a href="#area_detect" >area_detect</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td height="17" align="left">auto_brightness</td>
|
|
<td align="left">auto_brightness</td>
|
|
<td align="left">auto_brightness</td>
|
|
<td align="left"><a href="#auto_brightness" >auto_brightness</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">thread</td>
|
|
<td align="left">camera</td>
|
|
<td align="left">camera</td>
|
|
<td align="left"><a href="#camera" >camera</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">camera_dir</td>
|
|
<td align="left">camera_dir</td>
|
|
<td align="left"><a href="#camera_dir" >camera_dir</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">camera_id</td>
|
|
<td align="left">camera_id</td>
|
|
<td align="left"><a href="#camera_id" >camera_id</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">camera_name</td>
|
|
<td align="left">camera_name</td>
|
|
<td align="left"><a href="#camera_name" >camera_name</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">daemon</td>
|
|
<td align="left">daemon</td>
|
|
<td align="left">daemon</td>
|
|
<td align="left"><a href="#daemon" >daemon</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">database_busy_timeout</td>
|
|
<td align="left">database_busy_timeout</td>
|
|
<td align="left"><a href="#database_busy_timeout" >database_busy_timeout</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">mysql_db</td>
|
|
<td align="left">database_dbname</td>
|
|
<td align="left">database_dbname</td>
|
|
<td align="left"><a href="#database_dbname" >database_dbname</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">pgsql_db</td>
|
|
<td align="left">database_dbname</td>
|
|
<td align="left">database_dbname</td>
|
|
<td align="left"><a href="#database_dbname" >database_dbname</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">mysql_host</td>
|
|
<td align="left">database_host</td>
|
|
<td align="left">database_host</td>
|
|
<td align="left"><a href="#database_host" >database_host</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">pgsql_host</td>
|
|
<td align="left">database_host</td>
|
|
<td align="left">database_host</td>
|
|
<td align="left"><a href="#database_host" >database_host</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">mysql_password</td>
|
|
<td align="left">database_password</td>
|
|
<td align="left">database_password</td>
|
|
<td align="left"><a href="#database_password" >database_password</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">pgsql_password</td>
|
|
<td align="left">database_password</td>
|
|
<td align="left">database_password</td>
|
|
<td align="left"><a href="#database_password" >database_password</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">pgsql_port</td>
|
|
<td align="left">database_port</td>
|
|
<td align="left">database_port</td>
|
|
<td align="left"><a href="#database_port" >database_port</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">database_type</td>
|
|
<td align="left">database_type</td>
|
|
<td align="left"><a href="#database_type" >database_type</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">mysql_user</td>
|
|
<td align="left">database_user</td>
|
|
<td align="left">database_user</td>
|
|
<td align="left"><a href="#database_user" >database_user</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">pgsql_user</td>
|
|
<td align="left">database_user</td>
|
|
<td align="left">database_user</td>
|
|
<td align="left"><a href="#database_user" >database_user</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">despeckle</td>
|
|
<td align="left">despeckle_filter</td>
|
|
<td align="left">despeckle_filter</td>
|
|
<td align="left"><a href="#despeckle_filter" >despeckle_filter</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">output_all</td>
|
|
<td align="left">emulate_motion</td>
|
|
<td align="left">emulate_motion</td>
|
|
<td align="left"><a href="#emulate_motion" >emulate_motion</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">gap</td>
|
|
<td align="left">event_gap</td>
|
|
<td align="left">event_gap</td>
|
|
<td align="left"><a href="#event_gap" >event_gap</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left">flip_axis</td>
|
|
<td align="left"><a href="#flip_axis" >flip_axis</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">framerate</td>
|
|
<td align="left">framerate</td>
|
|
<td align="left">framerate</td>
|
|
<td align="left"><a href="#framerate" >framerate</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">frequency</td>
|
|
<td align="left">frequency</td>
|
|
<td align="left">frequency</td>
|
|
<td align="left"><a href="#frequency" >frequency</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">height</td>
|
|
<td align="left">height</td>
|
|
<td align="left">height</td>
|
|
<td align="left"><a href="#height" >height</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">input</td>
|
|
<td align="left">input</td>
|
|
<td align="left">input</td>
|
|
<td align="left"><a href="#input" >input</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#lightswitch_frames" >lightswitch_frames</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">lightswitch</td>
|
|
<td align="left">lightswitch</td>
|
|
<td align="left">lightswitch</td>
|
|
<td align="left"><a href="#lightswitch_percent" >lightswitch_percent</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">locate</td>
|
|
<td align="left">locate_motion_mode</td>
|
|
<td align="left">locate_motion_mode</td>
|
|
<td align="left"><a href="#locate_motion_mode" >locate_motion_mode</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">locate_motion_style</td>
|
|
<td align="left">locate_motion_style</td>
|
|
<td align="left"><a href="#locate_motion_style" >locate_motion_style</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">logfile</td>
|
|
<td align="left">logfile</td>
|
|
<td align="left"><a href="#log_file" >log_file</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">log_level</td>
|
|
<td align="left">log_level</td>
|
|
<td align="left"><a href="#log_level" >log_level</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">log_type</td>
|
|
<td align="left">log_type</td>
|
|
<td align="left"><a href="#log_type" >log_type</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">mask_file</td>
|
|
<td align="left">mask_file</td>
|
|
<td align="left">mask_file</td>
|
|
<td align="left"><a href="#mask_file" >mask_file</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left">mask_privacy</td>
|
|
<td align="left"><a href="#mask_privacy" >mask_privacy</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">minimum_frame_time</td>
|
|
<td align="left">minimum_frame_time</td>
|
|
<td align="left">minimum_frame_time</td>
|
|
<td align="left"><a href="#minimum_frame_time" >minimum_frame_time</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">minimum_motion_frames</td>
|
|
<td align="left">minimum_motion_frames</td>
|
|
<td align="left">minimum_motion_frames</td>
|
|
<td align="left"><a href="#minimum_motion_frames" >minimum_motion_frames</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">mmalcam_control_params</td>
|
|
<td align="left">mmalcam_control_params</td>
|
|
<td align="left"><a href="#mmalcam_control_params" >mmalcam_control_params</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">mmalcam_name</td>
|
|
<td align="left">mmalcam_name</td>
|
|
<td align="left"><a href="#mmalcam_name" >mmalcam_name</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">ffmpeg_bps</td>
|
|
<td align="left">ffmpeg_bps</td>
|
|
<td align="left">ffmpeg_bps</td>
|
|
<td align="left"><a href="#movie_bps" >movie_bps</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">ffmpeg_video_codec</td>
|
|
<td align="left">ffmpeg_video_codec</td>
|
|
<td align="left">ffmpeg_video_codec</td>
|
|
<td align="left"><a href="#movie_codec" >movie_codec</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">ffmpeg_duplicate_frames</td>
|
|
<td align="left">ffmpeg_duplicate_frames</td>
|
|
<td align="left"><a href="#movie_duplicate_frames" >movie_duplicate_frames</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">extpipe</td>
|
|
<td align="left">extpipe</td>
|
|
<td align="left"><a href="#movie_extpipe" >movie_extpipe</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">use_extpipe</td>
|
|
<td align="left">use_extpipe</td>
|
|
<td align="left"><a href="#movie_extpipe_use" >movie_extpipe_use</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">movie_filename</td>
|
|
<td align="left">movie_filename</td>
|
|
<td align="left">movie_filename</td>
|
|
<td align="left"><a href="#movie_filename" >movie_filename</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">max_mpeg_time</td>
|
|
<td align="left">max_movie_time</td>
|
|
<td align="left">max_movie_time</td>
|
|
<td align="left"><a href="#movie_max_time" >movie_max_time</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">ffmpeg_cap_new</td>
|
|
<td align="left">ffmpeg_output_movies</td>
|
|
<td align="left">ffmpeg_output_movies</td>
|
|
<td align="left"><a href="#movie_output" >movie_output</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">ffmpeg_cap_motion</td>
|
|
<td align="left">ffmpeg_output_debug_movies</td>
|
|
<td align="left">ffmpeg_output_debug_movies</td>
|
|
<td align="left"><a href="#movie_output_motion" >movie_output_motion</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#movie_passthrough" >movie_passthrough</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">ffmpeg_variable_bitrate</td>
|
|
<td align="left">ffmpeg_variable_bitrate</td>
|
|
<td align="left">ffmpeg_variable_bitrate</td>
|
|
<td align="left"><a href="#movie_quality" >movie_quality</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#native_language" >native_language</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left">netcam_highres</td>
|
|
<td align="left"><a href="#netcam_highres" >netcam_highres</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">netcam_keepalive</td>
|
|
<td align="left">netcam_keepalive</td>
|
|
<td align="left">netcam_keepalive</td>
|
|
<td align="left"><a href="#netcam_keepalive" >netcam_keepalive</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">netcam_proxy</td>
|
|
<td align="left">netcam_proxy</td>
|
|
<td align="left">netcam_proxy</td>
|
|
<td align="left"><a href="#netcam_proxy" >netcam_proxy</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">netcam_tolerant_check</td>
|
|
<td align="left">netcam_tolerant_check</td>
|
|
<td align="left">netcam_tolerant_check</td>
|
|
<td align="left"><a href="#netcam_tolerant_check" >netcam_tolerant_check</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">netcam_url</td>
|
|
<td align="left">netcam_url</td>
|
|
<td align="left">netcam_url</td>
|
|
<td align="left"><a href="#netcam_url" >netcam_url</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">rtsp_uses_tcp</td>
|
|
<td align="left">rtsp_uses_tcp</td>
|
|
<td align="left"><a href="#netcam_use_tcp" >netcam_use_tcp</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">netcam_userpass</td>
|
|
<td align="left">netcam_userpass</td>
|
|
<td align="left">netcam_userpass</td>
|
|
<td align="left"><a href="#netcam_userpass" >netcam_userpass</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">noise_level</td>
|
|
<td align="left">noise_level</td>
|
|
<td align="left">noise_level</td>
|
|
<td align="left"><a href="#noise_level" >noise_level</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">noise_tune</td>
|
|
<td align="left">noise_tune</td>
|
|
<td align="left">noise_tune</td>
|
|
<td align="left"><a href="#noise_tune" >noise_tune</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">norm</td>
|
|
<td align="left">norm</td>
|
|
<td align="left">norm</td>
|
|
<td align="left"><a href="#norm" >norm</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">on_area_detected</td>
|
|
<td align="left">on_area_detected</td>
|
|
<td align="left">on_area_detected</td>
|
|
<td align="left"><a href="#on_area_detected" >on_area_detected</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left">on_camera_found</td>
|
|
<td align="left"><a href="#on_camera_found" >on_camera_found</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">on_camera_lost</td>
|
|
<td align="left">on_camera_lost</td>
|
|
<td align="left">on_camera_lost</td>
|
|
<td align="left"><a href="#on_camera_lost" >on_camera_lost</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">on_event_end</td>
|
|
<td align="left">on_event_end</td>
|
|
<td align="left">on_event_end</td>
|
|
<td align="left"><a href="#on_event_end" >on_event_end</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">on_event_start</td>
|
|
<td align="left">on_event_start</td>
|
|
<td align="left">on_event_start</td>
|
|
<td align="left"><a href="#on_event_start" >on_event_start</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">on_motion_detected</td>
|
|
<td align="left">on_motion_detected</td>
|
|
<td align="left">on_motion_detected</td>
|
|
<td align="left"><a href="#on_motion_detected" >on_motion_detected</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">on_movie_end</td>
|
|
<td align="left">on_movie_end</td>
|
|
<td align="left">on_movie_end</td>
|
|
<td align="left"><a href="#on_movie_end" >on_movie_end</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">on_movie_start</td>
|
|
<td align="left">on_movie_start</td>
|
|
<td align="left">on_movie_start</td>
|
|
<td align="left"><a href="#on_movie_start" >on_movie_start</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">on_picture_save</td>
|
|
<td align="left">on_picture_save</td>
|
|
<td align="left">on_picture_save</td>
|
|
<td align="left"><a href="#on_picture_save" >on_picture_save</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">exif_text</td>
|
|
<td align="left">exif_text</td>
|
|
<td align="left"><a href="#picture_exif" >picture_exif</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">output_normal</td>
|
|
<td align="left">output_pictures</td>
|
|
<td align="left">output_pictures</td>
|
|
<td align="left"><a href="#picture_output" >picture_output</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">output_motion</td>
|
|
<td align="left">output_debug_pictures</td>
|
|
<td align="left">output_debug_pictures</td>
|
|
<td align="left"><a href="#picture_output_motion" >picture_output_motion</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">jpeg_filename</td>
|
|
<td align="left">picture_filename</td>
|
|
<td align="left">picture_filename</td>
|
|
<td align="left"><a href="#picture_filename" >picture_filename</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">ppm</td>
|
|
<td align="left">picture_type</td>
|
|
<td align="left">picture_type</td>
|
|
<td align="left"><a href="#picture_type" >picture_type</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">quality</td>
|
|
<td align="left">quality</td>
|
|
<td align="left">quality</td>
|
|
<td align="left"><a href="#picture_quality" >picture_quality</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">process_id_file</td>
|
|
<td align="left">process_id_file</td>
|
|
<td align="left">process_id_file</td>
|
|
<td align="left"><a href="#pid_file" >pid_file</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">post_capture</td>
|
|
<td align="left">post_capture</td>
|
|
<td align="left">post_capture</td>
|
|
<td align="left"><a href="#post_capture" >post_capture</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">pre_capture</td>
|
|
<td align="left">pre_capture</td>
|
|
<td align="left">pre_capture</td>
|
|
<td align="left"><a href="#pre_capture" >pre_capture</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">quiet</td>
|
|
<td align="left">quiet</td>
|
|
<td align="left">quiet</td>
|
|
<td align="left"><a href="#quiet" >quiet</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">rotate</td>
|
|
<td align="left">rotate</td>
|
|
<td align="left">rotate</td>
|
|
<td align="left"><a href="#rotate" >rotate</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">roundrobin_frames</td>
|
|
<td align="left">roundrobin_frames</td>
|
|
<td align="left">roundrobin_frames</td>
|
|
<td align="left"><a href="#roundrobin_frames" >roundrobin_frames</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">roundrobin_skip</td>
|
|
<td align="left">roundrobin_skip</td>
|
|
<td align="left">roundrobin_skip</td>
|
|
<td align="left"><a href="#roundrobin_skip" >roundrobin_skip</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">switchfilter</td>
|
|
<td align="left">switchfilter</td>
|
|
<td align="left">switchfilter</td>
|
|
<td align="left"><a href="#roundrobin_switchfilter" >roundrobin_switchfilter</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">setup_mode</td>
|
|
<td align="left">setup_mode</td>
|
|
<td align="left">setup_mode</td>
|
|
<td align="left"><a href="#setup_mode" >setup_mode</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">smart_mask_speed</td>
|
|
<td align="left">smart_mask_speed</td>
|
|
<td align="left">smart_mask_speed</td>
|
|
<td align="left"><a href="#smart_mask_speed" >smart_mask_speed</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">snapshot_filename</td>
|
|
<td align="left">snapshot_filename</td>
|
|
<td align="left">snapshot_filename</td>
|
|
<td align="left"><a href="#snapshot_filename" >snapshot_filename</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">snapshot_interval</td>
|
|
<td align="left">snapshot_interval</td>
|
|
<td align="left">snapshot_interval</td>
|
|
<td align="left"><a href="#snapshot_interval" >snapshot_interval</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">sql_log_mpeg</td>
|
|
<td align="left">sql_log_movie</td>
|
|
<td align="left">sql_log_movie</td>
|
|
<td align="left"><a href="#sql_log_movie" >sql_log_movie</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">sql_log_image</td>
|
|
<td align="left">sql_log_picture</td>
|
|
<td align="left">sql_log_picture</td>
|
|
<td align="left"><a href="#sql_log_picture" >sql_log_picture</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">sql_log_snapshot</td>
|
|
<td align="left">sql_log_snapshot</td>
|
|
<td align="left">sql_log_snapshot</td>
|
|
<td align="left"><a href="#sql_log_snapshot" >sql_log_snapshot</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">sql_log_timelapse</td>
|
|
<td align="left">sql_log_timelapse</td>
|
|
<td align="left">sql_log_timelapse</td>
|
|
<td align="left"><a href="#sql_log_timelapse" >sql_log_timelapse</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">sql_query</td>
|
|
<td align="left">sql_query</td>
|
|
<td align="left">sql_query</td>
|
|
<td align="left"><a href="#sql_query" >sql_query</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left">sql_query_start</td>
|
|
<td align="left"><a href="#sql_query_start" >sql_query_start</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#sql_query_stop" >sql_query_stop</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">stream_auth_method</td>
|
|
<td align="left">stream_auth_method</td>
|
|
<td align="left"><a href="#stream_auth_method" >stream_auth_method</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">stream_authentication</td>
|
|
<td align="left">stream_authentication</td>
|
|
<td align="left"><a href="#stream_authentication" >stream_authentication</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#stream_cors_header" >stream_cors_header</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#stream_grey" >stream_grey</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">webcam_localhost</td>
|
|
<td align="left">stream_localhost</td>
|
|
<td align="left">stream_localhost</td>
|
|
<td align="left"><a href="#stream_localhost" >stream_localhost</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">webcam_maxrate</td>
|
|
<td align="left">stream_maxrate</td>
|
|
<td align="left">stream_maxrate</td>
|
|
<td align="left"><a href="#stream_maxrate" >stream_maxrate</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">webcam_motion</td>
|
|
<td align="left">stream_motion</td>
|
|
<td align="left">stream_motion</td>
|
|
<td align="left"><a href="#stream_motion" >stream_motion</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">webcam_port</td>
|
|
<td align="left">stream_port</td>
|
|
<td align="left">stream_port</td>
|
|
<td align="left"><a href="#stream_port" >stream_port</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#stream_preview_method" >stream_preview_method</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">stream_preview_newline</td>
|
|
<td align="left">stream_preview_newline</td>
|
|
<td align="left"><a href="#stream_preview_newline" >stream_preview_newline</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">stream_preview_scale</td>
|
|
<td align="left">stream_preview_scale</td>
|
|
<td align="left"><a href="#stream_preview_scale" >stream_preview_scale</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">webcam_quality</td>
|
|
<td align="left">stream_quality</td>
|
|
<td align="left">stream_quality</td>
|
|
<td align="left"><a href="#stream_quality" >stream_quality</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#stream_tls" >stream_tls</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">target_dir</td>
|
|
<td align="left">target_dir</td>
|
|
<td align="left">target_dir</td>
|
|
<td align="left"><a href="#target_dir" >target_dir</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">text_changes</td>
|
|
<td align="left">text_changes</td>
|
|
<td align="left">text_changes</td>
|
|
<td align="left"><a href="#text_changes" >text_changes</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">text_event</td>
|
|
<td align="left">text_event</td>
|
|
<td align="left">text_event</td>
|
|
<td align="left"><a href="#text_event" >text_event</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">text_left</td>
|
|
<td align="left">text_left</td>
|
|
<td align="left">text_left</td>
|
|
<td align="left"><a href="#text_left" >text_left</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">text_right</td>
|
|
<td align="left">text_right</td>
|
|
<td align="left">text_right</td>
|
|
<td align="left"><a href="#text_right" >text_right</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">text_double</td>
|
|
<td align="left">text_double</td>
|
|
<td align="left">text_double</td>
|
|
<td align="left"><a href="#text_scale" >text_scale</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">threshold</td>
|
|
<td align="left">threshold</td>
|
|
<td align="left">threshold</td>
|
|
<td align="left"><a href="#threshold" >threshold</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#threshold_maximum" >threshold_maximum</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">threshold_tune</td>
|
|
<td align="left">threshold_tune</td>
|
|
<td align="left">threshold_tune</td>
|
|
<td align="left"><a href="#threshold_tune" >threshold_tune</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">ffmpeg_video_codec</td>
|
|
<td align="left">ffmpeg_video_codec</td>
|
|
<td align="left">timelapse_codec</td>
|
|
<td align="left"><a href="#timelapse_codec" >timelapse_codec</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">timelapse_filename</td>
|
|
<td align="left">timelapse_filename</td>
|
|
<td align="left">timelapse_filename</td>
|
|
<td align="left"><a href="#timelapse_filename" >timelapse_filename</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left">timelapse_fps</td>
|
|
<td align="left"><a href="#timelapse_fps" >timelapse_fps</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">ffmpeg_timelapse</td>
|
|
<td align="left">ffmpeg_timelapse</td>
|
|
<td align="left">timelapse_interval</td>
|
|
<td align="left"><a href="#timelapse_interval" >timelapse_interval</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">ffmpeg_timelapse_mode</td>
|
|
<td align="left">ffmpeg_timelapse_mode</td>
|
|
<td align="left">ffmpeg_timelapse_mode</td>
|
|
<td align="left"><a href="#timelapse_mode" >timelapse_mode</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">track_auto</td>
|
|
<td align="left">track_auto</td>
|
|
<td align="left">track_auto</td>
|
|
<td align="left"><a href="#track_auto" >track_auto</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#track_generic_move" >track_generic_move</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">track_iomojo_id</td>
|
|
<td align="left">track_iomojo_id</td>
|
|
<td align="left">track_iomojo_id</td>
|
|
<td align="left"><a href="#track_iomojo_id" >track_iomojo_id</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">track_maxx</td>
|
|
<td align="left">track_maxx</td>
|
|
<td align="left">track_maxx</td>
|
|
<td align="left"><a href="#track_maxx" >track_maxx</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">track_maxy</td>
|
|
<td align="left">track_maxy</td>
|
|
<td align="left">track_maxy</td>
|
|
<td align="left"><a href="#track_maxy" >track_maxy</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">track_motorx</td>
|
|
<td align="left">track_motorx</td>
|
|
<td align="left">track_motorx</td>
|
|
<td align="left"><a href="#track_motorx" >track_motorx</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">track_motory</td>
|
|
<td align="left">track_motory</td>
|
|
<td align="left">track_motory</td>
|
|
<td align="left"><a href="#track_motory" >track_motory</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">track_move_wait</td>
|
|
<td align="left">track_move_wait</td>
|
|
<td align="left">track_move_wait</td>
|
|
<td align="left"><a href="#track_move_wait" >track_move_wait</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">track_port</td>
|
|
<td align="left">track_port</td>
|
|
<td align="left">track_port</td>
|
|
<td align="left"><a href="#track_port" >track_port</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">track_speed</td>
|
|
<td align="left">track_speed</td>
|
|
<td align="left">track_speed</td>
|
|
<td align="left"><a href="#track_speed" >track_speed</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">track_step_angle_x</td>
|
|
<td align="left">track_step_angle_x</td>
|
|
<td align="left">track_step_angle_x</td>
|
|
<td align="left"><a href="#track_step_angle_x" >track_step_angle_x</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">track_step_angle_y</td>
|
|
<td align="left">track_step_angle_y</td>
|
|
<td align="left">track_step_angle_y</td>
|
|
<td align="left"><a href="#track_step_angle_y" >track_step_angle_y</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">track_stepsize</td>
|
|
<td align="left">track_stepsize</td>
|
|
<td align="left">track_stepsize</td>
|
|
<td align="left"><a href="#track_stepsize" >track_stepsize</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">track_type</td>
|
|
<td align="left">track_type</td>
|
|
<td align="left">track_type</td>
|
|
<td align="left"><a href="#track_type" >track_type</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">tunerdevice</td>
|
|
<td align="left">tunerdevice</td>
|
|
<td align="left">tunerdevice</td>
|
|
<td align="left"><a href="#tunerdevice" >tunerdevice</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">v4l2_palette</td>
|
|
<td align="left">v4l2_palette</td>
|
|
<td align="left">v4l2_palette</td>
|
|
<td align="left"><a href="#v4l2_palette" >v4l2_palette</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">brightness</td>
|
|
<td align="left">brightness</td>
|
|
<td align="left">brightness</td>
|
|
<td align="left"><a href="#vid_control_params" >vid_control_params</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">contrast</td>
|
|
<td align="left">contrast</td>
|
|
<td align="left">contrast</td>
|
|
<td align="left"><a href="#vid_control_params" >vid_control_params</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">hue</td>
|
|
<td align="left">hue</td>
|
|
<td align="left">hue</td>
|
|
<td align="left"><a href="#vid_control_params" >vid_control_params</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">power_line_frequency</td>
|
|
<td align="left">power_line_frequency</td>
|
|
<td align="left"><a href="#vid_control_params" >vid_control_params</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">saturation</td>
|
|
<td align="left">saturation</td>
|
|
<td align="left">saturation</td>
|
|
<td align="left"><a href="#vid_control_params" >vid_control_params</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">video_pipe</td>
|
|
<td align="left">video_pipe</td>
|
|
<td align="left">video_pipe</td>
|
|
<td align="left"><a href="#video_pipe" >video_pipe</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">motion_video_pipe</td>
|
|
<td align="left">motion_video_pipe</td>
|
|
<td align="left">motion_video_pipe</td>
|
|
<td align="left"><a href="#video_pipe_motion" >video_pipe_motion</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">videodevice</td>
|
|
<td align="left">videodevice</td>
|
|
<td align="left">videodevice</td>
|
|
<td align="left"><a href="#videodevice" >videodevice</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#webcontrol_auth_method" >webcontrol_auth_method</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">control_authentication</td>
|
|
<td align="left">webcontrol_authentication</td>
|
|
<td align="left">webcontrol_authentication</td>
|
|
<td align="left"><a href="#webcontrol_authentication" >webcontrol_authentication</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#webcontrol_cert" >webcontrol_cert</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#webcontrol_cors_header" >webcontrol_cors_header</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">control_html_output</td>
|
|
<td align="left">webcontrol_html_output</td>
|
|
<td align="left">webcontrol_html_output</td>
|
|
<td align="left"><a href="#webcontrol_interface" >webcontrol_interface</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br /></td>
|
|
<td align="left">ipv6_enabled</td>
|
|
<td align="left">ipv6_enabled</td>
|
|
<td align="left"><a href="#webcontrol_ipv6" >webcontrol_ipv6</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#webcontrol_key" >webcontrol_key</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">control_localhost</td>
|
|
<td align="left">webcontrol_localhost</td>
|
|
<td align="left">webcontrol_localhost</td>
|
|
<td align="left"><a href="#webcontrol_localhost" >webcontrol_localhost</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left">webcontrol_parms</td>
|
|
<td align="left"><a href="#webcontrol_parms" >webcontrol_parms</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">control_port</td>
|
|
<td align="left">webcontrol_port</td>
|
|
<td align="left">webcontrol_port</td>
|
|
<td align="left"><a href="#webcontrol_port" >webcontrol_port</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left"><a href="#webcontrol_tls" >webcontrol_tls</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">width</td>
|
|
<td align="left">width</td>
|
|
<td align="left">width</td>
|
|
<td align="left"><a href="#width" >width</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">ffmpeg_deinterlace</td>
|
|
<td align="left">-Depreciated</td>
|
|
<td align="left">-Depreciated</td>
|
|
<td align="left">-Depreciated</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"><br></td>
|
|
<td align="left">sdl_threadnr</td>
|
|
<td align="left">-Depreciated</td>
|
|
<td align="left">-Depreciated</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left">webcam_limit</td>
|
|
<td align="left">stream_limit</td>
|
|
<td align="left">stream_limit</td>
|
|
<td align="left">-Depreciated</td>
|
|
</tr>
|
|
<tr>
|
|
<td align="left"></td>
|
|
<td align="left"></td>
|
|
<td align="left">substream_port</td>
|
|
<td align="left">-Depreciated</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</ul>
|
|
|
|
<h2><a name="Configuration_OptionsTopic"></a> Configuration Options-Listed by Topic </h2>
|
|
<ul>
|
|
<p></p>
|
|
These are the options that can be used in the config file.
|
|
<p></p>
|
|
All number values are integer numbers (no decimals allowed). Boolean options can be on or off.
|
|
<p></p>
|
|
Some configuration options are only used if Motion is built on a system that has the matching software libraries installed (MySQL, PostgreSQL, SQLite, FFMPEG, etc).
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<a name="OptTopic_System_Processing" ></a>
|
|
<a href="#OptDetail_System_Processing" >System Processing-General Info</a>
|
|
<ul>
|
|
<table class="tbldetail" border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#daemon" >daemon</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#setup_mode" >setup_mode</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#pid_file" >pid_file</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#log_file" >log_file</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#log_level" >log_level</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#log_type" >log_type</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#quiet" >quiet</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#native_language" >native_language</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#camera_name" >camera_name</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#camera_id" >camera_id</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#camera" >camera</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#camera_dir" >camera_dir</a> </td>
|
|
</tr>
|
|
<td bgcolor="#edf4f9" ><a href="#target_dir" >target_dir</a> </td>
|
|
<tr>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<a name="OptTopic_Video4Linux_Devices" ></a>
|
|
<a href="#OptDetail_Video4Linux_Devices" >Video4Linux Devices-General Info</a>
|
|
<ul>
|
|
<table class="tbldetail" border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#videodevice" >videodevice</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#vid_control_params" >vid_control_params</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#v4l2_palette" >v4l2_palette</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#input" >input</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#norm" >norm</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#frequency" >frequency</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#auto_brightness" >auto_brightness</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#tunerdevice" >tunerdevice</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#roundrobin_frames" >roundrobin_frames</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#roundrobin_skip" >roundrobin_skip</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#roundrobin_switchfilter" >roundrobin_switchfilter</a> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<a name="OptTopic_Network_Cameras" ></a>
|
|
<a href="#OptDetail_Network_Cameras" >Network Cameras-General Info</a>
|
|
<ul>
|
|
<table class="tbldetail" border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#netcam_url" >netcam_url</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#netcam_highres" >netcam_highres</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#netcam_userpass" >netcam_userpass</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#netcam_keepalive" >netcam_keepalive</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#netcam_proxy" >netcam_proxy</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#netcam_tolerant_check" >netcam_tolerant_check</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#netcam_use_tcp" >netcam_use_tcp</a> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<a name="OptTopic_Raspi_Cameras" ></a>
|
|
<a href="#OptDetail_Raspi_Cameras" >Raspberry Pi Camera-General Info</a>
|
|
<ul>
|
|
<table class="tbldetail" border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#mmalcam_name" >mmalcam_name</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#mmalcam_control_params" >mmalcam_control_params</a> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<a name="OptTopic_Image_Processing" ></a>
|
|
<a href="#OptDetail_Image_Processing" >Image Processing-General Info</a>
|
|
<ul>
|
|
<table class="tbldetail" border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#width" >width</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#height" >height</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#framerate" >framerate</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#minimum_frame_time" >minimum_frame_time</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#rotate" >rotate</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#flip_axis" >flip_axis</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#locate_motion_mode" >locate_motion_mode</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#locate_motion_style" >locate_motion_style</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#text_left" >text_left</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#text_right" >text_right</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#text_changes" >text_changes</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#text_scale" >text_scale</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#text_event" >text_event</a> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<a name="OptTopic_Motion_Detection" ></a>
|
|
<a href="#OptDetail_Motion_Detection" >Motion Detection-General Info</a>
|
|
<ul>
|
|
<table class="tbldetail" border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#emulate_motion" >emulate_motion</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#threshold" >threshold</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#threshold_maximum" >threshold_maximum</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#threshold_tune" >threshold_tune</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#noise_level" >noise_level</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#noise_tune" >noise_tune</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#despeckle_filter" >despeckle_filter</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#area_detect" >area_detect</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#mask_file" >mask_file</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#mask_privacy" >mask_privacy</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#smart_mask_speed" >smart_mask_speed</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#lightswitch_percent" >lightswitch_percent</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#lightswitch_frames" >lightswitch_frames</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#minimum_motion_frames" >minimum_motion_frames</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#event_gap" >event_gap</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#pre_capture" >pre_capture</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#post_capture" >post_capture</a> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<a name="OptTopic_Scripts" ></a>
|
|
<a href="#OptDetail_Scripts" >Script Execution-General Info</a>
|
|
<ul>
|
|
<table class="tbldetail" border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#on_event_start" >on_event_start</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#on_event_end" >on_event_end</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#on_picture_save" >on_picture_save</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#on_motion_detected" >on_motion_detected</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#on_area_detected" >on_area_detected</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#on_movie_start" >on_movie_start</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#on_movie_end" >on_movie_end</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#on_camera_lost" >on_camera_lost</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#on_camera_found" >on_camera_found</a> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<a name="OptTopic_Pictures" ></a>
|
|
<a href="#OptDetail_Pictures" >Pictures-General Info</a>
|
|
<ul>
|
|
<table class="tbldetail" border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#picture_output" >picture_output</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#picture_output_motion" >picture_output_motion</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#picture_type" >picture_type</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#picture_quality" >picture_quality</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#picture_exif" >picture_exif</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#picture_filename" >picture_filename</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#snapshot_interval" >snapshot_interval</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#snapshot_filename" >snapshot_filename</a> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<a name="OptTopic_Movies" ></a>
|
|
<a href="#OptDetail_Movies" >Movies-General Info</a>
|
|
<ul>
|
|
<table class="tbldetail" border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#movie_output" >movie_output</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#movie_output_motion" >movie_output_motion</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#movie_max_time" >movie_max_time</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#movie_bps" >movie_bps</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#movie_quality" >movie_quality</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#movie_codec" >movie_codec</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#movie_duplicate_frames" >movie_duplicate_frames</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#movie_passthrough" >movie_passthrough</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#movie_filename" >movie_filename</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#movie_extpipe_use" >movie_extpipe_use</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#movie_extpipe" >movie_extpipe</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#timelapse_filename" >timelapse_filename</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#timelapse_interval" >timelapse_interval</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#timelapse_mode" >timelapse_mode</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#timelapse_codec" >timelapse_codec</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#timelapse_fps" >timelapse_fps</a> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<a name="OptTopic_Pipe" ></a>
|
|
<a href="#OptDetail_Pipe" >Pipes-General Info</a>
|
|
<ul>
|
|
<table class="tbldetail" border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#video_pipe" >video_pipe</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#video_pipe_motion" >video_pipe_motion</a> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<a name="OptTopic_Webcontrol" ></a>
|
|
<a href="#OptDetail_Webcontrol" >Webcontrol-General Info</a>
|
|
<ul>
|
|
<table class="tbldetail" border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#webcontrol_port" >webcontrol_port</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#webcontrol_ipv6" >webcontrol_ipv6</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#webcontrol_localhost" >webcontrol_localhost</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#webcontrol_parms" >webcontrol_parms</a> </td>
|
|
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#webcontrol_interface" >webcontrol_interface</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#webcontrol_auth_method" >webcontrol_auth_method</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#webcontrol_authentication" >webcontrol_authentication</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#webcontrol_tls" >webcontrol_tls</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#webcontrol_cert" >webcontrol_cert</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#webcontrol_key" >webcontrol_key</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#webcontrol_cors_header" >webcontrol_cors_header</a> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<a name="OptTopic_Stream" ></a>
|
|
<a href="#OptDetail_Stream" >Live Stream-General Info</a>
|
|
<ul>
|
|
<table class="tbldetail" border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#stream_port" >stream_port</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#stream_localhost" >stream_localhost</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#stream_auth_method" >stream_auth_method</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#stream_authentication" >stream_authentication</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#stream_tls" >stream_tls</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#stream_cors_header" >stream_cors_header</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#stream_preview_scale" >stream_preview_scale</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#stream_preview_newline" >stream_preview_newline</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#stream_preview_method" >stream_preview_method</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#stream_quality" >stream_quality</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#stream_grey" >stream_grey</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#stream_maxrate" >stream_maxrate</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#stream_motion" >stream_motion</a> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<a name="OptTopic_Database" ></a>
|
|
<a href="#OptDetail_Database" >Database-General Info</a>
|
|
<ul>
|
|
<table class="tbldetail" border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#database_type" >database_type</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#database_dbname" >database_dbname</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#database_host" >database_host</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#database_port" >database_port</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#database_user" >database_user</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#database_password" >database_password</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#database_busy_timeout" >database_busy_timeout</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#sql_log_picture" >sql_log_picture</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#sql_log_snapshot" >sql_log_snapshot</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#sql_log_movie" >sql_log_movie</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#sql_log_timelapse" >sql_log_timelapse</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#sql_query" >sql_query</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#sql_query_start" >sql_query_start</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#sql_query_stop" >sql_query_stop</a> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<a name="OptTopic_Tracking" ></a>
|
|
<a href="#OptDetail_Tracking" >Tracking-General Info</a>
|
|
<ul>
|
|
<table class="tbldetail" border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
<col width="250px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#track_type" >track_type</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_auto" >track_auto</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_port" >track_port</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_motorx" >track_motorx</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#track_motorx_reverse" >track_motorx_reverse</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_motory" >track_motory</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_motory_reverse" >track_motory_reverse</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_maxx" >track_maxx</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#track_minx" >track_minx</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_maxy" >track_maxy</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_miny" >track_miny</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_homex" >track_homex</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#track_homey" >track_homey</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_iomojo_id" >track_iomojo_id</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_step_angle_x" >track_step_angle_x</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_step_angle_y" >track_step_angle_y</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" ><a href="#track_move_wait" >track_move_wait</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_speed" >track_speed</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_stepsize" >track_stepsize</a> </td>
|
|
<td bgcolor="#edf4f9" ><a href="#track_generic_move" >track_generic_move</a> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p></p>
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
|
|
<p></p>
|
|
</ul>
|
|
|
|
<h2><a name="Configuration_OptionsDetail"></a> Configuration Options-Detail Descriptions </h2>
|
|
<ul>
|
|
<p></p>
|
|
<p></p>
|
|
The following section provides detailed descriptions of each of the configuration options.
|
|
<p></p>
|
|
|
|
<h3><a name="conversion_specifiers"></a>Conversion Specifiers</h3>
|
|
<ul>
|
|
<div class="tblconvr">
|
|
<table border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="50px">
|
|
<col width="300px">
|
|
<col width="50px">
|
|
<col width="300px">
|
|
<col width="50px">
|
|
<col width="300px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" >%Y </a> </td>
|
|
<td bgcolor="#edf4f9" >year</a> </td>
|
|
<td bgcolor="#edf4f9" >%m </a> </td>
|
|
<td bgcolor="#edf4f9" >month</a> </td>
|
|
<td bgcolor="#edf4f9" >%d </a> </td>
|
|
<td bgcolor="#edf4f9" >day</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" >%H </a> </td>
|
|
<td bgcolor="#edf4f9" >hour</a> </td>
|
|
<td bgcolor="#edf4f9" >%M </a> </td>
|
|
<td bgcolor="#edf4f9" >minute</a> </td>
|
|
<td bgcolor="#edf4f9" >%S </a> </td>
|
|
<td bgcolor="#edf4f9" >second</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" >%T </a> </td>
|
|
<td bgcolor="#edf4f9" >HH:MM:SS </a> </td>
|
|
<td bgcolor="#edf4f9" >%v </a> </td>
|
|
<td bgcolor="#edf4f9" >event</a> </td>
|
|
<td bgcolor="#edf4f9" >%q </a> </td>
|
|
<td bgcolor="#edf4f9" >frame number</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" >%t</a> </td>
|
|
<td bgcolor="#edf4f9" >camera id number</a> </td>
|
|
<td bgcolor="#edf4f9" >%D </a> </td>
|
|
<td bgcolor="#edf4f9" >changed pixels</a> </td>
|
|
<td bgcolor="#edf4f9" >%N </a> </td>
|
|
<td bgcolor="#edf4f9" >noise level</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" >%w </a> </td>
|
|
<td bgcolor="#edf4f9" >width of the image</a> </td>
|
|
<td bgcolor="#edf4f9" >%h </a> </td>
|
|
<td bgcolor="#edf4f9" >height of the image</a> </td>
|
|
<td bgcolor="#edf4f9" >%i </a> </td>
|
|
<td bgcolor="#edf4f9" >width of motion area</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" >%J </a> </td>
|
|
<td bgcolor="#edf4f9" >height of motion area</a> </td>
|
|
<td bgcolor="#edf4f9" >%K </a> </td>
|
|
<td bgcolor="#edf4f9" >X coordinates of motion center</a> </td>
|
|
<td bgcolor="#edf4f9" >%L </a> </td>
|
|
<td bgcolor="#edf4f9" >Y coordinates of motion center</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" >%C </a> </td>
|
|
<td bgcolor="#edf4f9" >value defined by text_event</a> </td>
|
|
<td bgcolor="#edf4f9" >%f</a> </td>
|
|
<td bgcolor="#edf4f9" >filename with full path</a> </td>
|
|
<td bgcolor="#edf4f9" >%n </a> </td>
|
|
<td bgcolor="#edf4f9" >number indicating filetype</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" >%o</a> </td>
|
|
<td bgcolor="#edf4f9" >threshold</a> </td>
|
|
<td bgcolor="#edf4f9" >%Q</a> </td>
|
|
<td bgcolor="#edf4f9" >Number of labels from despeckle</a> </td>
|
|
<td bgcolor="#edf4f9" >%{dbeventid}</a> </td>
|
|
<td bgcolor="#edf4f9" >See <a href="#sql_query_start">sql_query_start</a> </a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" >%$</a> </td>
|
|
<td bgcolor="#edf4f9" >camera name</a> </td>
|
|
<td bgcolor="#edf4f9" >%{fps}</a> </td>
|
|
<td bgcolor="#edf4f9" >current frames per second</a> </td>
|
|
<td bgcolor="#edf4f9" >%{host}</a> </td>
|
|
<td bgcolor="#edf4f9" >name of computer running Motion</a> </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" >%{ver}</a> </td>
|
|
<td bgcolor="#edf4f9" >The version of Motion</a> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<p></p>
|
|
The use of quotation marks around string is permitted. In addition to the above, the conversion
|
|
specifiers include the same options as for the C function strftime (3).
|
|
<p></p>
|
|
</ul>
|
|
|
|
<h3><a name="OptDetail_System_Processing"></a>System Processing</h3>
|
|
<ul>
|
|
<p></p>
|
|
<h3><a name="daemon"></a> daemon </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
When Motion is started, immediately go to daemon mode and release the terminal.
|
|
<p></p>
|
|
|
|
<h3><a name="setup_mode"></a> setup_mode </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
When this option is turned on, Motion starts in setup mode so that the
|
|
parameters can be set more easily. In setup mode two things happen:
|
|
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 id 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. (There are other ways to accomplish this.)
|
|
<p></p>
|
|
<ul>
|
|
<li> Disable despeckle (comment it out in motion.conf).</li>
|
|
<li> Disable smartmask</li>
|
|
<li> Enable both the webcontrol and streams make sure to specify the webcontrol_parms. The below
|
|
assumes that the webcontrol is specified as port 8080 and the stream as 8081
|
|
</li>
|
|
<li> Start Motion in setup mode</li>
|
|
<li> Open a browser and connect to the webcontrol interface.
|
|
<a href="http://localhost:8080/" rel="nofollow" target="_top">http://localhost:8080/</a> .
|
|
You can now control and change almost anything while Motion is running. To disable a feature enter a space.</li>
|
|
<li> 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.</li>
|
|
<li> 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.</li>
|
|
<li> Set the threshold to what you want to trigger Motion.</li>
|
|
</ul>
|
|
In normal 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 camera config files).
|
|
<p></p>
|
|
|
|
<h3><a name="pid_file"></a> pid_file </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
Specify the full path and file name in order to store the pid for processing.
|
|
<p></p>
|
|
|
|
<h3><a name="log_file"></a> log_file </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
Use this option to specify the full path and filename to use
|
|
for logging of the messages generated from Motion. If this option
|
|
is not defined, the stderr and syslog is used. Note that Motion
|
|
can generate a LOT of messages and as a result, this option should
|
|
be considered if the log_level is at any of the higher levels.
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="log_level"></a> log_level </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 1 - 9 </li>
|
|
<li> Default: 6</li>
|
|
</ul>
|
|
<p></p>
|
|
This option specifies the level of verbosity of the messages sent from Motion.
|
|
At a level of 8(DBG), there are a LOT of messages. At a level of 1(EMR) virtually no
|
|
messages will be output.
|
|
<p></p>
|
|
The various levels are [1..9] (EMR, ALR, CRT, ERR, WRN, NTC, INF, DBG, ALL).
|
|
<p></p>
|
|
When reporting any issues or errors associated with the Motion application,
|
|
use the INF level.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="log_type"></a> log_type </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Discreet Strings </li>
|
|
<li> Range / Valid values: See Below</li>
|
|
<li> Default: ALL</li>
|
|
</ul>
|
|
<p></p>
|
|
The different components of Motion use different log types. This option allows the
|
|
user to only show the messages from particular components. The choices for this option
|
|
are: COR, STR, ENC, NET, DBL, EVT, TRK, VID, ALL
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="quiet"></a> quiet </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: on</li>
|
|
</ul>
|
|
<p></p>
|
|
Be quiet, don't output beeps when detecting motion.
|
|
Only works in non-daemon mode.
|
|
<p></p>
|
|
|
|
<h3><a name="native_language"></a> native_language</h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: on</li>
|
|
</ul>
|
|
<p></p>
|
|
Enable native language for Motion webcontrol and log messages.
|
|
<p></p>
|
|
Motion will use the locale variable LANGUAGE for determining the webcontrol and log messages. If
|
|
messages or the webcontrol still display in English, then the messages / words have not yet been translated.
|
|
<p></p>
|
|
Please consider helping the developers by submitting pull requests to add new translations and correcting
|
|
any inaccurate translations.
|
|
<p></p>
|
|
When this option is specified as 'off', the webcontrol and log messages will be provided in English.
|
|
<p></p>
|
|
|
|
<h3><a name="camera_name"></a> camera_name </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
This option specifies a camera name to be used in the format
|
|
specifiers as well as on the web interface.
|
|
<p></p>
|
|
|
|
<h3><a name="camera_id"></a> camera_id </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 1 - 32000</li>
|
|
<li> Default: The sequence that the camera file is read</li>
|
|
</ul>
|
|
<p></p>
|
|
This option is useful for situations where there are multiple cameras being
|
|
used by Motion. This option allows for the assignment of a numeric id number
|
|
that can be used in database queries, format specifiers as well as for the web
|
|
interface and streams.
|
|
<p></p>
|
|
If this option is not specified, the thread number as determined by Motion is used. The
|
|
number assigned to each camera must be unique.
|
|
<p></p>
|
|
When using multiple cameras, the default for the main thread is 0 (zero) but this can be
|
|
overridden as needed by specifying a camera_id in the motion.conf file even though there
|
|
are not any cameras running on this thread.
|
|
<p></p>
|
|
|
|
<h3><a name="camera"></a> camera </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The full path and file name for the camera file.
|
|
Motion allows for this line to be listed in the motion.conf file multiple
|
|
times. These specifications should be the LAST lines in the
|
|
motion.conf file.
|
|
See the <a href="#configfiles">Configuration Files</a> section within
|
|
this guide for a complete discussion of what to put into the
|
|
camera0.conf, camera1.conf, cameraX.conf files that would be specified
|
|
in this option.
|
|
<p></p>
|
|
|
|
<h3><a name="camera_dir"></a> camera_dir </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
This option specifies a directory to contain the individual camera configuration files.
|
|
Any files ending in '.conf' in this directory will be read as a camera config file.
|
|
<br />Users can disable a camera (config file) by renaming it so it does not end with '.conf'.
|
|
<p></p>
|
|
|
|
<h3><a name="target_dir"></a> target_dir </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined = current directory</li>
|
|
</ul>
|
|
<p></p>
|
|
The full path for the target directory for picture and movie files to be saved.
|
|
The default is the current directory. This is the target directory for all snapshots,
|
|
picture files and movie files.
|
|
You will normally always want to specify this parameter as an absolute path.
|
|
<p></p>
|
|
Note that the file name options are all saved relative to this target_dir
|
|
This means in principle that you can specify target_dir as '/' and be 100% flexible. But this is
|
|
NOT recommended. It is recommended that this directory be specified as deep as possible.
|
|
<p></p>
|
|
|
|
</ul>
|
|
|
|
<h3><a name="OptDetail_Video4Linux_Devices"></a>Video4Linux Device</h3>
|
|
<ul>
|
|
<p></p>
|
|
Please refer to the <a href="#Basic_Setup">Basic Setup</a> section of this guide for an additional discussion
|
|
of Video4Linux devices and how to test and specify them correctly for Motion.
|
|
<h3><a name="videodevice"></a> videodevice </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: /dev/video0 </li>
|
|
</ul>
|
|
<p></p>
|
|
The video device to be used for capturing. Default is /dev/video0.
|
|
See the <a href="#Basic_Setup">Basic Setup</a>
|
|
section of this guide for an additional discussion of this option.
|
|
<p></p>
|
|
This option is the preferred way to specify the video4linux device name. If the camera does
|
|
not work when specifying the device with this option, it is also possible to specify the device
|
|
in the <a href="#netcam_url" >netcam_url</a> with the v4l2 prefix option. The
|
|
<a href="#netcam_url" >netcam_url</a> option uses an alternative method to open and operate the
|
|
device but has fewer options available. If the <a href="#netcam_url" >netcam_url</a> is used for
|
|
either this alternative method or for a normal network camera, the videodevice option is ignored.
|
|
<p></p>
|
|
Since the exact device number is set by the kernel upon boot, when there is more than one video device
|
|
it is possible that the particular cameras that were assigned to /dev/video0 and /dev/video1 may switch. In
|
|
order to set up Motion so that a particular camera is always assigned the same way, users can set up
|
|
a symbolic link using udev rules. To do this a unique attribute must be identified for each camera. The
|
|
camera attributes can be viewed by using the command
|
|
<code>udevadm info -a -p $(udevadm info -q path -n /dev/video0) </code> while the camera is attached. Usually
|
|
a serial number can be used. ("Usually" because some cameras have been observed to have the same serial
|
|
number for different cameras)
|
|
<p></p>
|
|
Once a unique attribute has been identified for each camera, edit or create the file
|
|
<code>/etc/udev/rules.d/99-local.rules</code>.
|
|
<p></p>
|
|
Assuming that the unique attribute for the camera was name and was
|
|
<code>ATTR{name}=="Philips SPC 900NC webcam"</code> you would add the following line to the
|
|
99-local.rules file:
|
|
<code> KERNEL=="video[0-9]*", ATTR{name}=="Philips\ SPC\ 900NC*", SYMLINK+="video-webcam0"</code>
|
|
<p></p>
|
|
Once the change has been made and saved, reboot the computer and there should now be a "sticky" device called
|
|
/dev/video-webcam0
|
|
<p></p>
|
|
|
|
|
|
<h3><a name="vid_control_params"></a>vid_control_params</h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
For v4l2 and bktr devices, most of the configuration options are automatic. However most devices also allow
|
|
the user to change certain settings to suit their needs. The options which the camera manufacturer permits
|
|
the user to change are called "controls".
|
|
<p></p>
|
|
The <a href="#vid_control_params" >vid_control_params</a> option allows users of Motion to change any of these
|
|
controls. The specific controls that can be changed is however entirely dependent upon the device.
|
|
<p></p>
|
|
This option replaces the previous configuration options for:
|
|
<ul>
|
|
<li> brightness</li>
|
|
<li> contrast</li>
|
|
<li> hue</li>
|
|
<li> power_line_frequency</li>
|
|
<li> saturation</li>
|
|
</ul>
|
|
<p></p>
|
|
This option permits the V4l2 users of Motion to change the value of any control that is available
|
|
to the device rather than being limited to only the 5 listed above. For FreeBSD users with BKTR devices,
|
|
the options are limited to brightness, contrast, hue and saturation due to the limitations of the driver.
|
|
<p></p>
|
|
While it always recommended that users remove older configuration options and only use the new options,
|
|
if users have within the configuration file any of the depreciated options list above, Motion will
|
|
continue to read those values and upgrade them into the new vid_control_params option. The resulting
|
|
pictures from the device may however may not be comparable due to different interpretations of the values.
|
|
<p></p>
|
|
It is therefore highly recommended that users remove the old configuration values and calibrate their devices
|
|
only using this new configuration option.
|
|
<p></p>
|
|
To use this parameter, users will need to first identify the name or ID description of the particular control.
|
|
Next, simply specify the control/id followed by an equal sign and then the desired value. The specification
|
|
of multiple controls can be specified by separating them with a comma.
|
|
<p></p>
|
|
Since the name of some controls can include a comma or spaces, names can also be specified by enclosing them
|
|
in double quotes.
|
|
<p></p>
|
|
Finally, to help users know which controls are available for their device, the Motion log will report all the
|
|
available controls, associated IDs and minimum/maximum values permitted at the
|
|
<a href="#log_level" >log_level</a> of INF.
|
|
<p></p>
|
|
e.g. Change the <a href="#log_level" >log_level</a>
|
|
to INF, start up Motion with the device attached and specified, let it report items to the log and then
|
|
shut Motion down. Within the Motion log, it will list which controls the device has that can be adjusted.
|
|
<p></p>
|
|
The following is a sample output from the log and examples of how to specify the parameters
|
|
<p></p>
|
|
<ul style="list-style: none;">
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ---------Controls---------</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: V4L2 ID Name and Range</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID09963776 Brightness, 0 to 127</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID09963777 Contrast, 0 to 63</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID09963778 Saturation, -100 to 100</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID09963788 White Balance, Automatic, 0 to 4</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: menu item: Value 0 Indoor (Incandescant Lighting)</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: menu item: Value 1 Outdoor (Sunlight) Mode</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: menu item: Value 2 Indoor (Fluorescent Lighting) M</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: menu item: Value 3 Manual Mode</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: menu item: Value 4 Auto Mode</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID09963790 Red Balance, 0 to 255</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID09963791 Blue Balance, 0 to 255</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID09963792 Gamma, 0 to 31</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID09963793 Exposure, 0 to 255</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID09963794 Gain, Automatic, 0 to 1</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID09963795 Gain, 0 to 63</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID09963804 Backlight Compensation, 0 to 1</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID09963807 Color Effects, 0 to 1</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: menu item: Value 0 None</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: menu item: Value 1 Black & White</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID09963809 Band-Stop Filter, 0 to 1</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID10025216 Auto contour, 0 to 1</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID10025217 Contour, 0 to 63</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID10025218 Dynamic Noise Reduction, 0 to 3</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID10025219 Auto White Balance Speed, 1 to 32</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID10025220 Auto White Balance Delay, 0 to 63</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID10025221 Save User Settings, 0 to 0</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID10025222 Restore User Settings, 0 to 0</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: ID10025223 Restore Factory Settings, 0 to 0</li>
|
|
<li>[1:ml1:c1] [INF] [VID] v4l2_ctrls_list: --------------------------</li>
|
|
</ul>
|
|
|
|
|
|
<p></p>
|
|
Example 1: Set the gain to manual, then the gain to 50 and the brightness to 30
|
|
<p></p>
|
|
<code>vid_control_params "Gain, Automatic"=1,ID09963795=50, brightness=30</code>
|
|
<p></p>
|
|
a equally valid alternative method for specifying this example would be
|
|
<p></p>
|
|
<code>vid_control_params ID09963794=1,ID09963795=50, ID09963776=30</code>
|
|
<p></p>
|
|
or another way of specifying it could be
|
|
<p></p>
|
|
<code>vid_control_params ID09963794=1,"Gain"=50, "brightness"=30</code>
|
|
<p></p>
|
|
Example 2: Set the saturation to 50 and the contrast to 100
|
|
<p></p>
|
|
<code>vid_control_params saturation=50,contrast=100</code>
|
|
<p></p>
|
|
As can be seen in these examples, the specification can use either the control ID or the name of the
|
|
control. If the control name has embedded blanks or commas, then it must be enclosed in quotes. Special
|
|
care should be taken when using the name. As shown above, there is a comma that separates the name
|
|
of the control versus the valid range of values. That comma is NOT part of the control name and only
|
|
delimits the end of the name for the Motion log.
|
|
<p></p>
|
|
|
|
|
|
<h3><a name="v4l2_palette"></a> v4l2_palette </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 21</li>
|
|
<li> Default: 17</li>
|
|
</ul>
|
|
<p></p>
|
|
The v4l2_palette allows the user to choose a palette to be use by Motion. This
|
|
is only the <u>preferred</u> option. If the video device does not support this preferred format,
|
|
Motion will loop through the available palettes to try to find one that is supported by both Motion
|
|
and the device.
|
|
Motion will report the supported palettes of the device when Motion starts when the log_level
|
|
is specified as NTC or higher.
|
|
<p></p>
|
|
The default of 17 is highly preferred over <u>all</u> other formats since this the native
|
|
format that Motion uses internally.
|
|
<p></p>
|
|
The following are each of the palette options. For the Motion configuration,
|
|
specify the numeric value as the Motion option.
|
|
<p></p>
|
|
<div class="tblpaltte">
|
|
<table border="1" class="fixed" >
|
|
<colgroup>
|
|
<col width="250px">
|
|
<col width="200px">
|
|
<col width="200px">
|
|
</colgroup>
|
|
<tbody>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="center" > V4l2 Option</td>
|
|
<td bgcolor="#edf4f9" align="center" > FOURCC</td>
|
|
<td bgcolor="#edf4f9" align="center" > v4l2_palette option </td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" >V4L2_PIX_FMT_SN9C10X</td>
|
|
<td bgcolor="#edf4f9" align="center" >S910</td>
|
|
<td bgcolor="#edf4f9" align="center" >0</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" >V4L2_PIX_FMT_SBGGR16</td>
|
|
<td bgcolor="#edf4f9" align="center" >BYR2</td>
|
|
<td bgcolor="#edf4f9" align="center" >1</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" >V4L2_PIX_FMT_SBGGR8</td>
|
|
<td bgcolor="#edf4f9" align="center" >BA81</td>
|
|
<td bgcolor="#edf4f9" align="center" >2</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" >V4L2_PIX_FMT_SPCA561</td>
|
|
<td bgcolor="#edf4f9" align="center" >S561</td>
|
|
<td bgcolor="#edf4f9" align="center" >3</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" >V4L2_PIX_FMT_SGBRG8</td>
|
|
<td bgcolor="#edf4f9" align="center" >GBRG</td>
|
|
<td bgcolor="#edf4f9" align="center" >4</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" >V4L2_PIX_FMT_SGRBG8</td>
|
|
<td bgcolor="#edf4f9" align="center" >GRBG</td>
|
|
<td bgcolor="#edf4f9" align="center" >5</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" >V4L2_PIX_FMT_PAC207</td>
|
|
<td bgcolor="#edf4f9" align="center" >P207</td>
|
|
<td bgcolor="#edf4f9" align="center" >6</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_PJPG</td>
|
|
<td bgcolor="#edf4f9" align="center" >PJPG</li>
|
|
<td bgcolor="#edf4f9" align="center" >7</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_MJPEG</td>
|
|
<td bgcolor="#edf4f9" align="center" >MJPG</li>
|
|
<td bgcolor="#edf4f9" align="center" >8</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_JPEG</td>
|
|
<td bgcolor="#edf4f9" align="center" >JPEG</li>
|
|
<td bgcolor="#edf4f9" align="center" >9</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_RGB24</td>
|
|
<td bgcolor="#edf4f9" align="center" >RGB3</li>
|
|
<td bgcolor="#edf4f9" align="center" >10</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_SPCA501</td>
|
|
<td bgcolor="#edf4f9" align="center" >S501</li>
|
|
<td bgcolor="#edf4f9" align="center" >11</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_SPCA505</td>
|
|
<td bgcolor="#edf4f9" align="center" >S505</li>
|
|
<td bgcolor="#edf4f9" align="center" >12</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_SPCA508</td>
|
|
<td bgcolor="#edf4f9" align="center" >S508</li>
|
|
<td bgcolor="#edf4f9" align="center" >13</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_UYVY</td>
|
|
<td bgcolor="#edf4f9" align="center" >UYVY</li>
|
|
<td bgcolor="#edf4f9" align="center" >14</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_YUYV</td>
|
|
<td bgcolor="#edf4f9" align="center" >YUYV</li>
|
|
<td bgcolor="#edf4f9" align="center" >15</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_YUV422P</td>
|
|
<td bgcolor="#edf4f9" align="center" >422P</li>
|
|
<td bgcolor="#edf4f9" align="center" >16</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_YUV420</td>
|
|
<td bgcolor="#edf4f9" align="center" >YU12</li>
|
|
<td bgcolor="#edf4f9" align="center" >17</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_Y10</td>
|
|
<td bgcolor="#edf4f9" align="center" >Y10</li>
|
|
<td bgcolor="#edf4f9" align="center" >18</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_Y12</td>
|
|
<td bgcolor="#edf4f9" align="center" >Y12</li>
|
|
<td bgcolor="#edf4f9" align="center" >19</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_GREY</td>
|
|
<td bgcolor="#edf4f9" align="center" >GREY</li>
|
|
<td bgcolor="#edf4f9" align="center" >20</td>
|
|
</tr>
|
|
<tr>
|
|
<td bgcolor="#edf4f9" align="left" > V4L2_PIX_FMT_H264</td>
|
|
<td bgcolor="#edf4f9" align="center" >H264</li>
|
|
<td bgcolor="#edf4f9" align="center" >21</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<p></p>
|
|
It is possible that after looping through all of the palette options for the camera, Motion will not
|
|
find a palette that is acceptable for processing. In this situation, it is possible to use the
|
|
<a href="#netcam_url" >netcam_url</a> option with the v4l2 prefix. When using the
|
|
<a href="#netcam_url" >netcam_url</a> option, the v4l2_palette option can be used to specify the
|
|
V4L2_PIX_FMT_MJPEG and V4L2_PIX_FMT_H264 options ONLY. If any of the other palette options
|
|
are specified when using the <a href="#netcam_url" >netcam_url</a> the v4l2_palette option
|
|
is ignored and the camera default is used.
|
|
|
|
<p></p>
|
|
The V4L2_PIX_FMT_H264(21) option is valid ONLY when using the <a href="#netcam_url" >netcam_url</a> option.
|
|
When V4L2_PIX_FMT_H264(21) is specified using the videodevice, Motion will change the v4l2_palette option to the
|
|
default of V4L2_PIX_FMT_YUV420 (17)
|
|
<p></p>
|
|
|
|
<h3><a name="input"></a> input </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: -1, 0 - 7</li>
|
|
<li> Default: -1 </li>
|
|
</ul>
|
|
<p></p>
|
|
Input channel to use expressed as an integer number starting from 0.
|
|
This option should normally be set to 1 for video/TV cards, and -1 for USB cameras.
|
|
This parameter is used only with video capture cards that have more than one input.
|
|
If you set the input number to values other than -1 USB cameras Motion will report
|
|
an error message back. For video capture cards with tuners or multiple inputs such as
|
|
S-VHS or Composite you may need to use this option to specify the correct input for
|
|
the camera. Using a external application such as VLC which allows for easier specification
|
|
of the input associated with the camera can assist in determining the correct value for Motion.
|
|
<p></p>
|
|
|
|
<h3><a name="norm"></a> norm </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 (PAL), 1 (NTSC), 2 (SECAM), 3 (PAL NC no colour)</li>
|
|
<li> Default: 0 (PAL) </li>
|
|
</ul>
|
|
<p></p>
|
|
Select the video norm of the device. Values: 0 (PAL), 1 (NTSC), 2 (SECAM), 3 (PAL NC no colour). Default: 0 (PAL)
|
|
This value is only used for capture cards using the BTTV driver.
|
|
<p></p>
|
|
|
|
<h3><a name="frequency"></a> frequency </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 999999</li>
|
|
<li> Default: 0 (Not set)</li>
|
|
</ul>
|
|
<p></p>
|
|
The frequency to set the tuner to (kHz) per the tuner specifications. The default is 0 meaning
|
|
not set. 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.
|
|
<p></p>
|
|
|
|
<h3><a name="auto_brightness"></a> auto_brightness </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 3</li>
|
|
<li> Default: 0 </li>
|
|
</ul>
|
|
<p></p>
|
|
Let motion regulate the brightness of a video device. Only recommended for cameras without auto brightness
|
|
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 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
|
|
is close to a target value.
|
|
<p></p>
|
|
By default, the target value is the midpoint between the minimum and maximum value permitted for the control
|
|
being adjusted. (See methods available below)
|
|
<p></p>
|
|
Users can specify a different target value by specifying a value for the control in
|
|
the <a href="#vid_control_params">vid_control_params</a> option.
|
|
<p></p>
|
|
Motion allows for three possible methods for adjusting the brightness.
|
|
<ul>
|
|
<li> 1: Use the brightness control to regulate the brightness (equivalent to specifying on/yes)</li>
|
|
<li> 2: Use the exposure control to regulate the brightness</li>
|
|
<li> 3: Use the exposure absolute control to regulate the brightness</li>
|
|
</ul>
|
|
<p></p>
|
|
|
|
<h3><a name="tunerdevice"></a> tunerdevice </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: /dev/tuner0 </li>
|
|
</ul>
|
|
<p></p>
|
|
The tuner device used for controlling the tuner in a tuner card. This option is only used when Motion is compiled
|
|
for FreeBSD with the bktr option.
|
|
See the <a href="#Basic_Setup">Basic Setup</a> section of this guide for a additional discussion of this option.
|
|
<p></p>
|
|
|
|
<h3><a name="roundrobin_frames"></a> roundrobin_frames </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 1 - 2147483647</li>
|
|
<li> Default: 1</li>
|
|
</ul>
|
|
<p></p>
|
|
Specifies the number of frames to capture before switching inputs, this way also slow switching (e.g. every second)
|
|
is possible. The Round Robin feature is automatically activated where multiple cameras are sharing the same video
|
|
device. Each camera can then set different <a href="#input">input</a> or
|
|
<a href="#frequency">frequency</a> options to change camera.
|
|
If multiple cameras use the same video device, they each can capture roundrobin_frames number of frames before having
|
|
to share the device with the other cameras.
|
|
<p></p>
|
|
Round Robin is not relevant for Network cameras or standard USB web cameras. It is used with video capture
|
|
cards which have multiple inputs per video chip. This is not the ideal way to run multiple cameras.
|
|
When the capture card changes input it takes some time before the decoder chip has synchronized to the new camera.
|
|
You can improve this if you have expensive cameras with a synchronized input. Only one camera can be decoded
|
|
at a time so if you have 4 cameras connected 3 of the cameras will need to wait for their
|
|
turn. The fact that cameras have to take turns and the fact that you have to skip a few frames after
|
|
each turn dramatically lowers the possible framerate. You can get a high framerate by viewing each
|
|
camera for a long time. But then you may miss the action on one of the inactive cameras. If you can
|
|
afford it avoid Round Robin and buy the more expensive type of capture cards that has one decoder chip
|
|
per input. If you only need 2 or 3 cameras you can also simply put 2 or 3 cheap TV cards in the computer.
|
|
Linux has no problem working with multiple TV cards. (or better yet, it multiple cheap network cameras)
|
|
If multiple cameras use the same video device, they each can capture
|
|
<a href="#roundrobin_frames">roundrobin_frames</a> number of frames
|
|
before having to share the device with the other cameras.
|
|
When another camera wants to watch another input or frequency or size the first
|
|
<a href="#roundrobin_skip">roundrobin_skip</a> number of frames are skipped to allow the
|
|
device to settle. The last option
|
|
<a href="#roundrobin_switchfilter">roundrobin_switchfilter</a> is supposed
|
|
to prevent the change of camera from being detected
|
|
as Motion. Its function is not perfect and sometimes prevents detection of real motion. You should start
|
|
with having the option disabled and then try with the option enabled to see if you can skip less frames
|
|
without loosing the detection of the type of motion you normally want to detect.
|
|
<p></p>
|
|
|
|
<h3><a name="roundrobin_skip"></a> roundrobin_skip </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 1 - 2147483647</li>
|
|
<li> Default: 1</li>
|
|
</ul>
|
|
<p></p>
|
|
Specifies the number of frames to skip after a switch. (1 if you are feeling lucky, 2 if you want to be safe).
|
|
The Round Robin feature is automatically activated where multiple cameras are sharing the same video device.
|
|
Each camera can then set different input channels or frequencies to change camera.
|
|
When another camera wants to watch another input or frequency or size the first roundrobin_
|
|
skip number of frames are skipped to allow the device to settle.
|
|
<p></p>
|
|
|
|
<h3><a name="roundrobin_switchfilter"></a> roundrobin_switchfilter </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Turns the switch filter on or off. The filter can distinguish between most switching noise and real motion. With this
|
|
you can even set roundrobin_skip to 1 without generating much false detection.
|
|
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.
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<h3><a name="OptDetail_Network_Cameras"></a>Network Cameras</h3>
|
|
<ul>
|
|
<p></p>
|
|
Motion can connect to certain network cameras. Please refer to the <a href="#Basic_Setup">Basic Setup</a> section
|
|
of this guide for an additional discussion of network camera and how to test and specify them correctly for Motion.
|
|
<p></p>
|
|
Motion cannot connect to a video stream such a mpeg, mpeg4, divx to connect to streams such as these
|
|
the user may review the static files portion of the <a href="#Basic_Setup">Basic Setup</a>
|
|
section of this guide which illustrates some possible work arounds using ffmpeg and v4l2loopback devices.
|
|
<p></p>
|
|
The URL must return one single jpeg image, a mjpeg stream
|
|
a RTSP stream, RTMP stream, file or ftp. When getting a still image, make sure to validate that
|
|
the camera is serving up a actual raw JPG file and not a HTML page with an embedded JPG which Motion
|
|
will not be able to process.
|
|
When the <a href="#netcam_url" >netcam_url</a> is defined the
|
|
<a href="#OptTopic_Video4Linux_Devices" >video4linux</a> options above are mostly ignored.
|
|
<p></p>
|
|
If the connection to a network camera is lost, Motion will reuse the last good image for
|
|
approx 30 seconds. After 30 seconds the image is replaced by a grey image with a text
|
|
telling that the signal is lost and when the connection was lost.
|
|
<em>This text and its date format is not configurable.</em>
|
|
|
|
|
|
<h3><a name="netcam_url"></a> netcam_url </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
|
|
<p></p>
|
|
URL to use if you are using a network camera, size will be autodetected.
|
|
Available prefixes to the URL:
|
|
<p></p>
|
|
<ul>
|
|
<i>http://</i>
|
|
<ul>
|
|
This prefix uses the traditional http format and opens the netcam looking for a motion jpg image.
|
|
</ul>
|
|
<p></p>
|
|
|
|
<i>ftp://</i>
|
|
<ul>
|
|
This prefix opens the ftp site and grabs a static image. The camera will be expected to periodically
|
|
replace that static image as it processes images.
|
|
</ul>
|
|
<p></p>
|
|
|
|
<i>rtsp://</i>
|
|
<ul>
|
|
This prefix is the standard for all modern network cameras. It is recommended that users search the
|
|
web or the camera manual for the exact connection string to use for their camera.
|
|
<p></p>
|
|
Once a potential connection string is found, it should be validated as being functional using a
|
|
external application such as ffplay or vlc.
|
|
<p></p>
|
|
The connection string that works for these applications is what needs to be specified for this option.
|
|
<p></p>
|
|
When using the rtsp format, Motion will ignore the netcam_keepalive and netcam_tolerant_check options.
|
|
</ul>
|
|
<p></p>
|
|
|
|
<i>rtmp://</i>
|
|
<ul>
|
|
This prefix may be available on modern network cameras. It is recommended that users search the
|
|
web or the camera manual for the exact connection string to use for their camera.
|
|
<p></p>
|
|
Once a potential connection string is found, it should be validated as being functional using a
|
|
external application such as ffplay or vlc.
|
|
<p></p>
|
|
The connection string that works for these applications is what needs to be specified for this option.
|
|
<p></p>
|
|
When using the rtmp format, Motion will ignore the netcam_keepalive and netcam_tolerant_check options.
|
|
</ul>
|
|
<p></p>
|
|
|
|
<i>mjpeg://</i>
|
|
<ul>
|
|
This is an alternative prefix for http. The mjpeg is replaced with http by Motion internally and forces the
|
|
use of the ffmpeg libraries and the mjpeg format.
|
|
<p></p>
|
|
This option is equivalent to using <code>ffplay -f mjpeg http://{yourip}</code>.
|
|
<p></p>
|
|
In certain situations, this option may result in better results than using the http protocol.
|
|
<p></p>
|
|
Motion will ignore the netcam_keepalive and netcam_tolerant_check options when this format is specified.
|
|
</ul>
|
|
<p></p>
|
|
|
|
<i>file://</i>
|
|
<ul>
|
|
This option allows for the processing of a existing movie file. Motion will open the file and
|
|
process the file at the framerate specified in the Motion configuration file. Note that since the
|
|
file may have been created using a different framerate than specified in the Motion config file,
|
|
the file may be processed at either a faster or slower rate than real time.
|
|
<p></p>
|
|
A sample format for the netcam_url would be <code>netcam_url file:///home/user/cam1/cam1_20180817084027.mkv</code>
|
|
<p></p>
|
|
This option may be useful for "reprocessing" a movie created by Motion to fine tune the detection options.
|
|
|
|
</ul>
|
|
<p></p>
|
|
|
|
<i>v4l2://</i>
|
|
<ul>
|
|
This option allows for an alternative method of using a v4l2 device that is not natively supported by Motion.
|
|
<p></p>
|
|
A sample format for the netcam_url would be <code>v4l2:///dev/video0</code> Internally, this
|
|
is equivalent to running the following from the command line <code>ffplay -f v4l2 /dev/video0</code>
|
|
<p></p>
|
|
Since this is not the preferred method of specifying a v4l2 device, many of the usual v4l2 controls such as
|
|
<a href="#vid_control_params">vid_control_params</a> are ignored.
|
|
The options <a href="#width">width</a>, <a href="#height">height</a> as well as two of
|
|
the <a href="#v4l2_palette">v4l2_palette</a> can be used. The two options
|
|
for <a href="#v4l2_palette">v4l2_palette</a> which can be used are option 8 (V4L2_PIX_FMT_MJPEG) and
|
|
option 21 (V4L2_PIX_FMT_H264). If any other option is selected for the <a href="#v4l2_palette">v4l2_palette</a>
|
|
Motion will revert to the camera default.
|
|
</ul>
|
|
<p></p>
|
|
|
|
<i>mjpg://</i>
|
|
<ul>
|
|
This option processes very old netcams with non standard mjpeg formats.
|
|
</ul>
|
|
<p></p>
|
|
|
|
<i>jpeg://</i>
|
|
<ul>
|
|
This option is for processing a static JPG file that is updated by processes external
|
|
to Motion. It must be a local file and specified such as jpeg:///path/current.jpg
|
|
</ul>
|
|
<p></p>
|
|
|
|
</ul>
|
|
|
|
<h3><a name="netcam_highres"></a> netcam_highres </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The network camera high resolution URL. This option can be used in conjunction with the netcam_url for
|
|
rtsp/rtmp/mjpeg cameras. Users may specify the normal resolution url in the netcam_url which will be used for
|
|
the motion detection and then specify the high resolution url for this parameter. For mjpeg cameras,
|
|
the url must use the <code>mjpeg</code> prefix and not <code>http</code>.
|
|
<br>
|
|
Motion detection on the normal resolution will trigger the saving of images from the high resolution stream.
|
|
Note that the ONLY overlay that will be present on the resulting high resolution pictures and movies is the
|
|
privacy mask. The other overlays such as date/time, motion boxes, camera name, etc will not be
|
|
included. Users wishing to see those overlays on the resulting images and movies will need to specify the
|
|
high resolution url as the netcam_url and not use this option.
|
|
<p></p>
|
|
If the netcam_url is not specified, this option is ignored.
|
|
<p></p>
|
|
When this option is used with the <a href="#movie_passthrough">movie_passthrough</a> even less processing occurs.
|
|
Since the <a href="#movie_passthrough">movie_passthrough</a> bypasses decoding the stream, images will be saved
|
|
only as normal resolution and the privacy mask will not be overlaid on to the high resolution images.
|
|
<p></p>
|
|
|
|
<h3><a name="netcam_userpass"></a> netcam_userpass </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The Username and password for the network camera. For http protocols, this
|
|
option is for HTTP 1.1 Basic authentication only. The string is specified as username:password.
|
|
To use no authentication simply remove this option. Digest authentication is only available for rtsp/rtmp cameras.
|
|
<p></p>
|
|
|
|
<h3><a name="netcam_keepalive"></a> netcam_keepalive </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
The setting for keep-alive of network socket, should improve performance on compatible net cameras.
|
|
<ul>
|
|
<li> off: The historical implementation using HTTP/1.0, closing the socket after each http request.</li>
|
|
<li> force: Use HTTP/1.0 requests with keep alive header to reuse the same connection.</li>
|
|
<li> on: Use HTTP/1.1 requests that support keep alive as default.</li>
|
|
</ul>
|
|
<p></p>
|
|
Motion will ignore this option for rtsp/rtmp cameras.
|
|
<p></p>
|
|
|
|
<h3><a name="netcam_proxy"></a> netcam_proxy </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
URL to use for a netcam proxy server, if required. The syntax is
|
|
<a href="http://myproxy:portnumber" rel="nofollow" target="_top">http://myproxy:portnumber</a>
|
|
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 omit the port number. Then the syntax is use "http://myproxy.mydomain.com" .
|
|
Leave this option undefined if you do not use a proxy server.
|
|
<p></p>
|
|
Motion will ignore this option for rtsp/rtmp cameras.
|
|
<p></p>
|
|
|
|
<h3><a name="netcam_tolerant_check"></a> netcam_tolerant_check </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Use less strict jpeg checks for network cameras
|
|
<p></p>
|
|
Motion will ignore this option for rtsp/rtmp cameras.
|
|
<p></p>
|
|
|
|
<h3><a name="netcam_use_tcp"></a> netcam_use_tcp </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: on</li>
|
|
</ul>
|
|
<p></p>
|
|
This option specifies the transport method for rtsp/rtmp cameras. The TCP transport is highly preferred because
|
|
without this option the rtsp/rtmp images are frequently corrupted and result in many false positive values and
|
|
images that appear to be smeared. Off indicates that UDP will be used.
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<h3><a name="OptDetail_Raspi_Cameras"></a>Raspberry Pi Camera</h3>
|
|
<ul>
|
|
<p></p>
|
|
Motion can use the Raspberry Pi camera when connected and Motion is compiled and installed with the
|
|
MMAL support. Before setting up Motion with the camera, it is recommended that the user first
|
|
validate that the camera is functional with the raspistill/raspivid applications.
|
|
<p></p>
|
|
Please refer to the <a href="#Basic_Setup">Basic Setup</a> section
|
|
of this guide for an additional discussion of network camera and how to test and specify them correctly for Motion.
|
|
<p></p>
|
|
<h3><a name="mmalcam_name"></a> mmalcam_name </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
Name of camera to use if you are using a camera accessed through OpenMax/MMAL. The standard
|
|
Raspberry Pi camera device name is "vc.ril.camera" without the quotes.
|
|
<p></p>
|
|
Motion will ignore this option when the MMAL support is not included. In these situations,
|
|
users will need to use the modprobe method of setting up the camera as a v4l2 device. See
|
|
the <a href="#Basic_Setup">Basic Setup</a> section of this guide for further details.
|
|
<p></p>
|
|
|
|
<h3><a name="mmalcam_control_params"></a> mmalcam_control_params</h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
This option allows the user to specify control parameters to the Pi camera. The documentation of
|
|
all of the options available to the Raspberry Camera module is beyond the scope of this guide. In
|
|
general, the command line options that are available via the raspistill / raspivid applications are
|
|
the options that can be specified in this Motion configuration option.
|
|
|
|
Some of the more frequently used options are:
|
|
<ul>
|
|
<li>Horizontal Flip: -hf</li>
|
|
<li>Vertical Flip: -vf</li>
|
|
<li>Rotation: -rot</li>
|
|
</ul>
|
|
<p></p>
|
|
<p></p>
|
|
Motion will ignore this option when the MMAL support is not included. In these situations,
|
|
users will need to use the modprobe method of setting up the camera as a v4l2 device. See
|
|
the <a href="#Basic_Setup">Basic Setup</a> section of this guide for further details.
|
|
<p></p>
|
|
</ul>
|
|
|
|
<h3><a name="OptDetail_Image_Processing"></a> Image Processing</h3>
|
|
<ul>
|
|
<p></p>
|
|
<h3><a name="width"></a> width </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: Device Dependent</li>
|
|
<li> Default: 640</li>
|
|
</ul>
|
|
<p></p>
|
|
The width in pixels of each frame. Valid range is camera dependent.
|
|
<p></p>
|
|
For all devices, the width must be a multiple of 8.
|
|
<p></p>
|
|
Motion does not scale v4l2 devices and http netcams so the value should be set to the actual
|
|
size of the image provided by the device.
|
|
In case of a rtsp/rtmp network camera, Motion will rescale the camera image to the
|
|
requested dimensions. This rescaling comes at a very high CPU cost so it
|
|
is recommended that the network camera send the image in the same dimensions as included
|
|
in the configuration file.
|
|
<p></p>
|
|
While Motion will not rescale the image provided, it will attempt to set the size of the image
|
|
coming from the video4linux device to match the values provided for height/width.
|
|
<p></p>
|
|
It is important to realize that certain height/width combinations are only valid at
|
|
certain frame rates. The particular combinations which are valid are dependent upon
|
|
the device.
|
|
<p></p>
|
|
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.
|
|
<p></p>
|
|
|
|
<h3><a name="height"></a> height </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: Device Dependent</li>
|
|
<li> Default: 480</li>
|
|
</ul>
|
|
<p></p>
|
|
The height in pixels of each frame. Valid range is camera dependent.
|
|
<p></p>
|
|
For all devices, the height must be a multiple of 8.
|
|
<p></p>
|
|
Motion does not scale v4l2 devices and http netcams so the value should be set to the actual
|
|
size of the image provided by the device.
|
|
In case of a rtsp/rtmp network camera, Motion will rescale the camera image to the
|
|
requested dimensions. This rescaling comes at a very high CPU cost so it
|
|
is recommended that the network camera send the image in the same dimensions as included
|
|
in the configuration file.
|
|
<p></p>
|
|
While Motion will not rescale the image provided, it will attempt to set the size of the image
|
|
coming from the video4linux device to match the values provided for height/width.
|
|
<p></p>
|
|
It is important to realize that certain height/width combinations are only valid at
|
|
certain frame rates. The particular combinations which are valid are dependent upon
|
|
the device.
|
|
<p></p>
|
|
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.
|
|
<p></p>
|
|
|
|
<h3><a name="framerate"></a> framerate </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 2 - 100</li>
|
|
<li> Default: 15 </li>
|
|
</ul>
|
|
<p></p>
|
|
Maximum number of frames to be captured from the camera per second.
|
|
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 movies.
|
|
To set intervals longer than one second use the 'minimum_gap' option instead.
|
|
<p></p>
|
|
|
|
<h3><a name="minimum_frame_time"></a> minimum_frame_time </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
Minimum time in seconds between the capturing picture frames from the camera. Default: 0 = disabled - the capture
|
|
rate is given by the camera framerate.
|
|
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.
|
|
<p></p>
|
|
|
|
<h3><a name="rotate"></a> rotate </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Discrete Integers</li>
|
|
<li> Range / Valid values: 0, 90, 180, 270</li>
|
|
<li> Default: 0 (not rotated)</li>
|
|
</ul>
|
|
<p></p>
|
|
Rotate image the given number of degrees. The rotation affects all saved images as well as movies.
|
|
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.
|
|
<p></p>
|
|
|
|
<h3><a name="flip_axis"></a> flip_axis </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Discrete Strings</li>
|
|
<li> Range / Valid values: none, v, h</li>
|
|
<li> Default: none (no change)</li>
|
|
</ul>
|
|
<p></p>
|
|
Flip the image according to specified axis. The flip affects all saved images as well as movies.
|
|
The flip feature is used when the camera is pointed towards a mirror or provides itself a mirrored image (as found in some cars).
|
|
Note that the CPU load increases when using this feature with a value other than none.
|
|
<p></p>
|
|
|
|
<h3><a name="locate_motion_mode"></a> locate_motion_mode </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Discrete Strings</li>
|
|
<li> Range / Valid values: on, off, preview</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Locate and draw a box around the moving object. Value 'preview' makes Motion only draw a box on a
|
|
saved preview jpeg image and not on the saved movie.
|
|
<p></p>
|
|
|
|
<h3><a name="locate_motion_style"></a> locate_motion_style </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Discrete Strings</li>
|
|
<li> Range / Valid values: box, redbox, cross, redcross</li>
|
|
<li> Default: box</li>
|
|
</ul>
|
|
<p></p>
|
|
Set the look and style of the locate box if enabled.
|
|
<p></p>
|
|
|
|
|
|
<h3><a name="text_left"></a> text_left </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
User defined text overlaid on each in the lower left corner.
|
|
Use A-Z, a-z, 0-9, " / ( ) @ ~ # < > \ , . : - + _ \n and conversion specifiers
|
|
<p></p>
|
|
If the option is not defined no text is displayed at this position.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a> to define this field and also include
|
|
a new line specifier as \n and spaces if this option is enclosed in quotes.
|
|
<p></p>
|
|
<p></p>
|
|
By combining spaces and new lines '\n' you can place
|
|
your text anywhere on the picture. When setting the text using http remote control the text
|
|
must be URL encoded. The browser does this for you. If you need
|
|
to set it with a command line tool, use a browser first and let it make the encoded URL for you. Then
|
|
you can copy paste it to your script file or cron line or whatever you want to use.
|
|
<p></p>
|
|
This is how the overlaid text is located.
|
|
<p></p>
|
|
<table border="1" width=100%>
|
|
<tr>
|
|
<td width="45"></td>
|
|
<td width="45" align="right">CHANGES<br> <br> <br> <br> </td>
|
|
</tr>
|
|
<tr>
|
|
<td width="25%"><br> <br> <br> <br> TEXT_LEFT</td>
|
|
<td width="25%" align="right"><br> <br> TEXT_RIGHT<br/>YYYY-MM-DD<br/>HH:MM:SS </td>
|
|
</tr>
|
|
</table>
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="text_right"></a> text_right </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: %Y-%m-%d\\n%T</li>
|
|
</ul>
|
|
<p></p>
|
|
User defined text overlaid on each in the lower right corner.
|
|
Use A-Z, a-z, 0-9, " / ( ) @ ~ # < > \ , . : - + _ \n and conversion specifiers
|
|
<p></p>
|
|
If the option is not defined no text is displayed at this position.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a> to define this field and also include
|
|
a new line specifier as \n and spaces if this option is enclosed in quotes.
|
|
<p></p>
|
|
<p></p>
|
|
By combining spaces and new lines '\n' you can place
|
|
your text anywhere on the picture. When setting the text using http remote control the text
|
|
must be URL encoded. The browser does this for you. If you need
|
|
to set it with a command line tool, use a browser first and let it make the encoded URL for you. Then
|
|
you can copy paste it to your script file or cron line or whatever you want to use.
|
|
<p></p>
|
|
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.
|
|
<p></p>
|
|
This is how the overlaid text is located.
|
|
<p></p>
|
|
<table border="1" width=100%>
|
|
<tr>
|
|
<td width="45"></td>
|
|
<td width="45" align="right">CHANGES<br> <br> <br> <br> </td>
|
|
</tr>
|
|
<tr>
|
|
<td width="25%"><br> <br> <br> <br> TEXT_LEFT</td>
|
|
<td width="25%" align="right"><br> <br> TEXT_RIGHT<br/>YYYY-MM-DD<br/>HH:MM:SS </td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="text_changes"></a> text_changes </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Turns the text showing changed pixels on/off.
|
|
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 testing.
|
|
This is how the overlaid text is located.
|
|
<p></p>
|
|
<table border="1" width=100%>
|
|
<tr>
|
|
<td width="45"></td>
|
|
<td width="45" align="right">CHANGES<br> <br> <br> <br> </td>
|
|
</tr>
|
|
<tr>
|
|
<td width="25%"><br> <br> <br> <br> TEXT_LEFT</td>
|
|
<td width="25%" align="right"><br> <br> TEXT_RIGHT<br/>YYYY-MM-DD<br/>HH:MM:SS </td>
|
|
</tr>
|
|
</table>
|
|
<p></p>
|
|
|
|
<h3><a name="text_scale"></a> text_scale </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 1 - 10</li>
|
|
<li> Default: 1</li>
|
|
</ul>
|
|
<p></p>
|
|
The scale at which to draw text over the image.
|
|
The recommended range is 1 - 10.
|
|
This option makes the text defined by text_left, text_right and text_changes drawn at n-times the normal size.
|
|
This may be useful when using large picture formats such as 1280 x 720.
|
|
<p></p>
|
|
|
|
<h3><a name="text_event"></a> text_event </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: %Y%m%d%H%M%S</li>
|
|
</ul>
|
|
<p></p>
|
|
This option is special in that it defines the conversion specifier %C which can be used both for text
|
|
display and for filenames. This option defines the value of the special event conversion specifier %C.
|
|
You can use any conversion specifier in this option except %C. Date and time values are from the timestamp
|
|
of the first image in the current event. 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.
|
|
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a> to define this field (except for
|
|
this option itself)
|
|
<p></p>
|
|
|
|
<p></p>
|
|
<p></p>
|
|
</ul>
|
|
|
|
<h3><a name="OptDetail_Motion_Detection"></a>Motion Detection</h3>
|
|
<ul>
|
|
<p></p>
|
|
<h3><a name="emulate_motion"></a> emulate_motion </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Always save images even if there was no motion
|
|
<p></p>
|
|
|
|
<h3><a name="threshold"></a> threshold </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 1 - 2147483647</li>
|
|
<li> Default: 1500</li>
|
|
</ul>
|
|
<p></p>
|
|
Threshold for declaring motion. The threshold is the number of changed
|
|
pixels counted after noise filtering, masking, despeckle, and labelling.
|
|
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. (Unless of course
|
|
you are one of the many many users who use Motion to bird watch!)
|
|
Practical values would be from a few hundred to thousands.
|
|
<p></p>
|
|
|
|
<h3><a name="threshold_maximum"></a> threshold_maximum</h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0, 1 to unlimited</li>
|
|
<li> Default: 0 (off)</li>
|
|
</ul>
|
|
<p></p>
|
|
This parameter specifies the maximum number of pixels that will trigger motion. When the number of
|
|
changed pixels is above the maximum, it will not trigger an event. The result is that Motion will
|
|
only trigger events when the number of pixels changes is above the threshold and less than
|
|
the threshold_maximum. A value of zero disables threshold_maximum.
|
|
<p></p>
|
|
|
|
<h3><a name="threshold_tune"></a> threshold_tune </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Activate the automatic tuning of threshold level.
|
|
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.
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="noise_level"></a> noise_level </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 1 - 255</li>
|
|
<li> Default: 32</li>
|
|
</ul>
|
|
<p></p>
|
|
The noise level is used as a threshold for distinguishing between noise and motion.
|
|
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.
|
|
<p></p>
|
|
|
|
<h3><a name="noise_tune"></a> noise_tune </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: on</li>
|
|
</ul>
|
|
<p></p>
|
|
Activates the automatic tuning of noise level.
|
|
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.
|
|
It may give different results depending on camera and light conditions.
|
|
<p></p>
|
|
|
|
<h3><a name="despeckle_filter"></a> despeckle_filter </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Combinations of E,e,D,d and l</li>
|
|
<li> Default: Not defined </li>
|
|
</ul>
|
|
<p></p>
|
|
Despeckle motion image using combinations of (E/e)rode or (D/d)ilate. And ending with optional (l)abeling.
|
|
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.
|
|
<p></p>
|
|
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.
|
|
<p></p>
|
|
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.
|
|
<p></p>
|
|
A very detailed technical explanation of the despeckle part can be found at the webpage of the author of this
|
|
feature <a href="http://emit.demon.co.uk/motion/" rel="nofollow" target="_top">Ian McConnell's Webcam: Motion
|
|
Web Page</a>
|
|
<p></p>
|
|
|
|
<h3><a name="area_detect"></a> area_detect </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
Detect motion in predefined areas (1 - 9) and when Motion is detected in the area, execute the script. All of
|
|
motion detection still continue. This option is only to execute the on_area_detect script.
|
|
<p></p>
|
|
Areas are numbered like
|
|
<ul>
|
|
<li>1 2 3</li>
|
|
<li>4 5 6</li>
|
|
<li>7 8 9</li>
|
|
</li>
|
|
</ul>
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="mask_file"></a> mask_file </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The full path and filename for the masking pgm file.
|
|
If needed, the mask will be resized to match the width and height of the frames being
|
|
captured.
|
|
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 area that you want ignored must be black. The pgm image should be the same size (number of pixels high
|
|
and wide) as the pictures that are taken by the camera so you can define the correct area to mask.
|
|
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.
|
|
If you are using the <a href="#rotate">rotate</a>
|
|
or <a href="#flip_axis">flip_axis</a> options, note that the mask is
|
|
applied <em>after</em> the rotation.
|
|
<p></p>
|
|
<strong>Detailed Description</strong>
|
|
<p></p>
|
|
The mask file must be a pgm format image file (portable gray map). Note that you must choose the BINARY format.
|
|
<p></p>
|
|
To use this feature create an image of exact the same size as the ones you get from your camera.
|
|
Then make it purely white for the areas you want detected and
|
|
black for the areas you want ignored. You can also make gray areas where
|
|
you want to lower the sensitivity to motion. Normally you will stick to pure black and white.
|
|
<p></p>
|
|
One method for generating the mask file is as follows.
|
|
<p></p>
|
|
Take a motion captured picture, edit it with black and white for the mask and export it as a pgm file.
|
|
with a program such as gimp.
|
|
|
|
If you cannot save in this format save as a grayscale jpg and then you can convert it to pgm format with
|
|
<p></p>
|
|
<code>djpeg -grayscale -pnm [inputfile] > mask.pgm</code>
|
|
|
|
<p></p>
|
|
(assuming you have djpeg installed - part of the jpeg lib package).
|
|
<p></p>
|
|
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. Instead
|
|
use the mask_privacy option.
|
|
<p></p>
|
|
Below are an example of a webcam picture and a mask file to prevent the detection cars in the street.
|
|
<p></p>
|
|
Normal picture. Notice the street is visible through the hedge.
|
|
<p></p>
|
|
<img alt="normal.jpg" src="normal.jpg" />
|
|
<p></p>
|
|
Mask file (converted to png format so it can be shown by your web browser)
|
|
<p></p>
|
|
<table style="border-width:1px;" cellspacing="0" cellpadding="0" border="1">
|
|
<tr >
|
|
<td bgcolor="#ffffff" valign="top" style="vertical-align:top;" >
|
|
<img alt="mask1.png" src="mask1.png" />
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<p></p>
|
|
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="mask_privacy"></a> mask_privacy </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The full path and filename for the privacy masking pgm file. This file works like
|
|
the <a href="#mask_file">mask_file</a> as
|
|
described above. The difference with this parameter is that while the mask_file excludes the section from
|
|
detecting motion, this file excludes the section of the image completely.
|
|
<p></p>
|
|
mask_privacy is applied before detection so no motion will ever be detected in the excluded area.
|
|
This parameter could however still be used with the mask_file. e.g. This file could exclude the
|
|
neighbors yard and the <a href="#mask_file">mask_file</a> would exclude the blowing tree from motion
|
|
detection. The resulting
|
|
pictures/movies would show solid black in place of the neighbors yard but the tree would still be in
|
|
the pictures/movies.
|
|
<p></p>
|
|
|
|
<h3><a name="smart_mask_speed"></a> smart_mask_speed </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 10</li>
|
|
<li> Default: 0 (disabled)</li>
|
|
</ul>
|
|
<p></p>
|
|
Speed for the smart mask. Default is 0 = DISABLED. 1 is slow, 10 is fast.
|
|
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.
|
|
<p></p>
|
|
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 <a href="#framerate">framerate</a>. 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 <a href="#setup_mode">setup_mode</a>.
|
|
That way you can
|
|
easily adjust smart_mask_speed.
|
|
<p></p>
|
|
The <a href="#mask_file">mask_file</a> option provides a static mask to turn off sensitivity in certain areas.
|
|
This is very useful to mask a street with cars passing by all day long etc...
|
|
<p></p>
|
|
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 <a href="#despeckle">despeckle</a> 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.
|
|
<p></p>
|
|
The answer to this problem is the smart mask feature A dynamic, self-learing mask.
|
|
<p></p>
|
|
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.
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="lightswitch_percent"></a> lightswitch_percent </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 100</li>
|
|
<li> Default: 0 (disabled)</li>
|
|
</ul>
|
|
<p></p>
|
|
Ignore sudden massive light intensity changes given as a percentage of the picture area that changed intensity.
|
|
The value defines the picture areas in percent that will trigger the lightswitch condition. When lightswitch is
|
|
detected motion detection is disabled for a configured number of frames. This is to avoid false detection when
|
|
light conditions change and when a camera changes sensitivity at low light.
|
|
<p></p>
|
|
|
|
<h3><a name="lightswitch_frames"></a> lightswitch_frames </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 1 - 1000</li>
|
|
<li> Default: 5</li>
|
|
</ul>
|
|
<p></p>
|
|
The number of frames to ignore when the lightswitch condition is triggered (see above).
|
|
<p></p>
|
|
|
|
<h3><a name="minimum_motion_frames"></a> minimum_motion_frames </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 1 - 1000s</li>
|
|
<li> Default: 1</li>
|
|
</ul>
|
|
<p></p>
|
|
Picture frames must contain motion at least the specified number of frames in a row before they are
|
|
detected as true motion. At the default of 1, all motion is detected. Valid range is 1 to thousands,
|
|
but it is recommended to keep it within 1-5.
|
|
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.
|
|
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.
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="event_gap"></a> event_gap </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 60</li>
|
|
</ul>
|
|
<p></p>
|
|
The seconds of no motion detection that triggers the end of an event.
|
|
An event is defined as a series of motion images taken within a short timeframe.
|
|
The value -1 is allowed and disables
|
|
events causing all Motion to be written to one single movie file and no pre_capture.
|
|
If set to 0, motion is running in gapless mode. An
|
|
event ends right after no more motion is detected and post_capture is over.
|
|
|
|
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 -1, 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 timer starts after the last motion is detected and <a href="#post_capture">post_capture</a> images
|
|
have been saved and appended to open movie files.
|
|
Any motion detected before the gap timer times out resets the gap timer so it starts counting over again.
|
|
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 '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:
|
|
<ul>
|
|
<li> A timer that timeouts 'event_gap' seconds after the last video frame with motion is detected.</li>
|
|
<li> If <a href="#post_capture">post_capture</a> is activated then the gap timer starts counting after the last image of the <a href="#post_capture">post_capture</a> buffer has been saved.</li>
|
|
<li> 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 'gap' value. It will just create more events (e.g. more mpegs files)</li>
|
|
</ul>
|
|
The event_gap value impacts many functions in Motion.
|
|
<ul>
|
|
<li> When the 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.</li>
|
|
<li> The <a href="#pre_capture">pre_capture</a> feature only works at the beginning of an event. So if you have a very large 'event_gap'
|
|
value <a href="#pre_capture">pre_capture</a> is not working very often.</li>
|
|
<li> When you make movies using the ffmpeg features a new movie 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 files are completed and closed.</li>
|
|
<li> 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
|
|
you will not be able to view it.</li>
|
|
<li> Some of the tracking features sets the camera back to the center position when an event is over.</li>
|
|
</ul>
|
|
|
|
Note that 'event_gap' and 'minimum_gap' have nothing to do with each other.
|
|
<p></p>
|
|
|
|
<h3><a name="pre_capture"></a> pre_capture </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 100s</li>
|
|
<li> Default: 0 (disabled)</li>
|
|
</ul>
|
|
<p></p>
|
|
Specifies the number of pre-captured (buffered) pictures from before motion
|
|
was detected that will be output at motion detection.
|
|
The recommended range is 0 to 5. It is not recommended to use large values.
|
|
Large values will cause Motion to skip video frames and cause unsmooth movies.
|
|
<p></p>
|
|
This is because Motion is processing all the buffered images including saving jpegs,
|
|
encoding the movie, writing to databases and executing external programs immediately
|
|
after the first image is detected as Motion.
|
|
<p></p>
|
|
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 probably miss many frames of Motion.
|
|
<p></p>
|
|
To create smooth movies use larger values of <a href="#post_capture">post_capture</a> instead.
|
|
<p></p>
|
|
Motion buffers the number of picture frames defined by 'pre_capture'. When motion is detected the pictures in the
|
|
buffer are included in the movie. 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.
|
|
<p></p>
|
|
If pre_capture is set to 0 the feature is disabled. 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.
|
|
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.
|
|
<p></p>
|
|
It is therefore recommended to use relatively small values for pre_capture.
|
|
Depending on your chosen framerate and depending on the features enabled values from 1-5 are sensible.
|
|
<p></p>
|
|
To get a smooth movie use a large value for <a href="#post_capture">post_capture</a> which does not cost any performance hit or RAM
|
|
space.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="post_capture"></a> post_capture </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0 (disabled)</li>
|
|
</ul>
|
|
<p></p>
|
|
Specifies the number of frames to be captured after motion has been detected.
|
|
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 movies and do not have output_normal on, then the recommended post_capture value is what is
|
|
equivalent to 1-5 seconds (Don't forget to multiply the seconds desired by the framerate for this parameter)
|
|
<p></p>
|
|
|
|
|
|
<p></p>
|
|
</ul>
|
|
|
|
<h3><a name="OptDetail_Scripts"></a> Script Execution </h3>
|
|
<ul>
|
|
<p></p>
|
|
Motion can execute external commands based on the motion detection and related events.
|
|
They are described in the sections below.
|
|
<p></p>
|
|
<strong>Security Warning!</strong>
|
|
<p></p>
|
|
These features mean you have to pay attention to the following.
|
|
<ul>
|
|
<li> Anyone with access to the remote control port (http) can execute any command on your computer with
|
|
the same privileges as the user running Motion.
|
|
Anyone can access your control port if you have not either limited access to localhost or
|
|
limited access using firewalls in the server.
|
|
You should always have a router between a machine running Motion with remote control
|
|
enabled and the Internet and make sure the Motion control port is not accessible from the outside.
|
|
</li>
|
|
<li> If you limit control port to localhost you still need to take care of any user logging into the server
|
|
with any kind of GUI or terminal session. All it takes is a browser or single command line execution to
|
|
change settings in Motion.
|
|
</li>
|
|
<li> It is a good idea to run Motion as a harmless user. Not as root!!</li>
|
|
</ul>
|
|
<p></p>
|
|
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="on_event_start"></a> on_event_start </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The full path and file name of the program/script to be executed at the start of an event.
|
|
An event starts at first motion detected after a
|
|
period of no motion defined by gap.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a>
|
|
and spaces as part of the command. 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.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="on_event_end"></a> on_event_end </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The full path and file name of the program/script to be executed when a event ends.
|
|
An event ends after the event_gap has expired.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a>
|
|
and spaces as part of the command. 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.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="on_picture_save"></a> on_picture_save </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The full path and file name of the program/script to be executed when a picture is saved.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a>
|
|
and spaces as part of the command. 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.
|
|
<p></p>
|
|
Use %f for passing filename (with full path) to the command.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="on_motion_detected"></a> on_motion_detected </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The full path and file name of the program/script to be executed when motion is detected.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a>
|
|
and spaces as part of the command. 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.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="on_area_detected"></a> on_area_detected </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The full path and file name of the program/script to be executed when motion is
|
|
detected in the predefined area indicated in the area_detect option.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a>
|
|
and spaces as part of the command. 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.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="on_movie_start"></a> on_movie_start </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The full path and file name of the program/script to be executed when a
|
|
new movie is being created.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a>
|
|
and spaces as part of the command. 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.
|
|
<p></p>
|
|
Use %f for passing filename (with full path) to the command.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="on_movie_end"></a> on_movie_end </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
<p></p>
|
|
The full path and file name of the program/script to be executed after a new
|
|
movie was created.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a>
|
|
and spaces as part of the command. 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.
|
|
<p></p>
|
|
Use %f for passing filename (with full path) to the command.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="on_camera_lost"></a> on_camera_lost </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The full path and file name of the command to be executed when a camera can't be opened or if it is lost.
|
|
<br />Note that there are situations when motion doesn't detect a lost camera. It is
|
|
dependent upon the camera and driver and it is advised that this option be tested
|
|
for each configuration. It has also been observed that there are also
|
|
situations in which the disconnection of the camera even hangs the PC in which
|
|
case this script will not be executed.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a>
|
|
and spaces as part of the command. 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.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="on_camera_found"></a> on_camera_found </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The full path and file name of the command to be executed when a lost camera is found
|
|
<br />If motion fails to detect a lost camera, it will also fail to know it found one.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a>
|
|
and spaces as part of the command. 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.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
</ul>
|
|
|
|
<h3><a name="OptDetail_Pictures"></a>Output - Picture Options </h3>
|
|
<ul>
|
|
<p></p>
|
|
Motion can output different types of pictures. The normal picture is indicated below.
|
|
<p></p>
|
|
<img alt="outputnormal1.jpg" src="outputnormal1.jpg" />
|
|
<p></p>
|
|
The motion type picture or also referred to as a debug picture is shown
|
|
below. Note that the largest area is blue and only this is counted as Motion.
|
|
<p></p>
|
|
The Motion image shows how Motion maintains a "reference frame" which is not just the last picture frame
|
|
but a mathematical calculation of the past images. This enlarges real Motion and ensures that it is not easy to
|
|
sneak in slowly.
|
|
<p></p>
|
|
<img alt="outputmotion1.jpg" src="outputmotion1.jpg" />
|
|
<p></p>
|
|
<p></p>
|
|
|
|
|
|
<h3><a name="picture_output"></a> picture_output </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Discrete Strings</li>
|
|
<li> Range / Valid values: on, off, first, best</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
This option controls the output of the normal image.
|
|
<p></p>
|
|
'on' is the usual selection.
|
|
<p></p>
|
|
'first' is Motion saves only the first motion detected picture per event.
|
|
<p></p>
|
|
"best" requires a little more CPU power and resources compared to "first".
|
|
If you set it to "best" Motion saves the picture with most changed pixels during the event.
|
|
This may be useful if you store movies on a server and want to present a jpeg to show the content of the movie
|
|
on a webpage.
|
|
<p></p>
|
|
'off' to don't write pictures
|
|
<p></p>
|
|
When the <a href="#netcam_highres">netcam_highres</a> option is selected along with the
|
|
<a href="#movie_passthrough">movie_passthrough</a> the output pictures will be provided in normal resolution
|
|
not high resolution.
|
|
<p></p>
|
|
|
|
<h3><a name="picture_output_motion"></a> picture_output_motion </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Output pictures with only the moving object.
|
|
This feature generates the special motion type movies where you only see the pixels that
|
|
changes as a graytone image. If labelling is enabled you see the largest area in blue.
|
|
<p></p>
|
|
If a Smartmask is specified, it is shown in red.
|
|
<p></p>
|
|
This option is good for tuning and testing but probably not very interesting for the general public.
|
|
<p></p>
|
|
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.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="picture_type"></a> picture_type </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Discrete Strings</li>
|
|
<li> Range / Valid values: jpeg, webp, ppm</li>
|
|
<li> Default: jpeg</li>
|
|
</ul>
|
|
<p></p>
|
|
This option specifies the type of picture file to output. The recommendation is to always use jpeg except
|
|
if you have a specific need to store high quality pictures without any quality loss.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="picture_quality"></a> picture_quality </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 1 - 100</li>
|
|
<li> Default: 75</li>
|
|
</ul>
|
|
<p></p>
|
|
The quality for the jpeg or webp images in percent.
|
|
100 means hardly compressed. A small number means a much smaller file size but also a poorer
|
|
quality image to look at.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="picture_exif"></a> picture_exif </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
Use this option to specify the text to include in a JPEG EXIF comment
|
|
The EXIF timestamp is included independent of this text.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a> in this option.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="picture_filename"></a> picture_filename </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: %v-%Y%m%d%H%M%S-%q</li>
|
|
</ul>
|
|
<p></p>
|
|
This option indicates the file name and optionally the path for the pictures relative to target_dir.
|
|
<p></p>
|
|
The file extension .jpg, webp or .ppm is automatically added.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a> in this option.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="snapshot_interval"></a> snapshot_interval </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0 (disabled)</li>
|
|
</ul>
|
|
<p></p>
|
|
This parameter specifies the number of seconds between each snapshot
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="snapshot_filename"></a> snapshot_filename </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: %v-%Y%m%d%H%M%S-snapshot</li>
|
|
</ul>
|
|
<p></p>
|
|
This option indicates the file name and optionally the path for the snapshots relative to target_dir.
|
|
<p></p>
|
|
The file extension .jpg, webp or .ppm is automatically added.
|
|
<p></p>
|
|
A symbolic link called lastsnap.jpg is created in the target_dir and will always
|
|
point to the latest snapshot, unless snapshot_filename is exactly 'lastsnap'
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a> in this option.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
</ul>
|
|
|
|
<h3><a name="OptDetail_Movies"></a>Output - Movie Options</h3>
|
|
<ul>
|
|
<p></p>
|
|
|
|
<h3><a name="movie_output"></a>movie_output </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: on</li>
|
|
</ul>
|
|
<p></p>
|
|
Use ffmpeg libraries to encode movies of the motion. This option
|
|
generates a new movie at the beginning of each new event and appends to the
|
|
movie for each motion detected within the same event.
|
|
The current event ends when the time defined by the 'event_gap' option has passed with no motion detected.
|
|
At the next detection of motion a new movie is started.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="movie_output_motion"></a>movie_output_motion</h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Use ffmpeg libraries to encode motion type movies where you only see the pixels that changes.
|
|
Works like movie_output 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 labeling is enabled you see the largest area in blue.
|
|
Smartmask is shown in red. The filename given is the same as the normal movies except they
|
|
have an 'm' appended after the filename.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="movie_max_time"></a> movie_max_time </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 (infinite) - 2147483647</li>
|
|
<li> Default: 120</li>
|
|
</ul>
|
|
<p></p>
|
|
The maximum length of a movie in seconds. Set this to zero for unlimited length.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="movie_bps"></a> movie_bps </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 9999999</li>
|
|
<li> Default: 400000</li>
|
|
</ul>
|
|
<p></p>
|
|
Bitrate of movies produced by ffmpeg. Bitrate is bits per second.
|
|
A higher value means better quality and larger files if the camera is on a fixed bitrate setting.
|
|
Experiment to get the desired quality. The better quality the bigger files.
|
|
This option is ignored if movie_quality is not 0 (disabled).
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="movie_quality"></a> movie_quality </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 100</li>
|
|
<li> Default: 60</li>
|
|
</ul>
|
|
<p></p>
|
|
Enables and defines a variable bitrate for the ffmpeg encoder.
|
|
The option of movie_bps is ignored if variable bitrate is enabled.
|
|
A value of 0 disables this option while values 1 - 100 varies the quality
|
|
of the movie. The value of 1 means worst quality and 100 is the best quality.
|
|
<p></p>
|
|
Experiment for the value that gives you the desired compromise between size and quality.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="movie_codec"></a> movie_codec </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Discrete Strings</li>
|
|
<li> Range / Valid values: mpeg4, msmpeg4, swf, flv, ffv1, mov, mp4, mkv, hevc</li>
|
|
<li> Default: mkv</li>
|
|
</ul>
|
|
<p></p>
|
|
Container/Codec to be used for the video.
|
|
<p></p>
|
|
<ul>
|
|
<li>mpeg4 or msmpeg4 - gives you files with extension .avi</li>
|
|
<li>swf - gives you a flash film with extension .swf</li>
|
|
<li>flv - gives you a flash video with extension .flv </li>
|
|
<li>ffv1 - FF video codec 1 for Lossless Encoding </li>
|
|
<li>mov - QuickTime </li>
|
|
<li>mp4 - MPEG-4 Part 14 H264 encoding</li>
|
|
<li>mkv - Matroska container with H264 encoding</li>
|
|
<li>hevc -MP4 container with H.265 / HEVC (High Efficiency Video Coding)</li>
|
|
</ul>
|
|
|
|
<p></p>
|
|
Note that certain containers can handle different codecs than the defaults indicated above. For example, the
|
|
mkv container can handle virtually any codec. Motion can optionally take an additional specification with this
|
|
parameter. By specifying the container (mkv) and then appending a semicolon and the ffmpeg codec name Motion
|
|
will attempt to use the specified codec for the container. This permits options such as encoding the h265 codec
|
|
into a mkv container instead of mp4 by specifying the option as <code>mkv:libx265</code>
|
|
<p></p>
|
|
|
|
<h3><a name="movie_duplicate_frames"></a> movie_duplicate_frames </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
When specified, if the CPU can not keep up with the requested frame rate for the movies,
|
|
frames will be duplicated in order to keep up with the frame rate. Use this option with care
|
|
since the resulting movies will have the same frame sent multiple times and therefore the
|
|
movie may appear to "stall" and look terrible.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="movie_passthrough"></a> movie_passthrough </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
When using a RTSP, RTMP, mjpeg and some V4l2 cameras, create movie files of the motion with the packets
|
|
obtained directly from the camera.
|
|
<p></p>
|
|
For mjpeg cameras, the url must be specified using the <code>mjpeg</code> prefix rather than
|
|
as <code>http</code>
|
|
<p></p>
|
|
For v4l2 cameras to use the movie_passthrough, they must be specified using the
|
|
<a href="#netcam_url">netcam_url</a> parameter and the <code>v4l2</code> prefix.
|
|
<u>Only</u> webcams that provide mjpeg (<a href="#v4l2_palette">v4l2_palette</a> option 8)
|
|
or H264 (<a href="#v4l2_palette">v4l2_palette</a> option 21) will work with the
|
|
<a href="#movie_passthrough">movie_passthrough</a>.
|
|
<p></p>
|
|
|
|
<p></p>
|
|
When using only the single <a href="#netcam_url">netcam_url</a> this option will reduce the processing
|
|
required when encoding the images to the resulting movie file. Decoding of the image will still occur on the
|
|
image in order to process the motion detection.
|
|
<p></p>
|
|
When using both the <a href="#netcam_url">netcam_url</a> and the <a href="#netcam_highres">netcam_highres</a>
|
|
what will occur is that normal resolution stream will be captured and decoded, when motion is detected, the
|
|
high resolution images will be captured and processed into the movie file without going through the decode/encode
|
|
processing.
|
|
<p></p>
|
|
This option should reduce CPU usage but does increase memory requirements.
|
|
<p></p>
|
|
No image processing is performed so text overlays, privacy masks etc will not be on the resulting video. The
|
|
resulting movie may also include a few extra frames at the start that would not exist if the movie was created
|
|
without the passthrough option.
|
|
<p></p>
|
|
Since this option bypasses the decoding of the high resolution images to reduce CPU, when images are saved via
|
|
the <a href="#picture_output">picture_output</a> option, the pictures provided will be from the normal resolution stream.
|
|
<p></p>
|
|
|
|
<h3><a name="movie_filename"></a> movie_filename </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: %v-%Y%m%d%H%M%S</li>
|
|
</ul>
|
|
<p></p>
|
|
File path for motion triggered movies relative to target_dir. Note that the file
|
|
extension is automatically added to the name based upon the codec selected.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a> in this option.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="movie_extpipe_use"></a> movie_extpipe_use </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
This option specifies whether to send the output to a
|
|
pipe for external encoding into a movie.
|
|
<p></p>
|
|
Piping raw video to stdout has some advantages comparing to using built-in ffmpeg encoder.
|
|
<br />First, you can use any encoder that supports RAW frames from stdin so you are not limited to the formats
|
|
that are currently implemented in motion. See examples in <a href="#movie_extpipe">movie_extpipe</a>
|
|
<br />Second, external encoders utilize separate cpu core(s) on multi-core systems so movie encoding
|
|
is offloaded from main motion thread to separate core(s) giving noticeable performance boost
|
|
<p></p>
|
|
Note that this option does not require the install or configure of the videoloopback software.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="movie_extpipe"></a> movie_extpipe </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
This option specifies the program name and options for the
|
|
program that will receive and process the images during a movie event.
|
|
<p></p>
|
|
Note that this option does not require the install or configure of the videoloopback software.
|
|
<p></p>
|
|
Sample:
|
|
<p></p>
|
|
<code>
|
|
movie_extpipe mencoder -demuxer rawvideo -rawvideo w=%w:h=%h:i420 -ovc x264 -x264encopts bframes=4:frameref=1:subq=1:scenecut=-1:nob_adapt:threads=1:keyint=1000:8x8dct:vbv_bufsize=4000:crf=24:partitions=i8x8,i4x4:vbv_maxrate=800:no-chroma-me -vf denoise3d=16:12:48:4,pp=lb -of avi -o %f.avi - -fps %fps
|
|
</code>
|
|
<p></p>
|
|
<code>
|
|
movie_extpipe x264 - --input-res %wx%h --fps %fps --bitrate 2000 --preset ultrafast --quiet -o %f.mp4
|
|
</code>
|
|
<p></p>
|
|
<code>
|
|
movie_extpipe mencoder -demuxer rawvideo -rawvideo w=%w:h=%h:fps=%fps -ovc x264 -x264encopts preset=ultrafast -of lavf -o %f.mp4 - -fps %fps
|
|
</code>
|
|
<p></p>
|
|
<code>
|
|
movie_extpipe ffmpeg -y -f rawvideo -pix_fmt yuv420p -video_size %wx%h -framerate %fps -i pipe:0 -vcodec libx264 -preset ultrafast -f mp4 %f.mp4
|
|
</code>
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="timelapse_interval"></a> timelapse_interval </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0 (disabled)</li>
|
|
</ul>
|
|
<p></p>
|
|
Create a timelapse video saving a picture frame at the interval in seconds set by this parameter.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="timelapse_mode"></a> timelapse_mode </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Discrete Strings</li>
|
|
<li> Range / Valid values: hourly, daily, weekly-sunday, weekly-monday, monthly, manual</li>
|
|
<li> Default: daily</li>
|
|
</ul>
|
|
<p></p>
|
|
The file rollover mode of the timelapse video.
|
|
Note that it is important that you use the <a href="#conversion_specifiers">Conversion Specifiers</a>
|
|
in timelapse_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.
|
|
<br />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
|
|
<a href="#timelapse_interval">timelapse_interval</a> to 0 and then back to your chosen value.
|
|
<p></p>
|
|
The 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.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="timelapse_fps"></a> timelapse_fps </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 100's</li>
|
|
<li> Default: 30</li>
|
|
</ul>
|
|
<p></p>
|
|
The frame per second rate to use in the playback of the timelapse video.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="timelapse_codec"></a> timelapse_codec </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Discrete Strings</li>
|
|
<li> Range / Valid values: mpg, mpeg4</li>
|
|
<li> Default: mpg</li>
|
|
</ul>
|
|
<p></p>
|
|
Container/Codec to be used by timelapse video.
|
|
<p></p>
|
|
<ul>
|
|
<li>mpg - Creates mpg 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.</li>
|
|
<li>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.</li>
|
|
</ul>
|
|
<p></p>
|
|
Note that different containers are NOT planned for this option since the nature of recording a timelapse
|
|
is not what typical movies containers and codecs are designed to do. Users desiring a different container/codec
|
|
can use ffmpeg directly to either re-encode a finished timelapse video or output the timelapse as jpg picture
|
|
files and use ffmpeg to encode those jpgs into a movie.
|
|
<p></p>
|
|
|
|
<h3><a name="timelapse_filename"></a> timelapse_filename </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: %Y%m%d-timelapse</li>
|
|
</ul>
|
|
<p></p>
|
|
File path for the timelapse videos relative to target_dir. Note that the file
|
|
extension is automatically added to the name based upon the codec selected.
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a> in this option.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
|
|
</ul>
|
|
|
|
<h3><a name="OptDetail_Pipe"></a>Output - Pipe Options</h3>
|
|
<ul>
|
|
<p></p>
|
|
Motion provides two pipe variations. The first option is a v4l2loopback device with normal images.
|
|
Using this pipe option, the video that is captured from the v4l2 device is piped into a new
|
|
v4l2 device using the v4l2loopback software. This piping is desired when the user wishes to
|
|
use the video device at the same time as Motion is using the same device. By default, only
|
|
one application can have a device open at one time. Unlike a physical device, the videoloopback
|
|
devices take both input and output. The module simply takes anything that comes on its input
|
|
and send it out at the output.
|
|
<p></p>
|
|
When you install the video loopback device it will create a new device for example /dev/video1 while
|
|
the actual webcam device would be /dev/video0. You can then tell motion to open the physical
|
|
device (/dev/video0) and "pipe" the video signal to the /dev/video1. You will then be able to open
|
|
the /dev/video1 device with external videoplayers such as VLC and and look at the pictures live.
|
|
VLC is "fooled" to think it is looking at a real camera.
|
|
<p></p>
|
|
<strong>Installing</strong>
|
|
<p></p>
|
|
The video loopback device can be added installed via apt in many distributions. The package tested
|
|
with Motion is v4l2loopback-dkms. Once the package is installed, you just need to run
|
|
<code>sudo modprobe v4l2loopback</code>. This will add a new video device that you
|
|
can use for the loopback. It is believed that there are additional options associated with the
|
|
v4l2loopback that allows for adding more than one device. See the documentation of the v4l2loopback
|
|
project for additional details.
|
|
<p></p>
|
|
To activate the vloopback device in Motion set the 'video_pipe' option in the motion.conf file to the
|
|
device name associated with the one created by v4l2loopback.
|
|
<br />You can also view the special motion pictures where you see the changed pixels by setting the option
|
|
'video_pipe_motion' in motion.conf. When setting the video_pipe and/or video_pipe_motion options
|
|
specify the input device as e.g. /dev/video1.
|
|
<p></p>
|
|
De-activating should be done with this command
|
|
<p></p>
|
|
<code>sudo modprobe -r v4l2loopback</code>
|
|
<p></p>
|
|
The second option for pipe is the same as the above except motion images are sent to the loopback device.
|
|
<p></p>
|
|
|
|
<h3><a name="video_pipe"></a> video_pipe </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The video4linux video loopback device for normal images. The device would be specified
|
|
in the format like /dev/video1
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="video_pipe_motion"></a> video_pipe_motion </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The video4linux video loopback device for motion images. The device would be specified
|
|
in the format like /dev/video1
|
|
<p></p>
|
|
<p></p>
|
|
|
|
</ul>
|
|
|
|
<h3><a name="OptDetail_Webcontrol"></a>Web Control</a> </h3>
|
|
<ul>
|
|
<p></p>
|
|
Motion has a limited web interface to control some parameters while running. By default, the
|
|
changing of any parameters via the web interface is disabled
|
|
via the <a href="#webcontrol_parms">webcontrol_parms</a> configuration option. This is for
|
|
security purposes. If the <a href="#webcontrol_parms">webcontrol_parms</a> is enabled, some Motion
|
|
configuration options can be changed while Motion is running. Other configuration options must be
|
|
saved and Motion restarted to become effective.
|
|
<p></p>
|
|
If your <a href="#webcontrol_port">webcontrol_port</a> is 8080, then open the following from the same
|
|
machine on which Motion is running
|
|
<a href="http://localhost:8080/" rel="nofollow" target="_top">http://localhost:8080/</a>
|
|
<p></p>
|
|
To access the web control from remote machine, first set the
|
|
<a href="#webcontrol_localhost">webcontrol_localhost</a> to <code>off</code> then
|
|
connect using the IP of the remote machine instead of <code>localhost</code> (example
|
|
<a href="http://192.168.1.4:8080/" rel="nofollow" target="_top">http://192.168.1.4:8080/</a>).
|
|
<p></p>
|
|
If you want to use a script or cron to automatically change Motion settings while Motion runs, use a
|
|
program that can fetch or send a webpage. Common programs are <code> wget </code>, <code>lwp-request</code>
|
|
and <code>curl</code>.
|
|
<p></p>
|
|
Example to pause motion detection
|
|
<p></p>
|
|
<code>
|
|
lwp-request http://localhost:8080/0/detection/pause
|
|
</code>
|
|
<p></p>
|
|
Example to start motion detection
|
|
<p></p>
|
|
<code>
|
|
lwp-request http://localhost:8080/0/detection/start
|
|
</code>
|
|
<p></p>
|
|
Example script to update the text_left with cpu load (verbose for clarity)
|
|
<p></p>
|
|
<code>
|
|
#!/bin/bash<br>
|
|
<br>
|
|
LOAD=`top -b -n2 | grep "Cpu(s)" | awk '{print $2+$4}' | tail -n1`<br>
|
|
<br>
|
|
TEXTLEFT=""<br>
|
|
TEXTLEFT=$TEXTLEFT"System at %{host}"<br>
|
|
TEXTLEFT=$TEXTLEFT"\nCPU $LOAD "<br>
|
|
TEXTLEFT=$TEXTLEFT"\nfps: %{fps}"<br>
|
|
TEXTLEFT=$TEXTLEFT"\nDate: %Y-%m-%d"<br>
|
|
TEXTLEFT=$TEXTLEFT"\n%T-%q"<br>
|
|
<br>
|
|
# Replace special chars with needed urlcodes<br>
|
|
TEXTLEFT="${TEXTLEFT//%/%25}" #Replace % with %25<br>
|
|
TEXTLEFT="${TEXTLEFT// /%20}" #Replace spaces with %20<br>
|
|
TEXTLEFT="${TEXTLEFT//\{/%7B}" #Replace { with %7B<br>
|
|
TEXTLEFT="${TEXTLEFT//\}/%7D}" #Replace } with %7D<br>
|
|
<br>
|
|
curl http://localhost:8080/1/config/set?text_left=$TEXTLEFT<br>
|
|
<br>
|
|
return 0<br>
|
|
</code>
|
|
Note that the replacement of characters with the urlcode values is required whenever updating via
|
|
a script or outside the html/css <a href="#webcontrol_interface">webcontrol_interface</a>
|
|
<p></p>
|
|
To control from your own software (for example your own PHP front end) the motion.conf
|
|
option <a href="#webcontrol_interface">webcontrol_interface</a> can be set to <code>1</code>(text) which
|
|
will cause Motion to remove the html tags in the responses and there is no navigation of any pages via
|
|
a web browser.
|
|
<p></p>
|
|
The following definitions will be used when summarizing the commands that are available for control
|
|
of Motion.
|
|
<ul>
|
|
<li><code>{IP}</code> The IP address of the computer running Motion</li>
|
|
<li><code>{port}</code> The port specified for the webcontrol</li>
|
|
<li><code>{camid}</code> The <a href="#camera_id">camera_id</a> of the camera.</li>
|
|
<li><code>{parm}</code> The Motion configuration parameter requested.</li>
|
|
<li><code>{value1}</code> The first value of the Motion configuration parameter requested.</li>
|
|
<li><code>{value2}</code> The second value of the Motion configuration parameter requested.</li>
|
|
</ul>
|
|
<p></p>
|
|
The following are the commands available.
|
|
<p></p>
|
|
<ul>
|
|
<li><code>{IP}:{port}/{camid}/config/list</code> Lists all the configuration values for the camera. </li>
|
|
<li><code>{IP}:{port}/{camid}/config/set?{parm}={value1}</code>Set the value for the requested parameter </li>
|
|
<li><code>{IP}:{port}/{camid}/config/get?query={parm}</code> Return the value currently set for the parameter.</li>
|
|
<li><code>{IP}:{port}/{camid}/config/write</code> Write the current parameters to the file.</li>
|
|
<li><code>{IP}:{port}/{camid}/detection/status</code> Return the current status of the camera.</li>
|
|
<li><code>{IP}:{port}/{camid}/detection/connection</code> Return the connection status of the camera.</li>
|
|
<li><code>{IP}:{port}/{camid}/detection/start</code> Start or resume motion detection. </li>
|
|
<li><code>{IP}:{port}/{camid}/detection/pause</code> Pause the motion detection.</li>
|
|
<li><code>{IP}:{port}/{camid}/action/eventstart</code> Trigger a new event.</li>
|
|
<li><code>{IP}:{port}/{camid}/action/eventend</code> Trigger the end of a event.</li>
|
|
<li><code>{IP}:{port}/{camid}/action/snapshot</code> Create a snapshot</li>
|
|
<li><code>{IP}:{port}/{camid}/action/restart</code> Shutdown and restart Motion</li>
|
|
<li><code>{IP}:{port}/{camid}/action/quit</code> Close all connections to the camera</li>
|
|
<li><code>{IP}:{port}/{camid}/action/end</code> Entirely shutdown the Motion application</li>
|
|
<li><code>{IP}:{port}/{camid}/track/center</code> Send command to center PTZ camera</li>
|
|
<li><code>{IP}:{port}/{camid}/track/set?x={value1}&y={value2}</code> Send command to PTZ camera to move
|
|
to location specified by x and y</li>
|
|
<li><code>{IP}:{port}/{camid}/track/set?pan={value1}&tilt={value2}</code> Send command to PTZ camera to
|
|
pan to value1 and tilt to value2</li>
|
|
</ul>
|
|
<p></p>
|
|
As a general rule, when the {camid} references the camera_id in the main motion.conf file, the webcontrol
|
|
actions referenced above are going to be applied to every camera that is connected to Motion. This camera_id
|
|
is usually specified as 0 (zero). So issuing a command of <code>{IP}:{port}/0/detection/pause</code> is
|
|
going to pause all the cameras.
|
|
<p></p>
|
|
A point of clarification with respect to the differences between <code>pause</code>, <code>quit</code>,
|
|
and <code>end</code>. When the action of <code>pause</code> is executed, Motion will stop the motion detection
|
|
processing and of course all events but will continue to process and decode images from the camera. This allows
|
|
for a faster transition when the user executes a <code>start</code> The <code>quit</code> action conversely not
|
|
only stops the motion detection but also disconnects from the camera and decoding of images. To start motion
|
|
detection after a <code>quit</code>, the user must execute a <code>restart</code> which will reinitialize the
|
|
connection to the camera. And since the camera was completely disconnect, it can take more than a few seconds
|
|
for Motion to fully start and have the camera available for processing or viewing. Finally, there is an
|
|
option for <code>end</code>. This option completely terminates the Motion application. It closes all connections
|
|
to all the cameras and terminates the application. This may be required when running Motion in daemon mode.
|
|
Note that there is no way to restart the Motion application from the webcontrol interface after processing
|
|
a <code>end</code> request.
|
|
|
|
<p></p>
|
|
If the item above is available via the HTML/CSS interface, it is also possible to see the exact URL sent
|
|
to Motion in the log. Change the log level to 8 (debug), then open up the Motion webcontrol interface and
|
|
perform the action in question. In the log Motion will report the exact URL sent to Motion that performed
|
|
the action.
|
|
<p></p>
|
|
<strong>ALERT!</strong> Security Warning! This feature also means you have to pay attention
|
|
to the following.
|
|
<ul>
|
|
<li> Anyone with access to the remote control port (http) can alter the values of options
|
|
and save files anywhere on your server with the same privileges as the user running Motion.
|
|
They can execute any command on your computer with the same privileges as the user running Motion.
|
|
Anyone can access your control port if you have not either limited access to localhost or limited
|
|
access using firewalls in the server. You should always have a router between a machine running
|
|
Motion with remote control enabled and the Internet and make sure the Motion control port is not
|
|
accessible from the outside. Also make sure to adjust the
|
|
<a href="#webcontrol_parms">webcontrol_parms</a> to the lowest level possible.</li>
|
|
<li> If you limit control port to localhost you still need to take care of any user logging
|
|
into the server with any kind of terminal session.</li>
|
|
<li> Run Motion as a harmless user. DO NOT RUN AS ROOT!!</li>
|
|
</ul>
|
|
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="webcontrol_port"></a> webcontrol_port </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 65535</li>
|
|
<li> Default: 0 (disabled)</li>
|
|
</ul>
|
|
<p></p>
|
|
Sets the port number for the http based control of the Motion parameters.
|
|
This option must be placed in the motion.conf file and not in a camera config file.
|
|
Port numbers below 1024 normally require that you have root privileges.
|
|
The port 8080 is the typical selection of the port for this purpose.
|
|
<p></p>
|
|
|
|
<h3><a name="webcontrol_ipv6"></a> webcontrol_ipv6 </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Listen for connections from IPv6 and IPV4.
|
|
<p></p>
|
|
|
|
<h3><a name="webcontrol_localhost"></a> webcontrol_localhost </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: on</li>
|
|
</ul>
|
|
<p></p>
|
|
This option restricts the control of the Motion parameters to the localhost.
|
|
This option must be placed in motion.conf and not in a camera config file.
|
|
By setting this to on, the control using http (browser) can only be accessed on the
|
|
same machine on which Motion is running.
|
|
<p></p>
|
|
|
|
<h3><a name="webcontrol_parms"></a> webcontrol_parms </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 3</li>
|
|
<li> Default: 0 </li>
|
|
</ul>
|
|
<p></p>
|
|
Sets the type of parameters that will be listed on the webcontrol page and available for
|
|
modification.
|
|
<ul>
|
|
<li> 0: None - No configuration parameters will be available.</li>
|
|
<li> 1: Limited- A limited list of parameters will be available. </li>
|
|
<li> 2: Advanced - The advanced list of parameters will be available. These typically require Motion to be restarted to become effective.</li>
|
|
<li> 3: Restricted - User IDs, passwords and "on_" commands.</li>
|
|
</ul>
|
|
The default for this parameter is 0 (none) to enhance the security of the web interface. The setting of the
|
|
webcontrol_parms is NEVER included on the web interface and this parameter must be specified via the configuration file.
|
|
<b>EXTREME</b> Care should be exercised when using level restricted level because if the webcontrol is compromised,
|
|
it may compromise the computer.
|
|
<p></p>
|
|
Users are strongly advised to only set this option to something other than zero when initially setting up the
|
|
cameras. Once Motion has been configured, it is advised to complete the set up by setting this value back to zero!
|
|
<p></p>
|
|
|
|
<h3><a name="webcontrol_interface"></a> webcontrol_interface </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
The type of webcontrol interface to provide.
|
|
<ul>
|
|
<li>The value of 0 provides a traditional web page interface using html/css.</li>
|
|
<li>The value of 1 provides a text only interface suitable for programmatic access.</li>
|
|
<li>The value of 2 provides the legacy web control interface</li>
|
|
</ul>
|
|
<p></p>
|
|
This option must be placed in motion.conf and not in a camera config file. The
|
|
recommended value for most is "0" which provides a page you can navigate and control
|
|
Motion with a normal browser.
|
|
<p></p>
|
|
|
|
<h3><a name="webcontrol_auth_method"></a> webcontrol_auth_method </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values:0, 1, 2 </li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
Authentication method to use for the webcontrol port
|
|
<ul>
|
|
<li>0 = disabled </li>
|
|
<li>1 = Basic authentication </li>
|
|
<li>2 = Digest authentication </li>
|
|
</ul>
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="webcontrol_authentication"></a> webcontrol_authentication </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
This parameter establishes the username and password to use for the stream.
|
|
The syntax is username:password
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="webcontrol_tls"></a> webcontrol_tls </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
This option specifies whether to enable SSL/TLS for the webcontrol port. For some distributions
|
|
the library that Motion uses may not have been compiled with SSL/TLS support. In this situation
|
|
Motion can not support SSL/TLS connections. Whether SSL/TLS can be supported will be reported in
|
|
the log. In addition to selecting this option, a <a href="#webcontrol_cert">webcontrol_cert</a> and
|
|
<a href="#webcontrol_key">webcontrol_key</a> file must also be specified.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="webcontrol_cert"></a> webcontrol_cert </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
Full path to the certification file for SSL/TLS support. Only used when
|
|
<a href="#webcontrol_tls">webcontrol_tls</a> is enabled.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="webcontrol_key"></a> webcontrol_key </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
Full path to the key file for SSL/TLS support. Only used when
|
|
<a href="#webcontrol_tls">webcontrol_tls</a> is enabled.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="webcontrol_cors_header"></a> webcontrol_cors_header </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: * or a valid URI</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The Access-Control-Allow-Origin header value to be sent with the webcontrol.
|
|
If unspecified, no Access-Control-Allow-Origin header is sent.
|
|
The header allows browsers to access the webcontrol via cross-origin resource sharing (CORS).
|
|
For example, * allows access from browser client code served from any origin.
|
|
<p></p>
|
|
|
|
|
|
</ul>
|
|
|
|
<h3><a name="OptDetail_Stream"></a> Live Stream</a> </h3>
|
|
<ul>
|
|
Motion has simple webcam server built in which allows for streaming the images from the
|
|
camera(s).
|
|
<p></p>
|
|
The streams are generated in "multipart jpeg" format (mjpeg) which most browsers can display. If
|
|
the browser does not directly open the stream, it may be possible to manually create a simple HTML
|
|
page that references the stream.
|
|
<p></p>
|
|
Some regular stream players such as mplayer, ffplay and avplay may open the streams as well by specifying
|
|
the network stream as
|
|
<code>
|
|
http://localhost:mystreamportnumber/
|
|
</code>
|
|
<p></p>
|
|
While normally the stream players will open after a bit, it may be useful to also provide the format such as
|
|
<code>
|
|
ffplay -f mjpeg http://localhost:mystreamportnumber/
|
|
</code>
|
|
<p></p>
|
|
It has been observed by the author that VLC will not open the stream. This is not a Motion limitation but
|
|
instead is related to the general VLC support for MJPG http streams.
|
|
<p></p>
|
|
While the above examples indicate the Motion streams can be accessed as
|
|
<code>
|
|
http://localhost:mystreamportnumber/
|
|
</code>
|
|
Motion does provide other options for accessing the streams and images. In addition to sub-streams,
|
|
motion image streams and static images, Motion can also be configured to use just a single port for
|
|
accessing streams to all cameras. This is accomplished by specifying a stream port within the
|
|
motion.conf file and also using separate camera files. The following examples should clarify the
|
|
methods by which streams can be accessed:
|
|
<ul>
|
|
<li><code>{IP}</code> The IP address of the computer running Motion</li>
|
|
<li><code>{port0}</code> The port specified for the stream within the motion.conf file.</li>
|
|
<li><code>{portX}</code> The port specified for the stream within a camera.conf file.</li>
|
|
<li><code>{camid}</code> The <a href="#camera_id">camera_id</a> of the camera.</li>
|
|
</ul>
|
|
<p></p>
|
|
<ul>
|
|
<li><code>{IP}:{port0}/{camid}/</code> Primary stream for the camera</li>
|
|
<li><code>{IP}:{port0}/{camid}/stream</code> Primary stream for the camera</li>
|
|
<li><code>{IP}:{port0}/{camid}/substream</code> Sub-stream for the camera</li>
|
|
<li><code>{IP}:{port0}/{camid}/motion</code> Motion image stream for the camera</li>
|
|
<li><code>{IP}:{port0}/{camid}/source</code> Source image from the camera</li>
|
|
<li><code>{IP}:{port0}/{camid}/current</code> Static JPG for the camera</li>
|
|
<li><code>{IP}:{portX}/</code> Primary stream for the camera running on port {portX}</li>
|
|
<li><code>{IP}:{portX}/stream</code> Primary stream for the camera running on port {portX}</li>
|
|
<li><code>{IP}:{portX}/substream</code> Sub-stream for the camera running on port {portX}</li>
|
|
<li><code>{IP}:{portX}/motion</code> Motion image stream for the camera running on port {portX}</li>
|
|
<li><code>{IP}:{portX}/source</code> Source image from the camera running on port {portX}</li>
|
|
<li><code>{IP}:{portX}/current</code> Static JPG for the camera running on port {portX}</li>
|
|
</ul>
|
|
|
|
<h3><a name="stream_port"></a> stream_port </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 65535</li>
|
|
<li> Default: 0 (disabled)</li>
|
|
</ul>
|
|
<p></p>
|
|
The TCP port that Motion will send the main stream.
|
|
The stream port must be different than the
|
|
<a href="#webcontrol_port">webcontrol_port</a>. If the port is specified
|
|
within the motion.conf file (as opposed to being specified in the camerax.conf files), then
|
|
Motion will provide all streams on that single port by specifying a different url. See the
|
|
<a href="#OptDetail_Stream">stream</a> section above for further details and
|
|
examples of how ports can be specified. If setting a unique port for each camera
|
|
good value may be to select is 8081 for camera 1, 8082 for camera 2, 8083 for camera 3 etc.
|
|
<p></p>
|
|
|
|
<h3><a name="stream_localhost"></a> stream_localhost </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: on</li>
|
|
</ul>
|
|
<p></p>
|
|
Limits the access to the stream to the localhost.
|
|
By setting this to on, the stream can only be accessed on the same machine on which Motion is running.
|
|
<p></p>
|
|
|
|
<h3><a name="stream_auth_method"></a> stream_auth_method </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0, 1, 2</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
This parameter establishes desired authentication method for the stream port. The parameters have the following meaning.
|
|
<ul>
|
|
<li>0 = disabled </li>
|
|
<li>1 = Basic authentication </li>
|
|
<li>2 = MD5 digest (the safer authentication) </li>
|
|
</ul>
|
|
<p></p>
|
|
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.
|
|
<p></p>
|
|
|
|
<h3><a name="stream_authentication"></a> stream_authentication </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
This parameter establishes the username and password to use for the stream.
|
|
The syntax is username:password
|
|
<p></p>
|
|
|
|
<h3><a name="stream_tls"></a> stream_tls </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
This option specifies whether to enable SSL/TLS for the stream port. For some distributions
|
|
the library that Motion uses may not have been compiled with SSL/TLS support. In this situation
|
|
Motion can not support SSL/TLS connections. Whether SSL/TLS can be supported will be reported in
|
|
the log. In addition to selecting this option, a <a href="#webcontrol_cert">webcontrol_cert</a> and
|
|
<a href="#webcontrol_key">webcontrol_key</a> file must also be specified.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="stream_cors_header"></a> stream_cors_header </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: * or a valid URI</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The Access-Control-Allow-Origin header value to be sent with the stream.
|
|
If unspecified, no Access-Control-Allow-Origin header is sent.
|
|
The header allows browsers to access the stream via cross-origin resource sharing (CORS).
|
|
For example, * allows access from browser client code served from any origin.
|
|
<p></p>
|
|
|
|
<h3><a name="stream_preview_scale"></a> stream_preview_scale </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 1 to 100s</li>
|
|
<li> Default: 25</li>
|
|
</ul>
|
|
<p></p>
|
|
If the webcontrol page has HTML enabled, Motion displays all of the streams on the home webcontrol page in HTML
|
|
format so that all the images can be viewed by standard browsers.
|
|
<p></p>
|
|
This parameter indicates the percentage to scale the stream image when it is placed on the page.
|
|
Note that this is scaled on the browser side, Motion will keep sending full frame.
|
|
<p></p>
|
|
Numbers greater than 100 are permitted.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="stream_preview_newline"></a> stream_preview_newline </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
If the webcontrol page has HTML enabled, Motion displays all images of the streams on the home webcontrol page
|
|
in HTML format so that all the images can be viewed by standard browsers.
|
|
<p></p>
|
|
This parameter determines whether the image is placed on a new line in the webcontrol web page.
|
|
<p></p>
|
|
Preview images are placed on to the webcontrol home page in camera id number order.
|
|
This parameter allows the user some flexibility in organizing the images on the page.
|
|
<p></p>
|
|
Setting this parameter to off will set the image to the right of any image from a lower numbered thread number.
|
|
Setting it to 'on' will place the image on the start of the next line(below).
|
|
<p></p>
|
|
Users that require a more polished and customized preview page are encouraged to create their own
|
|
local HTML page that reference the URL streams.
|
|
<p></p>
|
|
|
|
<h3><a name="stream_preview_method"></a> stream_preview_method </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 4</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
This option determines the method used for displaying images on the webcontrol page.
|
|
<ul>
|
|
<li>0 = Full stream images are sent and scaled by the client to the webcontrol page</li>
|
|
<li>1 = Substream images are sent by Motion. This saves bandwidth</li>
|
|
<li>2 = Static images are sent by Motion and the page must be manually refreshed</li>
|
|
<li>3 = Full stream images and motion images side by side to assist setup of detection</li>
|
|
<li>4 = The source image provided by camera without privacy or other Motion overlays</li>
|
|
</ul>
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="stream_quality"></a> stream_quality </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 1 - 100</li>
|
|
<li> Default: 50</li>
|
|
</ul>
|
|
<p></p>
|
|
Quality setting in percent for the jpeg picture frames transferred over the live stream connection.
|
|
When it is set to a low number, it will lower the bandwidth required to stream the images.
|
|
<p></p>
|
|
|
|
<h3><a name="stream_grey"></a> stream_grey </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Send the live stream in grey (black and white) rather than color. Useful for limiting bandwidth.
|
|
<p></p>
|
|
|
|
<h3><a name="stream_maxrate"></a> stream_maxrate </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 1 - 100</li>
|
|
<li> Default: 1</li>
|
|
</ul>
|
|
<p></p>
|
|
Limit the framerate of the stream in frames per second. Set the value to 100 for practically unlimited.
|
|
Don't set this parameter too high unless you only use it on the localhost or on an internal LAN.
|
|
<p></p>
|
|
|
|
<h3><a name="stream_motion"></a> stream_motion </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Limit the framerate to 1 frame per second when there is no motion being detected and increase
|
|
it to the stream_maxrate when there is motion.
|
|
<p></p>
|
|
|
|
</ul>
|
|
|
|
|
|
<h3><a name="OptDetail_Database"></a>Database</h3>
|
|
<ul>
|
|
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
|
|
values are given by using <a href="#conversion_specifiers">Conversion Specifiers</a> for dynamic data like
|
|
the filename, time, number of detected pixels etc.
|
|
Motion does not place any binary images in the database and it cannot remove old records.
|
|
<p></p>
|
|
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 define which types of files are logged in the database.
|
|
<p></p>
|
|
The following are sample create table queries for different databases.
|
|
<p></p>
|
|
Mysql : CREATE TABLE security (camera int, filename char(80) not null, frame int, file_type int, time_stamp timestamp(14), event_time_stamp timestamp(14));
|
|
<p></p>
|
|
Postgresql : CREATE TABLE security (camera int, filename char(80) not null, frame int, file_type int, time_stamp timestamp without time zone, event_time_stamp timestamp without time zone);
|
|
<p></p>
|
|
MySQL to use the dbeventid, sql_query_start
|
|
<p></p>
|
|
CREATE TABLE security_file (file_id int primary key auto_increment, event_id int foreign key, filename text not null, frame int, file_type int, time_stamp timestamp(14));\n"
|
|
<p></p>
|
|
|
|
|
|
<h3><a name="database_type"></a> database_type </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: mysql, postgresql, sqlite3</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
This option specifies the database type.
|
|
<p></p>
|
|
|
|
<h3><a name="database_dbname"></a> database_dbname </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The name of the database. For Sqlite3, the full path and name to the database.
|
|
<p></p>
|
|
|
|
<h3><a name="database_host"></a> database_host </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: localhost</li>
|
|
</ul>
|
|
<p></p>
|
|
The host on which the database is located
|
|
<p></p>
|
|
|
|
<h3><a name="database_port"></a> database_port </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 65535</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
The port number that is used for the database. Typical values are: mysql=3306 and postgresql=5432
|
|
<p></p>
|
|
|
|
<h3><a name="database_user"></a> database_user </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The user account name for database
|
|
<p></p>
|
|
|
|
<h3><a name="database_password"></a> database_password </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The user password for database
|
|
<p></p>
|
|
|
|
<h3><a name="database_busy_timeout"></a> database_busy_timeout </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 1000's</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
If the database is busy when the request is issued, this parameter indicates the time to
|
|
wait before issuing a timeout message.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<p></p>
|
|
<h3><a name="sql_log_picture"></a> sql_log_picture </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Log to the database when Motion triggers a image file to be saved.
|
|
<p></p>
|
|
|
|
<h3><a name="sql_log_snapshot"></a> sql_log_snapshot </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Log to the database when creating a snapshot image file.
|
|
<p></p>
|
|
|
|
<h3><a name="sql_log_movie"></a> sql_log_movie </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Log to the database when creating motion triggered movie file.
|
|
<p></p>
|
|
|
|
<h3><a name="sql_log_timelapse"></a> sql_log_timelapse </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Log to the database when creating timelapse movie file
|
|
<p></p>
|
|
|
|
<h3><a name="sql_query_start"></a> sql_query_start </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
SQL query that executes against the event table which tracks the unique events of motion.
|
|
<p></p>
|
|
Once the new record is added to this table, the mysql function <code><b>mysql_insert_id</b></code> is then
|
|
executed to provide the key back into the <code>dbeventid</code> specifier.
|
|
<p></p>
|
|
The <code>dbeventid</code> specifier can then be used in the <code>sql_query</code> as a parameter
|
|
to that query for inserting into the table.
|
|
<p></p>
|
|
Although this query is run for all the different database options, the <code>dbeventid</code> is
|
|
only set for mysql databases. For the other databases, the <code>dbeventid</code> is always set
|
|
to zero.
|
|
<p></p>
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a> within the query.
|
|
<p></p>
|
|
<p></p>
|
|
Sample Query
|
|
<p></p>
|
|
insert into security_events(camera, event_time_stamp) values('%t', '%Y-%m-%d %T')"
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="sql_query_stop"></a> sql_query_stop </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
SQL query that executes after a movie has finished.
|
|
This can be used to for example update the events table with an end timestamp for the recording.
|
|
<p></p>
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a> within the query.
|
|
<p></p>
|
|
<p></p>
|
|
Sample Query
|
|
<p></p>
|
|
update security_events set event_end_time_stamp='%Y-%m-%d %T' where filename='%f'
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="sql_query"></a> sql_query </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
SQL query string that is sent to the database when the sql_log_* item is triggered.
|
|
<p></p>
|
|
<p></p>
|
|
You can use <a href="#conversion_specifiers">Conversion Specifiers</a>
|
|
within the query.
|
|
<p></p>
|
|
<p></p>
|
|
Sample Queries (depend upon the table created)
|
|
<p></p>
|
|
<br />insert into security(camera, filename, frame, file_type, time_stamp, text_event) values('%t', '%f', '%q', '%n', '%Y-%m-%d %T', '%C')
|
|
<br />insert or ignore into images (camera_nbr, file_name, year, month, day, hour, minute) values (8, '%f', '%Y','%m','%d','%H','%M')
|
|
<br />insert into security_file(camera, event_id, filename, frame, file_type, time_stamp) values('%t', '%{dbeventid}', '%f', '%q', '%n', '%Y-%m-%d %T')"
|
|
<p></p>
|
|
<p></p>
|
|
|
|
</ul>
|
|
|
|
<h3><a name="OptDetail_Tracking"></a>Tracking</h3>
|
|
<ul>
|
|
<p></p>
|
|
Motion can move the camera to a fixed position given in degrees pan (left-right) and tilt (down-up).
|
|
Movement can be set with absolute coordinates or relative to current position. There is also an auto tracking
|
|
feature for the Logitech Quickcam Sphere/Orbit but it is not very mature. Review and revise the Motion code
|
|
regarding tracking if these features are required. The Motion developers do not have any tracking cameras
|
|
so it is unlikely that tracking features will be developed in any way. (We have no way to test anything!)
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<p></p>
|
|
<h3><a name="track_type"></a> track_type </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Discrete Strings</li>
|
|
<li> Range / Valid values: 0 (none), 1 (stepper), 2 (iomojo), 3 (pwc), 4 (generic), 5 (uvcvideo)</li>
|
|
<li> Default: 0 (None)</li>
|
|
</ul>
|
|
<p></p>
|
|
Type of tracker.
|
|
<p></p>
|
|
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.
|
|
<p></p>
|
|
To disable tracking, set this to 0 and the other track options are ignored.
|
|
<p></p>
|
|
Value 1 is for the special Motion Tracking project using a stepper motor and a home made controller.
|
|
<p></p>
|
|
Value 2 is for the iomojo smilecam
|
|
<p></p>
|
|
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.
|
|
<p></p>
|
|
Value 4 is the generic track type. This option executes the
|
|
<a href="#track_generic_move">track_generic_move</a> script. Users can write their own script
|
|
to move the camera based upon the <a href="#conversion_specifiers">Conversion Specifiers</a> passed to the
|
|
script and/or based upon the environment variables set by Motion.
|
|
<p></p>
|
|
Value 5 is for uvcvideo type USB tracking cameras such as the Logitech Quickcam Sphere/Orbit MP which is driven
|
|
by the uvcvideo driver.
|
|
<p></p>
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="track_auto"></a> track_auto </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Boolean</li>
|
|
<li> Range / Valid values: on, off</li>
|
|
<li> Default: off</li>
|
|
</ul>
|
|
<p></p>
|
|
Enable auto tracking of the motion. Requires a tracking camera or custom script as specified in the
|
|
<a href="#track_type">track_type</a> above.
|
|
<p></p>
|
|
|
|
<h3><a name="track_port"></a> track_port </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
This is the device name of the serial port to which the stepper motor interface is connected.
|
|
Only used for stepper motor tracking.
|
|
<p></p>
|
|
|
|
<h3><a name="track_motorx"></a> track_motorx </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
The motor number that is used for controlling the x-axis.
|
|
Only used for stepper motor tracking.
|
|
<p></p>
|
|
|
|
<h3><a name="track_motorx_reverse"></a> track_motorx_reverse </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
Description
|
|
<p></p>
|
|
|
|
<h3><a name="track_motory"></a> track_motory </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
The motor number that is used for controlling the y-axis.
|
|
Only used for stepper motor tracking.
|
|
<p></p>
|
|
|
|
<h3><a name="track_motory_reverse"></a> track_motory_reverse </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="track_maxx"></a> track_maxx </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
The maximum position for servo x.
|
|
Only used for stepper motor tracking.
|
|
<p></p>
|
|
|
|
<h3><a name="track_minx"></a> track_minx </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="track_maxy"></a> track_maxy </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
The maximum position for servo y.
|
|
Only used for stepper motor tracking.
|
|
<p></p>
|
|
|
|
<h3><a name="track_miny"></a> track_miny </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="track_homex"></a> track_homex </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="track_homey"></a> track_homey </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="track_iomojo_id"></a> track_iomojo_id </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
Use this option if you have an iomojo smilecam connected to the serial port instead
|
|
of a general stepper motor controller.
|
|
Only used for iomojo camera.
|
|
<p></p>
|
|
|
|
<h3><a name="track_step_angle_x"></a> track_step_angle_x </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
Angle in degrees the camera moves per step on the X-axis with auto tracking. Currently only used with pwc type cameras.
|
|
Requires a tracking camera type pwc.
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="track_step_angle_y"></a> track_step_angle_y </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
Angle in degrees the camera moves per step on the Y-axis with auto tracking. Currently only used with pwc type cameras.
|
|
Requires a tracking camera type pwc.
|
|
<p></p>
|
|
<p></p>
|
|
|
|
<h3><a name="track_move_wait"></a> track_move_wait </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
Delay during which tracking is disabled after auto tracking has moved the camera.
|
|
Delay is defined as number of picture frames.
|
|
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.
|
|
<p></p>
|
|
|
|
<h3><a name="track_speed"></a> track_speed </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
Speed to set the motor to.
|
|
Only used for stepper motor tracking.
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="track_stepsize"></a> track_stepsize </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: Integer</li>
|
|
<li> Range / Valid values: 0 - 2147483647</li>
|
|
<li> Default: 0</li>
|
|
</ul>
|
|
<p></p>
|
|
Number of steps to make.
|
|
Only used for stepper motor tracking.
|
|
<p></p>
|
|
|
|
<p></p>
|
|
|
|
<h3><a name="track_generic_move"></a> track_generic_move </h3>
|
|
<p></p>
|
|
<ul>
|
|
<li> Type: String</li>
|
|
<li> Range / Valid values: Max 4095 characters</li>
|
|
<li> Default: Not defined</li>
|
|
</ul>
|
|
<p></p>
|
|
The full path and file name of the command to execute to move a PTZ camera in generic tracking mode
|
|
<p></p>
|
|
Users have the option of using the <a href="#conversion_specifiers">Conversion Specifiers</a>
|
|
and including the parameters as part of command line options to the script and/or to obtain the
|
|
values from system environment variables as indicated below.
|
|
<p></p>
|
|
The following are the parameters provided as environment variables:
|
|
<ul>
|
|
<li> When called to recenter the camera: TRACK_ACTION=center TRACK_XOFF TRACK_YOFF</li>
|
|
<li> When called to track a motion: TRACK_ACTION=move TRACK_CENT_X TRACK_CENT_Y TRACK_CENT_WIDTH TRACK_CENT_HEIGHT TRACK_CENT_MINX TRACK_CENT_MAXX TRACK_CENT_MINY TRACK_CENT_MAXY TRACK_IMGS_WIDTH TRACK_IMGS_HEIGHT TRACK_IMGS_MOTIONSIZE</li>
|
|
</ul>
|
|
<p></p>
|
|
<p></p>
|
|
The following is a sample script that moves a PTZ netcam based upon the system environment
|
|
variables. The 3/8 and 5/8 are illustrative only and set based upon testing with a VIVOTEK PZ81X1 camera. The
|
|
values and methods applicable to any other camera would need to be established by the user.
|
|
<p></p>
|
|
<code>
|
|
#!/bin/bash<br>
|
|
<br>
|
|
LOCKFILE=/tmp/track_generic_move_netcam.lock<br>
|
|
if [ -e "$LOCKFILE" ]; then # Trick to avoid flooding<br>
|
|
exit 0 # the netcam of multiple<br>
|
|
fi # moving commands.<br>
|
|
<br>
|
|
function movecam() {<br>
|
|
touch $LOCKFILE<br>
|
|
curl "http://youripaddress/cgi-bin/camctrl/camctrl.cgi?move=$1"<br>
|
|
LOCKED=true<br>
|
|
}<br>
|
|
<br>
|
|
case "$TRACK_ACTION" in<br>
|
|
"center")<br>
|
|
movecam home<br>
|
|
;;<br>
|
|
"move")<br>
|
|
if [ "$TRACK_CENT_X" -lt "$((TRACK_IMGS_WIDTH*3/8))" ]; then<br>
|
|
movecam left<br>
|
|
fi<br>
|
|
if [ "$TRACK_CENT_X" -gt "$((TRACK_IMGS_WIDTH*5/8))" ]; then<br>
|
|
movecam right<br>
|
|
fi<br>
|
|
if [ "$TRACK_CENT_Y" -lt "$((TRACK_IMGS_HEIGHT*3/8))" ]; then<br>
|
|
movecam up<br>
|
|
fi<br>
|
|
if [ "$TRACK_CENT_Y" -gt "$((TRACK_IMGS_HEIGHT*5/8))" ]; then<br>
|
|
movecam down<br>
|
|
fi<br>
|
|
;;<br>
|
|
esac<br>
|
|
<br>
|
|
if [ "$LOCKED" = "true" ]; then<br>
|
|
sleep 2<br>
|
|
rm -f "$LOCKFILE"<br>
|
|
fi<br>
|
|
</code>
|
|
<p></p>
|
|
<p></p>
|
|
|
|
</ul>
|
|
|
|
</ul>
|
|
|
|
</section>
|
|
|
|
|
|
</body>
|
|
</html>
|