If you have multiple cameras and want to set them up to monitor your home, watch birds, watch your pet lick their pasties while you’re away, or even live stream, Motion can help.
This command line tool for Linux allows you to create videos or capture photos from your cameras as soon as motion is detected. Motion also allows continuous recording, live viewing of your video streams or even the launching of specific scripts when activity is detected.
Each event detected by your cameras can then be logged in a database and if your cameras are filming part of the neighborhood or the street (which is prohibited), you can set up customizable masks to guarantee anonymity and respect. of the law.
Motion supports a large number of cameras, both IP cameras (RTSP, RTMP, HTTP), V4L2 webcams, Rpi cameras or anything that is a video capture card.
Each video stream is accessible in HTTPS and is secured by authentication to be able to watch or control it.
Motion is a highly configurable program that monitors video signals from many types of cameras.Set it up to monitor your security cameras, watch birds, check in on your pet, create timelapse videos and more.
- Create videos or save pictures of the activity
- Passthrough recording from many IP cameras
- View live stream of cameras
- Invoke scripts when activities occur
- Log activity into multiple types of databases
- Fully customizable masks for privacy or motion detection
- Full tls(https) support with authentication for webcontrol and streams
Use Motion with many types of devices
- Network cameras via RTSP, RTMP and HTTP
- PI cameras
- V4L2 webcams
- Video capture cards
- Existing movie files
motion to see if it works:
$ sudo motion  Processing thread 0 - config file /etc/motion/motion.conf  Motion 3.2.12 Started  ffmpeg LIBAVCODEC_BUILD 3547904 LIBAVFORMAT_BUILD 3544067  Thread 1 is from /etc/motion/motion.conf  Thread 1 started  motion-httpd/3.2.12 running, accepting connections  Failed to open video device /dev/video0: No such file or directory  motion-httpd: waiting for data on port TCP 8080  Could not fetch initial image from camera  Motion continues using width and height from config file(s)  Resizing pre_capture buffer to 1 items  Started stream webcam server in port 8081 [...]
It will go on for many more lines, until you see:
 Failed to open video device /dev/video0: No such file or directory  Video signal lost - Adding grey image
Point your Web browser to
localhost:8081 and you will see a gray image:
This is good, as it means Motion is installed correctly, and all you have to do is configure it. Press Ctrl+C to stop it. Then create a
.motion directory in your home directory, copy the default configuration file into it, and change ownership to you:
~$ mkdir .motion ~$ sudo cp /etc/motion/motion.conf .motion/ ~$ sudo chown carla:carla .motion/motion.conf
You also need a directory to store images captured by motion:
~$ mkdir motion-images
When you start Motion it looks for a configuration file in the current directory, then in
~/.motion, and finally
/etc/motion. Now edit your
~/.motion/motion.conf file– this example includes basic configurations, and the lines relevant to my Foscam IP camera:
# Start in daemon (background) mode and release terminal (default: off) daemon on # Output 'normal' pictures when motion is detected (default: on) [...] output_normal off # File to store the process ID, also called pid file. (default: not defined) process_id_file /var/run/motion/motion.pid # Image width (pixels). Valid range: Camera dependent, default: 352 width 640 # Image height (pixels). Valid range: Camera dependent, default: 288 height 480 # Maximum number of frames to be captured per second. # Valid range: 2-100. Default: 100 (almost no limit). framerate 7 # URL to use if you are using a network camera, size will be autodetected (incl http:// ftp:// or file:///) # Must be a URL that returns single jpeg pictures or a raw mjpeg stream. Default: Not defined netcam_url value http://http://192.168.10.250:8080/videostream.cgi # Username and password for network camera (only if required). Default: not defined # Syntax is user:password netcam_userpass admin:mypassword # Target base directory for pictures and films # Recommended to use absolute path. (Default: current working directory) target_dir /home/carla/motion-images # Codec to used by ffmpeg for the video compression. [...] ffmpeg_video_codec mpeg4
You need to create the directory for storing the PID file, as it says in
$ sudo mkdir /var/run/motion
Now try starting it up again:
$ sudo motion  Processing thread 0 - config file /home/carla/.motion/motion.conf  Motion 3.2.12 Started  Motion going to daemon mode
Good so far, now try
Well look, there is my driveway. Now I will have plenty of warning when visitors come, so I can loose the moat monsters. Run around in front of your camera to trigger motion detection, and when you come back your images directory should have some
.avi movies in it. You should also find a simple Motion control panel at
IP Camera Settings
How to Operate Your Spycams with ZoneMinder on Linux (part 1) goes into some detail on setting up your camera. You must follow the vendor’s instructions for the initial setup, such as assigning a login and password, and setting the IP address. You may have other options as well, such as frame size, motion sensitivity, and color depth or black and white.
Getting the correct
netcam_url is sometimes a hassle. For my Foscam I brought up its control panel in Firefox, right-clicked on the image (figure 4), then left-clicked View Image Info. This opens a screen like figure 5, which shows the exact URL of the videostream. In the Chrome browser use “Inspect element.”
Fine-tuning Configuration Values
You can make all kinds of adjustments in your configuration file such as image size, image quality, frame rate, sensitivity to movement, greater sensitivity in selected areas of the frame, file paths, HTTP server settings, and time stamp formats. Motion Guide – Alphabetical Option Reference Manual gives detailed information on each option. Remember to harmonize your Motion settings with the settings in your camera’s control panel, if it has one.
Any V4l-supported USB Webcam should work with little fuss. The video device will be
/dev/video0 will be present only when a video camera is connected directory to your computer. This is a basic example configuration for my Logitech Webcam:
videodevice /dev/video0 width 640 height 480 framerate 24 output_normal off ffmpeg_video_codec mpeg4 target_dir /home/carla/motion
And again, remember that settings such as frame rate and size are dependent on what your camera supports.
Once you have everything working, make Motion run as a daemon by editing
/etc/default/motion, and changing
start_motion_daemon=yes. Now Motion will start automatically when you start your computer, and you can start and stop it like any other daemon.
Controlling Multiple Cameras
Motion manages multiple cameras with ease — all you do is give each camera its own configuration file, named
thread1.conf, and so on. You still need your main
motion.conf for common options such as
daemon on and filepaths. Then each “thread” file has configurations specific to each camera.