fbpixel
Etiquetas: ,

En este tutorial veremos cómo configurar una transmisión de vídeo con Motion desde una Raspberry Pi. Este tutorial es compatible con cualquier sistema Linux.

Hardware

  • Raspberry Pi (u otra máquina Linux)
  • Cámara USB o cámara CSI

Descripción del movimiento

El programa Motion se ha desarrollado como sistema de vigilancia. Permite observar varias cámaras, detectar movimientos en cada una de ellas y grabar imágenes o vídeos en ese momento.

Esta herramienta permite

  • transmitir vídeos para verlos a distancia
  • detectar movimientos en cada cámara
  • grabar imágenes o vídeos de las cámaras

Instalación en movimiento

Si aún no es el caso en su versión del sistema operativo, puede instalar Motion utilizando el siguiente comando.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo apt-get install motion
sudo apt-get install motion
sudo apt-get install motion

Comprobación de la instalación

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
motion --version
motion --version
motion --version

Si se produce un error sobre el permiso de acceso al archivo

Puede eliminar el archivo y reiniciar

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
rm -r /var/log/motion
rm -r /var/log/motion
rm -r /var/log/motion

o conceder derechos de acceso

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo chmod -R 777 /var/log/motion
sudo chmod -R 777 /var/lib/motion
sudo chmod -R 777 /var/log/motion sudo chmod -R 777 /var/lib/motion
sudo chmod -R 777 /var/log/motion
sudo chmod -R 777 /var/lib/motion

o crear otro archivo de registro y añadir su ruta al archivo motion.conf

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo nano ~/.motion/motion.log
sudo nano ~/.motion/motion.log
sudo nano ~/.motion/motion.log

Configuración de movimiento

Toda la configuración del movimiento se realiza en el

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo cp /etc/motion/motion.conf /etc/motion/motion.conf.bckp
sudo nano /etc/motion/motion.conf
sudo cp /etc/motion/motion.conf /etc/motion/motion.conf.bckp sudo nano /etc/motion/motion.conf
sudo cp /etc/motion/motion.conf /etc/motion/motion.conf.bckp
sudo nano /etc/motion/motion.conf

Los principales parámetros son

  • video_device para definir la cámara que se va a utilizar
  • parámetros de captura (altura, anchura, velocidad de fotogramas)
  • texto que se mostrará en la imagen de la cámara (text_left, text_right, etc.)
  • parámetros de detección de movimiento (umbral, event_gap, etc.)
  • el log_file para escribir logs (por defecto:
  • el directorio target_dir para guardar imágenes y vídeos (por defecto;
  • picture_output para capturar imágenes en la detección
  • video_output para grabar vídeos

N.B.: puedes encontrar todos los parámetros de configuración en la web oficial

Ir más allá en la configuración

Hay un gran número de parámetros en el archivo motion.conf que le permitirán adaptar la adquisición de imágenes a sus necesidades

Si se utilizan varias cámaras, puede definir un conjunto de parámetros para cada cámara (/etc/motion/camera1.conf)

Iniciar Motion desde el terminal

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo motion
sudo motion -c ~/.motion/motion.conf #to use another configuration file
sudo killall motion #to end the process
sudo motion sudo motion -c ~/.motion/motion.conf #to use another configuration file sudo killall motion #to end the process
sudo motion
sudo motion -c ~/.motion/motion.conf #to use another configuration file
sudo killall motion #to end the process

(utilice ~/.motion/motion.conf por defecto, si existe, de lo contrario /etc/motion/motion.conf)

Iniciar Motion como servicio

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo service motion start
sudo service motion status
sudo service motion restart
sudo service motion stop
sudo service motion start sudo service motion status sudo service motion restart sudo service motion stop
sudo service motion start
sudo service motion status 
sudo service motion restart
sudo service motion stop

Nota: En el archivo /etc/motion/motion.conf, deje la opción daemon en OFF.

Crear un flujo de vídeo con Motion

Cambiar la configuración por defecto en /etc/motion/motion.conf

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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>
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>
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.: si activa webcontrol desde el exterior de la máquina, le aconsejamos encarecidamente que active la autenticación en el flujo

No olvides reiniciar el servicio motion después de realizar cualquier cambio en el archivo motion.conf.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sudo service motion restart
sudo service motion restart
sudo service motion restart

Si introduce la dirección IP de su máquina Linux (aquí, 192.168.1.92), seguida del número de puerto definido en stream_port, podrá observar el flujo de vídeo en movimiento.

raspberry-pi-motion-browser Transmisión de vídeo con Motion en Raspberry Pi

Si no utiliza movimiento continuo, puede grabar un vídeo sin esperar a que se detecte movimiento (emulate_motion on, event_gap -1).

Consejos: puedes establecer una imagen de baja calidad para mejorar el ancho de banda del flujo (stream_quality 45) pero mantener una imagen de buena calidad para la grabación de vídeo (video_quality 100).

archivo motion.conf para streaming

/etc/motion/motion.conf (con webcontrol local y los puertos 8553 y 8554)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# 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
# 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
# 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

Aplicaciones

  • Creación de un sistema de videovigilancia
  • Uso de MotionEye OS

Fuentes