Site icon AranaCorp

Video stream with Motion on Raspberry Pi

In this tutorial, we’ll look at how to set up a video stream with Motion from a Raspberry Pi. This tutorial is compatible with any Linux system.

Hardware

Motion description

The Motion program was developed as a surveillance system. It allows you to observe several cameras, detect movements on each camera and record images or videos at that moment.

This tool allows you to

Motion installation

If this is not already the case on your OS version, you can install Motion using the following command.

sudo apt-get install motion

Installation check

motion --version

If an error occurs regarding file access permission

You can delete the file and restart

rm -r /var/log/motion

or grant access rights

sudo chmod -R 777 /var/log/motion
sudo chmod -R 777 /var/lib/motion

or create another log file and add its path to motion.conf

sudo nano ~/.motion/motion.log

Motion setup

All motion configuration is done in the

sudo cp /etc/motion/motion.conf /etc/motion/motion.conf.bckp
sudo nano /etc/motion/motion.conf

The main parameters include

N.B.: you can find all the configuration parameters on the official website

Go further in configuration

There are a large number of parameters in the motion.conf file that will enable you to adapt image acquisition to your needs

If several cameras are used, you can define a parameter set for each camera (/etc/motion/camera1.conf)

Start Motion from the terminal

sudo motion
sudo motion -c ~/.motion/motion.conf #to use another configuration file
sudo killall motion #to end the process

(use ~/.motion/motion.conf by default, if it exists, otherwise /etc/motion/motion.conf)

Start Motion as a service

sudo service motion start
sudo service motion status 
sudo service motion restart
sudo service motion stop

N.B.: In the /etc/motion/motion.conf file, leave the daemon option set to OFF.

Create a video stream with Motion

Change the default settings in /etc/motion/motion.conf

webcontrol_port
 8080 # define http port for camera web control http://<ip_server>:<webcontrol_port>
webcontrol_localhost on # define if accessible only from the same machine
stream_port 8081 # define http port for camera display http://<ip_server>:<stream_port>
stream_localhost off
stream_auth_method
 0
stream_authentication <username>:<password>

N.B.: if you’re activating webcontrol from outside the machine, we strongly advise you to activate authentication on the stream.

Don’t forget to restart the motion service after any modification to the motion.conf file.

sudo service motion restart

If you enter the IP address of your Linux machine (here, 192.168.1.92), followed by the port number defined in stream_port, you can watch the motion video stream.

If you’re not using continuous motion, you can record a video without waiting for motion to be detected (emulate_motion on, event_gap -1).

Tips: you can set a low-quality image to improve stream bandwidth (stream_quality 45), but keep a high-quality image for video recording (video_quality 100).

motion.conf file for streaming

/etc/motion/motion.conf (with local webcontrol and ports 8553 and 8554)

# Rename this distribution example file to motion.conf
#
# This config file was generated by motion 4.3.2
# Documentation:  /usr/share/doc/motion/motion_guide.html
#
# This file contains only the basic configuration options to get a
# system working.  There are many more options available.  Please
# consult the documentation for the complete list of all options.
#

############################################################
# System control configuration parameters
############################################################

# Start in daemon (background) mode and release terminal.
daemon off

# Start in Setup-Mode, daemon disabled.
setup_mode off

# File to store the process ID.
; pid_file value

# File to write logs messages into.  If not defined stderr and syslog is used.
log_file /var/log/motion/motion.log

# Level of log messages [1..9] (EMG, ALR, CRT, ERR, WRN, NTC, INF, DBG, ALL).
log_level 6

# Target directory for pictures, snapshots and movies
target_dir /var/lib/motion

# Video device (e.g. /dev/video0) to be used for capturing.
videodevice /dev/video0

# Parameters to control video device.  See motion_guide.html
; vid_control_params value

# The full URL of the network camera stream.
; netcam_url value

# Name of mmal camera (e.g. vc.ril.camera for pi camera).
; mmalcam_name value

# Camera control parameters (see raspivid/raspistill tool documentation)
; mmalcam_control_params value

############################################################
# Image Processing configuration parameters
############################################################

# Image width in pixels.
width 640

# Image height in pixels.
height 480

# Maximum number of frames to be captured per second.
framerate 10

# Text to be overlayed in the lower left corner of images
text_left CAMERA1

# Text to be overlayed in the lower right corner of images.
text_right %Y-%m-%d\n%T-%q - %{fps}

text_scale 3
############################################################
# Motion detection configuration parameters
############################################################

# Always save pictures and movies even if there was no motion.
emulate_motion off

# Threshold for number of changed pixels that triggers motion.
threshold 1500

# Noise threshold for the motion detection.
; noise_level 32

# Despeckle the image using (E/e)rode or (D/d)ilate or (l)abel.
despeckle_filter EedDl

# Number of images that must contain motion to trigger an event.
minimum_motion_frames 1

# Gap in seconds of no motion detected that triggers the end of an event.
event_gap 60

# The number of pre-captured (buffered) pictures from before motion.
pre_capture 3

# Number of frames to capture after motion is no longer detected.
post_capture 0

############################################################
# Script execution configuration parameters
############################################################

# Command to be executed when an event starts.
; on_event_start value

# Command to be executed when an event ends.
; on_event_end value

# Command to be executed when a movie file is closed.
; on_movie_end value

############################################################
# Picture output configuration parameters
############################################################

# Output pictures when motion is detected
picture_output off

# File name(without extension) for pictures relative to target directory
picture_filename %Y%m%d%H%M%S-%q

############################################################
# Movie output configuration parameters
############################################################

# Create movies of motion events.
movie_output on

# Maximum length of movie in seconds.
movie_max_time 60

# The encoding quality of the movie. (0=use bitrate. 1=worst quality, 100=best)
movie_quality 100

# Container/Codec to used for the movie. See motion_guide.html
movie_codec mkv

# File name(without extension) for movies relative to target directory
movie_filename %t-%v-%Y%m%d%H%M%S

############################################################
# Webcontrol configuration parameters
############################################################

# Port number used for the webcontrol.
webcontrol_port 8553

# Restrict webcontrol connections to the localhost.
webcontrol_localhost on

# Type of configuration options to allow via the webcontrol.
webcontrol_parms 0

############################################################
# Live stream configuration parameters
############################################################

# The port number for the live stream.
stream_port 8554

# Restrict stream connections to the localhost.
stream_localhost off

stream_quality 100

##############################################################
# Camera config files - One for each camera.
##############################################################
; camera /usr/etc/motion/camera1.conf
; camera /usr/etc/motion/camera2.conf
; camera /usr/etc/motion/camera3.conf
; camera /usr/etc/motion/camera4.conf

##############################################################
# Directory to read '.conf' files for cameras.
##############################################################
; camera_dir /usr/etc/motion/conf.d

Applications

Sources

Exit mobile version