Motion has simple webcam server built in. The video stream is in mjpeg format.
Each thread can have its own webcam server. If you enable the webcam server (option webcam_port to a number different from 0) and you have more than one camera, you must make sure to include webcam_port in each thread config file and set webcam_port to different and unique port numbers or zero (disable). Otherwise each webcam server will use the setting from the motion.conf file and try to bind to the same port. If the webcam_port numbers are not different from each other Motion will disable the webcam feature.
Note: The webcam server feature requires that the option
ppm is set to
off.
The
webcam_maxrate and
webcam_quality options are important to limit the load on your server and link. Don't set them too high unless you only use it on the localhost or on an internal LAN. The option
webcam_quality is equivalent to the quality level for jpeg pictures.
The
webcam_limit option prevents people from loading your Network connection by streaming for hours and hours. The options defines the number of picture frames sent as mjpeg Motion will allow without re-connecting (e.g. clicking refresh in the browser).
The option
webcam_localhost is a security feature. When enabled you can only access the webserver on the same machine as Motion is running on. If you want to present a live webcam on your web site this feature must be disabled.
The webserver generates a stream in "multipart jpeg" format (mjpeg). You cannot watch the stream with most browsers. Only certain versions of Netscape works. Mozilla and Firefox brosers can view the mjpeg stream but you often have to refresh the page once to get the streaming going. Internet Explorer cannot show the mjpeg stream. For public viewing this is not very useful. There exists a java applet called
Cambozola which enabled any Java capable browser to show the stream. To enable the feature to a broad audience you should use this applet or similar.
To use the webcam feature with Cambozola is actually very simple.
1. Create a html page in which you will want the streamed picture.
2. In the html page include this code
<applet code=com.charliemouse.cambozola.Viewer
archive=cambozola.jar width="320" height="240" style="border-width:1; border-color:gray; border-style:solid;">
<param name=url value="http://www.myurl.com:8081">
</applet>
Where the width and height is the image size of the video stream.
Replace www.myurl.com:8081 by the real url and port number of your choice.
3. In the same directory you place the cambozola.jar file. No need to build the java applet from source. Simply use the applet in the package.
4. Enable the feature in motion.conf.
You can also view the live webcam stream using
MPlayer like this:
mplayer -demuxer lavf http://www.myurl.com:8081/stream.mjpg
Note that the
stream.mjpg part is important, without it you will get a
LAVF_check: no clue about this gibberish! error from libavformat.
These are the special webcam parameters.
webcam_limit
- Type: Integer
- Range / Valid values: 0 - 2147483647
- Default: 0 (unlimited)
- Option Topic
Limit the number of frames to number frames. After 'webcam_limit' number of frames the connection will be closed by motion. The value 0 means unlimited.
Number can be defined by multiplying actual webcam rate by desired number of seconds. Actual webcam rate is the smallest of the numbers
framerate and
webcam_maxrate.
webcam_localhost
- Type: Boolean
- Range / Valid values: on, off
- Default: on
- Option Topic
Limits the access to the webcam to the localhost.
By setting this to on, the webcam can only be accessed on the same machine on which Motion is running.
webcam_maxrate
- Type: Integer
- Range / Valid values: 1 - 100
- Default: 1
- Option Topic
Limit the framerate of the webcam in frames per second. Default is 1. Set the value to 100 for practically unlimited.
Don't set 'webcam_maxrate' too high unless you only use it on the localhost or on an internal LAN.
webcam_motion
- Type: Boolean
- Range / Valid values: on, off
- Default: off
- Option Topic
If set to 'on' Motion sends slows down the webcam stream to 1 picture per second when no motion is detected. When motion is detected the stream runs as defined by webcam_maxrate. When 'off' the webcam stream always runs as defined by webcam_maxrate.
Use this option to save bandwidth when there is not anything important to see from the camera anyway.
Note that this feature was greatly improved from Motion version 3.2.2. Before 3.2.2 the option stopped the webcam stream except when Motion was detected. This made the feature not very useful because it made it difficult to connect to the webcam stream and most mjpeg viewers would timeout and give an error message. From 3.2.2 the feature has been greatly improved and actually quite recommendable.
webcam_port
- Type: Integer
- Range / Valid values: 0 - 65535
- Default: 0 (disabled)
- Option Topic
TCP port on which motion will listen for incoming connects with its webcam server.
Note that each camera thread must have its own unique port number and it must also be different from the control_port number.
A good value to select is 8081 for camera 1, 8082 for camera 2, 8083 for camera 3 etc etc.
webcam_quality
- Type: Integer
- Range / Valid values: 1 - 100
- Default: 50
- Option Topic
Quality setting in percent for the mjpeg picture frames transferred over the webcam connection. Keep it low to restrict needed bandwidth.
The mjpeg stream consists of a header followed by jpeg frames separated by content-length and boundary string. The quality level defines the size of the individual jpeg pictures in the mjpeg stream. If you set it too high you need quite a high bandwidth to view the stream.
--
KennethLavrsen - 12 Apr 2005