Ubuntu + Zoneminder = Solução Livre para CFTV
Introdução
Bom, vamos falar sobre a instalação do Zoneminder e
algumas dicas e truques para o mesmo funcionar adequadamente.
Como tudo começou:
Meu chefe me passou a url do programa dizendo que seria uma boa solução para o controle das imagens geradas pelas câmeras internas. Pediu pra eu testar.
Equipamentos:
Placa de Captura com chipset bttv. Como já havia visto uma funcionando, indiquei a Pico2000. Que pode ser encontrada em média de 50 reais no mercado livre (http://www.mercadolivre.com.br).
Como tudo começou:
Meu chefe me passou a url do programa dizendo que seria uma boa solução para o controle das imagens geradas pelas câmeras internas. Pediu pra eu testar.
Equipamentos:
Placa de Captura com chipset bttv. Como já havia visto uma funcionando, indiquei a Pico2000. Que pode ser encontrada em média de 50 reais no mercado livre (http://www.mercadolivre.com.br).
Computador com slot pci, e os cabos para ligar as câmeras a placa.
E o sistema operacional usado será o Linux, distribuição Ubuntu.
A escolha da distribuição pesou devido ao fato de que todos os desktops da empresa rodarem Ubuntu, então pra não ficar inventando moda resolvi usar a mesma coisa para padronizar. E provavelmente o servidor que vamos colocar em produção vai ser Debian, não vai haver grandes mudanças na hora da instalação para produção.
Vamos ao que interessa.
Verificando a placa
instalada
Para fazer a verificação se o sistema
detectou a placa, faça o seguinte procedimento:
# dmesg | grep bttv
Deve aparecer a seguinte saída:
# dmesg | grep bttv
Deve aparecer a seguinte saída:
Com isso já guarde as seguintes informações:
[ 82.180611] bttv0: registered device video0
[ 82.180792] bttv0: registered device vbi0
O tal video0 vai ser de grande ajuda posteriormente.
Instalações
Agora vamos a parte boa, instalar o que
é necessário.
Vamos fazer a instalação por partes:
1. Apache, MySQL e PHP:
# apt-get update
# apt-get install apache2 mysql-server mysql-client php5-mysql php5-gd php5-cgi php-pear libgd-tools php5-dev libmysql++-dev libmysqlclient15-dev
Depois dessa instalação, já vai estar com seu servidor web pronto para o serviço.
2. Codecs de vídeo:
# apt-get update
# apt-get install libavcodec-dev libavcodec1d libavformat-dev libavformat1d libavutil-dev libavutil1d ffmpeg libavifile-0.7c2
3. As demais dependências:
# apt-get update
# apt-get install g++ make netpbm libssl-dev libjpeg62-dev libmime-perl libwww-perl libarchive-tar-perl libdate-manip-perl libarchive-zip-perl libmime-lite-perl libdbi-perl libdbd-mysql-perl libpcre3-dev libgnutls-dev
Feito isso seu sistema já vai estar pronto para receber o Zoneminder, após claro a pequena compilação dele.
Vamos fazer a instalação por partes:
1. Apache, MySQL e PHP:
# apt-get update
# apt-get install apache2 mysql-server mysql-client php5-mysql php5-gd php5-cgi php-pear libgd-tools php5-dev libmysql++-dev libmysqlclient15-dev
Depois dessa instalação, já vai estar com seu servidor web pronto para o serviço.
2. Codecs de vídeo:
# apt-get update
# apt-get install libavcodec-dev libavcodec1d libavformat-dev libavformat1d libavutil-dev libavutil1d ffmpeg libavifile-0.7c2
3. As demais dependências:
# apt-get update
# apt-get install g++ make netpbm libssl-dev libjpeg62-dev libmime-perl libwww-perl libarchive-tar-perl libdate-manip-perl libarchive-zip-perl libmime-lite-perl libdbi-perl libdbd-mysql-perl libpcre3-dev libgnutls-dev
Feito isso seu sistema já vai estar pronto para receber o Zoneminder, após claro a pequena compilação dele.
Instalação do Zoneminder
Tendo instalado todos os programas
anteriores, essa parte é mais simples pois provavelmente não vai dar erro
agora.
Baixe o source pelo site:
Baixe o source pelo site:
# wget -c http://www2.zoneminder.com/downloads/ZoneMinder-1.23.2.tar.gz
# tar czf ZoneMinder-1.23.2.tar.gz
# cd ZoneMinder-1.23.2
Agora vem o pulo do gato, se você fizer sem alterar nada vai dar erro no make, se quiser testar, fique a vontade, se quiser fazer o trem funcionar de primeira edite o arquivo src/zm_mpeg.cpp e na linha 280 altere de:
#if ZM_FFMPEG_SVN
Para:
#if !ZM_FFMPEG_SVN
Isso mesmo, só adicionar um "!" ali depois do if.
Agora proceda com a instalação:
# ./configure --with-webdir=/var/www/zm --with-cgidir=/usr/lib/cgi-bin --with-webuser=www-data --with-webgroup=www-data
# make
# make install
Agora vamos usar o script para criar o banco de dados:
# mysql mysql < db/zm_create.sql -p
E agora logar no mysql para dar permissão ao usuário criado:
# mysql -u root -p
mysql> grant select,insert,update,delete on zm.* to 'zmuser'@localhost identified by 'zmpass';
mysql> flush privileges;
Prontinho, prontinho, prontinho...
Script de inicialização
Crie um arquivo chamado zoneminder e coloque dentro dele as seguintes linhas para a criação de um script de inicialização "automágica":
De acordo com sua distribuição, coloque o script no local adequado, dê permissão 775 para ele ser executado e reinicie sua máquina para fazer o teste.
Se for no Ubuntu também:
- copie para o diretório /etc/init.d
- faça os links simbólicos:
# ln -s /etc/init.d/zoneminder /etc/rc0.d/K20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc1.d/K20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc2.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc3.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc4.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc5.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc6.d/K20zoneminder
- pronto, ele irá iniciar sozinho.
#!/bin/sh
# description: Control ZoneMinder as a Service
# chkconfig: 2345 35 15
# Source function library.
#. /etc/rc.d/init.d/functions
prog=ZoneMinder
ZM_PATH_BIN="/usr/bin"
command=`which zmpkg.pl`
start() {
echo -n "Starting $prog: "
$command start
RETVAL=$?
[ $RETVAL = 0 ] && echo success
[ $RETVAL != 0 ] && echo failure
echo
[ $RETVAL = 0 ] && touch /var/lock/zm
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
#
# Why is this status check being done?
# as $command stop returns 1 if zoneminder
# is stopped, which will result in
# this returning 1, which will stuff
# dpkg when it tries to stop zoneminder before
# uninstalling . . .
#
result=`$command status`
if [ ! "$result" = "running" ]; then
echo "Zoneminder already stopped"
echo
RETVAL=0
else
$command stop
RETVAL=$?
[ $RETVAL = 0 ] && echo success
[ $RETVAL != 0 ] && echo failure
echo
[ $RETVAL = 0 ] && rm -f /var/lock/zm
fi
}
status() {
result=`$command status`
if [ "$result" = "running" ]; then
echo "ZoneMinder is running"
RETVAL=0
else
echo "ZoneMinder is stopped"
RETVAL=1
fi
}
case "$1" in
'start')
start
;;
'stop')
stop
;;
'restart' | 'force-reload')
stop
start
;;
'status')
status
;;
*)
echo "Usage: $0 { start | stop | restart | status }"
RETVAL=1
;;
esac
exit $RETVAL
# description: Control ZoneMinder as a Service
# chkconfig: 2345 35 15
# Source function library.
#. /etc/rc.d/init.d/functions
prog=ZoneMinder
ZM_PATH_BIN="/usr/bin"
command=`which zmpkg.pl`
start() {
echo -n "Starting $prog: "
$command start
RETVAL=$?
[ $RETVAL = 0 ] && echo success
[ $RETVAL != 0 ] && echo failure
echo
[ $RETVAL = 0 ] && touch /var/lock/zm
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
#
# Why is this status check being done?
# as $command stop returns 1 if zoneminder
# is stopped, which will result in
# this returning 1, which will stuff
# dpkg when it tries to stop zoneminder before
# uninstalling . . .
#
result=`$command status`
if [ ! "$result" = "running" ]; then
echo "Zoneminder already stopped"
echo
RETVAL=0
else
$command stop
RETVAL=$?
[ $RETVAL = 0 ] && echo success
[ $RETVAL != 0 ] && echo failure
echo
[ $RETVAL = 0 ] && rm -f /var/lock/zm
fi
}
status() {
result=`$command status`
if [ "$result" = "running" ]; then
echo "ZoneMinder is running"
RETVAL=0
else
echo "ZoneMinder is stopped"
RETVAL=1
fi
}
case "$1" in
'start')
start
;;
'stop')
stop
;;
'restart' | 'force-reload')
stop
start
;;
'status')
status
;;
*)
echo "Usage: $0 { start | stop | restart | status }"
RETVAL=1
;;
esac
exit $RETVAL
De acordo com sua distribuição, coloque o script no local adequado, dê permissão 775 para ele ser executado e reinicie sua máquina para fazer o teste.
Se for no Ubuntu também:
- copie para o diretório /etc/init.d
- faça os links simbólicos:
# ln -s /etc/init.d/zoneminder /etc/rc0.d/K20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc1.d/K20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc2.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc3.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc4.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc5.d/S20zoneminder
# ln -s /etc/init.d/zoneminder /etc/rc6.d/K20zoneminder
- pronto, ele irá iniciar sozinho.
Acessando o ZM
Depois de feito todo o procedimento
anterior, verifique se o apache está rodando, se sim acesse:
http://localhost/zm
http://localhost/zm
Agora o resto é simples, para as configurações iniciais só clicar em Opções (ou Options se ele não pegar o idioma pt-br). Como na imagem abaixo:
Na primeira tela você pode escolher a linguagem da forma que achar melhor:
Na aba caminhos você edita onde deseja salvar os arquivos capturados:
Na aba imagens você escolhe como deseja que seja feito o streaming de vídeo e também o caminho do ffmpeg.
O resto das opções são bem intuitivas, basta ler. Isso vou deixar com você.
Dicas e conclusão
Dicas (Onde eu tropecei):
- Verificar o padrão da câmera se é PALM ou
NTSC.
- Colocar pra gravar os dados em outra partição
separada.
- Ler os manuais
Conclusões
Esse artigo foi escrito com a
finalidade de dar uma luz pra quem esta ralando nessa área e não quer mexer com
esses GEOVISION. Então está aí pra mostrar o caminho, o resto depende de cada
um. Qualquer dúvida, estamos aqui pra saná-la.
Obrigado.
Thiago Alves dos Santos
thiago [@] gmail.com
Obrigado.
Thiago Alves dos Santos
thiago [@] gmail.com
Retirado de http://www.vivaolinux.com.br/artigo/Ubuntu-+-Zoneminder-=-Solucao-Livre-para-CFTV?pagina=1
Veja também : http://www.hardware.com.br/tutoriais/sistema-vigilancia-zoneminder/
Comentários
Postar um comentário