Mudanças entre as edições de "Motion como sistema de Vigilância e Segurança"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 109: Linha 109:
 
Segue a lista das principais opções do arquivo de configuração: <br />
 
Segue a lista das principais opções do arquivo de configuração: <br />
  
'''videodevice /dev/videoX''' É o parâmetro o qual se especifica o dispositivo de vídeo a ser utilizado, geralmente USB. A identificação do dispositivo de vídeo geralmente varia entre /dev/video0, /dev/video1 ...etc. <br />
+
'''videodevice /dev/videoX''' É o parâmetro o qual se especifica o dispositivo de vídeo a ser utilizado, geralmente USB. A identificação do dispositivo de vídeo geralmente varia entre /dev/video0, /dev/video1 ...etc. <br />
'''rotate 0''' Nesse parâmetro, pode ser definida em quantos graus se deseja rotacionar a imagem. <br />
+
'''rotate 0''' Nesse parâmetro, pode ser definida em quantos graus se deseja rotacionar a imagem. <br />
'''width 640''' Nesse parâmetro é definida a largura da imagem. <br />
+
'''width 640''' Nesse parâmetro é definida a largura da imagem. <br />
'''height 480''' Nesse parâmetro é definida a altura da imagem. <br />
+
'''height 480''' Nesse parâmetro é definida a altura da imagem. <br />
'''framerate 30''' Nesse parâmetro, define-se o tanto de quadros que serão apresentado em um segundo. (FPS) <br />
+
'''framerate 30''' Nesse parâmetro, define-se o tanto de quadros que serão apresentado em um segundo. (FPS) <br />
'''netcam_url valor''' Esse parâmetro é destinado à câmeras IPs. O formato da URL pode ser http://exemplo, ftp://exemplo, mjpeg://exemplo, rtsp://exemplo ou file://exemplo. <br />
+
'''netcam_url valor''' Esse parâmetro é destinado à câmeras IPs. O formato da URL pode ser http://exemplo, ftp://exemplo, mjpeg://exemplo, rtsp://exemplo ou file://exemplo. <br />
 +
'''netcam_userpass usuario:senha''' → Aqui é definida o usuário e a senha da câmera IP. <br />
 +
'''rtsp_uses_tcp on/off''' → Força ou não o uso do protocolo TCP para a obtenção das imagens pelo protocolo rtsp. "On", para usar TCP e "off" para usar UDP. <br />
 +
'''auto_brightness off/on''' → Desativa/ativa o controle automático de brilho conforme a luminosidade do ambiente. ,br />
 +
'''brightness 0''' → Controle de brilho do dispositivo. Valores vão de 0 à 255. <br />
 +
'''contrast 0''' → Controle de contraste do dispositivo. Valores vão de 0 à 255. <br />
 +
'''saturation 0''' → Controle de profundidade de cor do dispositivo. Valores vão de 0 à 255. <br />
 +
'''power_line_frequency -1''' → Controla o ajuste de branco para compensar a intensidade luminosa do ambiente. Valores podem ser -1, que não modifica a configuração dispositivo, 0, desativa a opção, 1, põe em frequência de 50 Hz, 2, põe em frequência de 60 Hz e 3 põe em modo automático. <br />
 +
'''threshold 1000''' → Define o número de pixels que precisam ser modificados para que seja considerado movimento. <br />
 +
'''pre_capture 2''' → Define o número de imagens a serem incluídas na gravação antes do movimento ser detectado. <br />
 +
'''post_capture 2''' →  Define o número de imagens a serem incluídas na gravação depois do movimento ser detectado. <br />
 +
'''output_pictures off''' → Ao ser detectado movimento, se estiver habilitado (on), uma sequência de imagens será criada. <br />

Edição das 16h23min de 11 de novembro de 2016

O Motion

Logomarca do aplicativo


Site Oficial (antigo): http://lavrsen.dk/foswiki/bin/view/Motion/WebHome
Repositório no GitHub: https://github.com/Motion-Project/motion
Site oficial: https://motion-project.github.io/

O Motion é um programa que monitora o sinais de vídeo. Ele é capaz de detectar se uma parte significante da imagem mudou, em outras palavras, ele pode detectar movimento.
O projeto está em processo de migração do site http://www.lavrsen.dk/foswiki/bin/view/Motion/WebHome para o GitHub.
Informações mais recente de atividades no projeto pode ser encontradas na página de notícias.
A documentação para a versão mais recente do código pode ser encontrada aqui. Informações sobre as versões pode ser encontrada aqui.


Situação

Quando pensa-se em organizar um sistema de monitoramento, a questão do hardware é geralmente a que mais leva a atenção, e deve, já um sistema de monitoramento de possuir dispositivos com resoluções de vídeo suficientes para realizar identificações de rostos, placas, etc. Com isso, nem sempre pensa-se em qual software realizará a captura de imagens e pode-se acabar comprando uma solução cara e com limitações, e a sugestão apontada aqui é usar o Motion para isso.


Algumas informações técnicas

