Neste tutorial, veremos como configurar um fluxo de vídeo com o Motion a partir de um Raspberry Pi. Este tutorial é compatível com qualquer sistema Linux.
Hardware
- Raspberry Pi (ou outra máquina com Linux)
- Câmara USB ou câmara CSI
Descrição do movimento
O programa Motion foi desenvolvido como um sistema de vigilância. Permite observar várias câmaras, detetar movimentos em cada câmara e gravar imagens ou vídeos nesse momento.
Esta ferramenta permite
- transmitir vídeos para visualização remota
- detetar movimentos em cada câmara
- gravar imagens ou vídeos das câmaras
Instalação de movimento
Se este ainda não for o caso na sua versão do sistema operativo, pode instalar o Motion utilizando o seguinte comando.
sudo apt-get install motion
Verificar a instalação
motion --version
Se ocorrer um erro sobre a permissão de acesso ao ficheiro
Pode apagar o ficheiro e reiniciar
rm -r /var/log/motion
ou conceder direitos de acesso
sudo chmod -R 777 /var/log/motion sudo chmod -R 777 /var/lib/motion
ou criar outro ficheiro de registo e adicionar o seu caminho ao ficheiro motion.conf
sudo nano ~/.motion/motion.log
Configuração do movimento
Toda a configuração do movimento é efectuada no
sudo cp /etc/motion/motion.conf /etc/motion/motion.conf.bckp sudo nano /etc/motion/motion.conf
Os principais parâmetros incluem
- video_device para definir a câmara a utilizar
- parâmetros de captura (altura, largura, velocidade de fotogramas)
- texto a apresentar na imagem da câmara (text_left, text_right, etc.)
- parâmetros de deteção de movimento (limiar, event_gap, etc.)
- o ficheiro log_file para escrever os registos (predefinição:
- o diretório target_dir para guardar imagens e vídeos (predefinição;
- picture_output para captar imagens aquando da deteção
- video_output para gravar vídeos
N.B.: todos os parâmetros de configuração podem ser consultados no sítio Web oficial
Ir mais longe na configuração
Há um grande número de parâmetros no ficheiro motion.conf que lhe permitem adaptar a aquisição de imagens às suas necessidades
Se forem utilizadas várias câmaras, é possível definir um conjunto de parâmetros para cada câmara (/etc/motion/camera1.conf)
Iniciar o movimento a partir do terminal
sudo motion sudo motion -c ~/.motion/motion.conf #to use another configuration file sudo killall motion #to end the process
(utilizar ~/.motion/motion.conf por defeito, se existir, caso contrário /etc/motion/motion.conf)
Iniciar o Motion como um serviço
sudo service motion start sudo service motion status sudo service motion restart sudo service motion stop
N.B.: No ficheiro /etc/motion/motion.conf, deixe a opção daemon definida como OFF.
Criar um fluxo de vídeo com o Motion
Alterar as definições predefinidas em /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.: se ativar o webcontrol a partir do exterior da máquina, aconselhamos vivamente a ativar a autenticação no fluxo
Não se esqueça de reiniciar o serviço motion depois de fazer quaisquer alterações ao ficheiro motion.conf.
sudo service motion restart
Se introduzir o endereço IP da sua máquina Linux (aqui, 192.168.1.92), seguido do número da porta definido em stream_port, pode observar o fluxo de vídeo em movimento.
Se não estiver a utilizar movimento contínuo, pode gravar um vídeo sem esperar que seja detectado movimento (emulate_motion on, event_gap -1).
Sugestões: pode definir uma imagem de baixa qualidade para melhorar a largura de banda do fluxo (stream_quality 45) mas manter uma imagem de boa qualidade para a gravação de vídeo (video_quality 100).
Ficheiro motion.conf para streaming
/etc/motion/motion.conf (com webcontrol local e portas 8553 e 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
Aplicações
- Criar um sistema de videovigilância
- Utilização do MotionEye OS