motion uses a video4linux device for detecting movement. It makes snapshots of the movement which can be converted to MPEG movies in realtime (or later for low CPU usage), making it usable as an observation or security system. It can take actions like sending out email and SMS messages when detecting motion.
| Tags | multimedia Graphics Capture Video Security |
|---|---|
| Licenses | GPL |
| Operating Systems | POSIX Linux |
| Implementation | C |
Recent releases


Changes: V4L2 devices are now supported along with V4L2_bayer, SN9C10X, MJPEG, and UYVY. Device status was enhanced. Debian packaging was improved. The SWF codec for movie creation was added. ucvideo track pan/tilt support was added. A FreeBSD directory for building ports was added.


Changes: Bugfixes related to the use of ffmpeg and "ioctl (VIDIOCGCHAN): Invalid argument" error messages were implemented.


Changes: More robust netcam code, and some bugfixes in the webcam code to handle closed connections better and prevent denial of service attacks.


Changes: An ffmpeg segfault was fixed, and sending mail works correctly.


Changes: The netcam code uses tmpfiles instead of pipes. MPEG files are opened with append to prevent overwriting time lapse videos.
- All comments
Recent commentsStable branch is completely outdated
If you are looking to use motion, be aware that the stable branch (3.0, latest version 3.0.7) is not being developed anymore, and the development versions (3.1, latest at time of writing is 3.1.14) are indeed just as stable if not more-so, and have many important bug-fixes and many new, useful features.
And if you do find a bug, please report it to the mailing list!
patch against 3.0.5
I created a patch which adds a configuration parameter "syslog" to motion. If enabled, motion will then log in syslog when it starts up, exits and when it detects motion or when errors occur. This patch also fiddles with socket-fd's so that you no longer get this annoying bind-problem ("socket already in use") when starting motion very quick after stopping it. Also a small performance improvement was made. Solved a problem when using certain versions of GLIBC, it would not create directories. This was caust by incorrect usage of sprintf(). Furthermore: set temporary buffers for filenames to correct max. size (PATH_MAX) instead of 255.
You can find the patch here: http://www.vanheusden.com/Linux/