Sistema operacional utilizado: Debian 8 (Jessie) 64 bits
Versão do Motion: 3.4.1-1 (Disponível aqui.
Versão do kernel Linux: 3.16.0-4
Número de núcleos de processamento: 8 núcleos
Quantidade de memória RAM: 8 gigabytes
Resoluções e marca dos dispositivos de vídeos testados: 640x480, 1280x800 (Axis), 1280x960 (Axis) e 2592x1944 (Axis)
Servidor virtualizado

Bug na versão 4.0.1

Devido à maior quantidade de recursos, optou-se por utilizar a versão 3.4.1 do software Motion. Essa versão estava disponível no repositório oficial do projeto Debian Testing, sendo a mesma substituída pela versão 4.0.1. A versão mais nova, no entanto, possui um bug que faz com que o ffmpeg não opere corretamente. O bug ocorre após a detecção de movimento, quando a gravação de vídeo fosse interrompida, e o que acontece é um mero congelamento de imagem. Isso faz com que o arquivo de vídeo seja gerado mesmo sem movimento detectado, ocasionando assim o aumento no arquivo de vídeo sem necessidade.


Instalação

Antes de começar os procedimentos, remova quaisquer pacotes de codec conflitantes, do tipo x264, libx264-dev, libavcodec, libavcodec, libavfilter, libavfilter, libavresample, libavutil, libpostproc, libswresample, libswscale, ffmpeg.


root@motion:~# apt purge x264, libx264-dev, libavcodec, libavcodec, libavfilter, libavfilter, libavresample, libavutil, libpostproc, libswresample, libswscale, ffmpeg

1. Compilando e instalando o libx264:

root@motion:~# git clone git://git.videolan.org/x264.git
root@motion:~# cd x264
root@motion:~# ./configure --enable-shared --disable-opencl
root@motion:~# make
root@motion:~# make install && ldconfig

2. Compilando e instalando o FFMPEG com suporte ao x264:

root@motion:~# git clone git://git.ffmpeg.org/ffmpeg
root@motion:~# cd ffmpeg
root@motion:~# ./configure --arch=armhf --target-os=linux --enable-gpl --enable-libx264 --enable-nonfree --enable-shared
root@motion:~# make
root@motion:~# make install && ldconfig

3. Instalado a biblioteca jpeg:

root@motion:~# apt install libjpeg-dev

4. Compilando e instalando o motion:

root@motion:~# apt install dh-autoreconf
root@motion:~# wget http://200.135.37.107/nuvem/index.php/s/AlTDgN70W1D1xXo/download
root@motion:~# unzip download
root@motion:~# cd motion-3.4.1
root@motion:~# autoreconf
root@motion:~# ./configure
root@motion:~# make
root@motion:~# make install && ldconfig


Configurando o Motion

Após instalar o Motion, é possível acessar os arquivos de configuração do mesmo em /usr/local/etc/motion.

root@motion:~# cd /usr/local/etc/motion

Após isso, basta modificar o nome do arquivo motion-dist.conf para motion.conf e criar um arquivo chamado camera1.conf:

root@motion:/usr/local/etc/motion# mv motion-dist.conf motion.conf
root@motion:/usr/local/etc/motion# echo "# Camera 1" > camera1.conf

Agora, o arquivo "motion.conf" será modificado. O arquivo "camera1.conf" é um arquivo de configuração auxiliar, todas as opções que forem especificadas nele, substituirão a do arquivo de configuração original.
Segue a lista das principais opções do arquivo de configuração:

videodevice /dev/videoX → É o parâmetro o qual se especifica o dispositivo de vídeo a ser utilizado, geralmente USB. A identificação do dispositivo de vídeo geralmente varia entre /dev/video0, /dev/video1 ...etc.
rotate 0 → Nesse parâmetro, pode ser definida em quantos graus se deseja rotacionar a imagem.
width 640 → Nesse parâmetro é definida a largura da imagem.
height 480 → Nesse parâmetro é definida a altura da imagem.
framerate 30 → Nesse parâmetro, define-se o tanto de quadros que serão apresentado em um segundo. (FPS)
netcam_url valor → Esse parâmetro é destinado à câmeras IPs. O formato da URL pode ser http://exemplo, ftp://exemplo, mjpeg://exemplo, rtsp://exemplo ou file://exemplo.
netcam_userpass usuario:senha → Aqui é definida o usuário e a senha da câmera IP.
rtsp_uses_tcp on/off → Força ou não o uso do protocolo TCP para a obtenção das imagens pelo protocolo rtsp. "On", para usar TCP e "off" para usar UDP.
auto_brightness off/on → Desativa/ativa o controle automático de brilho conforme a luminosidade do ambiente. ,br /> brightness 0 → Controle de brilho do dispositivo. Valores vão de 0 à 255.
contrast 0 → Controle de contraste do dispositivo. Valores vão de 0 à 255.
saturation 0 → Controle de profundidade de cor do dispositivo. Valores vão de 0 à 255.
power_line_frequency -1 → Controla o ajuste de branco para compensar a intensidade luminosa do ambiente. Valores podem ser -1, que não modifica a configuração dispositivo, 0, desativa a opção, 1, põe em frequência de 50 Hz, 2, põe em frequência de 60 Hz e 3 põe em modo automático.
threshold 1000 → Define o número de pixels que precisam ser modificados para que seja considerado movimento.
pre_capture 2 → Define o número de imagens a serem incluídas na gravação antes do movimento ser detectado.
post_capture 2 → Define o número de imagens a serem incluídas na gravação depois do movimento ser detectado.
output_pictures off → Ao ser detectado movimento, se estiver habilitado (on), uma sequência de imagens será criada.