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.
sudo apt-get install motion
Comprobación de la instalación
motion --version
Si se produce un error sobre el permiso de acceso al archivo
Puede eliminar el archivo y reiniciar
rm -r /var/log/motion
o conceder derechos de acceso
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
sudo nano ~/.motion/motion.log
Configuración de movimiento
Toda la configuración del movimiento se realiza en el
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
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
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
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.
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.
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)
# 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