Escolar Documentos
Profissional Documentos
Cultura Documentos
Sistema de vigilncia
2016
ndice
Descrio do problema................................................................................................................. 1
Implementao ............................................................................................................................. 4
Bibliotecas ................................................................................................................................. 4
Configuraes ............................................................................................................................ 4
Kernel .................................................................................................................................... 4
Buildroot ............................................................................................................................. 13
[2]
Sistema de vigilncia | 1130425-1130627
Descrio do problema
Comeou-se pela configurao do kernel com o pacote Linux 4.8.10, verso descarregada do
site. www.kernel.org.Todas as opes escolhidas foram selecionadas como estticas. Foram
instalados trs leitores de vdeo para ser possvel visualizar os vdeos e imagens gravados ou at
mesmo stream. Alm destas opes teve-se como base as opes dos guies laboratoriais,
fornecidos para as aulas prticas, porm foram alteradas algumas configuraes para a
arquitetura do processador da mquina que executa o programa. Foram adicionados campos
relativos rea da multimdia para um melhor funcionamento do programa assim como os
drivers das cmaras utilizadas.
A busybox foi compilada juntamente com o buildroot, pois chegou-se concluso que no havia
necessidade de uma configurao especifica para a mesma.
[3]
Sistema de vigilncia | 1130425-1130627
Implementao
Bibliotecas
De forma a no existir quaisquer problemas durante a compilao do kernel e do buildroot
devem ser instaladas as seguintes bibliotecas com o seguinte comando (o utilizador dever ser
root de modo a conseguir executar o comando):
+ +
Configuraes
Kernel
Muitas das opes selecionadas foram pr-definidas pela configurao do kernel e tambm
escolhidas devido ao guio laboratorial. As opes adicionais iro ser comentadas.
Como j foi referido acima, comea-se por descarregar a verso utilizada do kernel:
4.8.10. .
Para iniciar a configurao do kernel necessrio entrar no diretrio criado e usar os comandos:
4.8.10
[4]
Sistema de vigilncia | 1130425-1130627
Esta opo foi deve ser selecionada se o sistema est a ser criado num sistema de 64bit.
General Setup:
[5]
Sistema de vigilncia | 1130425-1130627
[6]
Sistema de vigilncia | 1130425-1130627
Bus options:
Bus options
Networking support
Networking options:
[7]
Sistema de vigilncia | 1130425-1130627
Device Drivers
Block devices:
[8]
Sistema de vigilncia | 1130425-1130627
[9]
Sistema de vigilncia | 1130425-1130627
Multimedia support:
V4L (Video for Linux) um conjunto de drivers e de suporte para captura de vdeo nos sistemas
Linux, devendo ser escolhida.
Visto que o sistema ir interagir com cmaras de vdeo pretendente selecionar o campo de
Cameras/video grabbers support e Autoselect ancillary drivers (tunners, sensors, i2c,
frontends).
Aps uma pesquisa verificou-se que uma das webcams que se utilizou necessitava do campo
USB Video Class (UVC), pois permite a identificao de dispositivos capazes de fazer
streaming de vdeo.
[10]
Sistema de vigilncia | 1130425-1130627
As drivers escolhidas foram de acordo com as webcams utilizadas. Sem elas seria impossvel o
funcionamento das mesmas no sistema construdo.
Graphics Support
[11]
Sistema de vigilncia | 1130425-1130627
USB support:
O suporte para o USB 2.0 necessrio, pois as portas USB da mquina utilizada so do tipo de
conexo USB 2.0 e ser a partir das portas que as webcams sero ligadas.
File Systems:
[12]
Sistema de vigilncia | 1130425-1130627
No final, depois das opes desejadas estarem selecionadas devemos guardar as configuraes
e sair do menu de configurao do kernel. De seguida na linha de comandos executa-se:
8
Aps executar o comando e de o kernel terminar de compilar procede-se configurao do
buildroot.
Buildroot
Para a elaborao deste sistema de vigilncia, aps a elaborao de um kernel para o mesmo,
era necessrio criar um sistema de ficheiros para no qual fossem encontradas todas a
funcionalidades necessrias execuo do kernel deste sistema de vigilncia.
Para a criao do sistema de ficheiros foi utilizada uma ferramenta denominada de buildroot.
wget https://buildroot.org/downloads/buildroot-2016.11.1.tar.bz2
Descompactado com o comando:
cd buildroot-2016.08.1
make xconfig
[13]
Sistema de vigilncia | 1130425-1130627
Configurao:
Em target options:
Foram selecionadas estas arquiteturas devido maquina onde seria executado o sistema, sendo
esta mquina de 64 bits com um processador core i3 da intel que corresponde arquitetura
core2 do buildroot.
Em toolchain:
toolchain type:busybox
Neste caso foram selecionadas as opes referentes toolchain que o buidlroot iria providenciar
ao sistema. Assim como as verses a utilizar do binutils e do gcc. Foi ainda adicionado o suporte
para c++ necessrio compilao do visualizador de vdeo VLC.
[14]
Sistema de vigilncia | 1130425-1130627
System configuration:
Passwords encoding:sha-512
Init system:Busybox
[15]
Sistema de vigilncia | 1130425-1130627
O sistema tem as configuraes apresentadas, parte delas comuns distribuio criada nas
aulas. Foi escolhido um login com password pois um sistema de vigilancia s dever ser acedido
por quem possui credenciais. No foi atribuida password para tornar mais simples a fase de
testes e evitar colocar a password em cada reboot. Foi escolhido uma forma de encoding para a
password de forma a aumentar a segurana do sistema. O sistema de inicializao o conhecido
e utilizado nas aulas, busybox. A opo de remout permite que o sistema deixe de ser read-only
e possa ser read-write. As outras opes como login prompt e system banner so referentes ao
display no arranque de mensagens e menu de login.
Target packages:
Audio and video aplications: mplayer, build and install mplayer, build and install memcoder,
v4l2grab e vlc.
Ffmpeg: build ffmpeg, build ffplay, enable input devices, enable output devices.
[16]
Sistema de vigilncia | 1130425-1130627
A compilao ir gerar um ficheiro rootfs.tar que ir ser extrado para a segunda partio do
dispositivo a utilizar.
[17]
Sistema de vigilncia | 1130425-1130627
Dispositivo de armazenamento
necessrio um dispositivo de armazenamento, neste caso foi utilizada uma pen USB, para
iniciar o sistema na mquina.
Configurao
Verifica-se a partio dos dispositivos inicialmente:
cat /proc/partitions
Para se ter a certeza que o dispositivo se encontra desmontado executa-se o seguinte
comando sendo root:
fdisk /dev/sdb
#Criar uma partio, com 1Gbyte de espao por exemplo, utiliza-se a seguinte sequncia de
comandos: (n ; p; <enter>; +1000M).
cat /proc/partitions
#Colocar a primeira partio com o sistema de ficheiros do tipo FAT e a sgunda com o tipo
EXT4
mkfs.vfat /dev/sdb1
mkfs.vfat /dev/sdb2
#Instalar o syslinux na primeira partio do dispositivo
syslinux -i /dev/sdb1
dd if=/usr/share/syslinux/mbr.bin of=/dev/sdb conv=fsync
[18]
Sistema de vigilncia | 1130425-1130627
umount /dev/sdb1
mkdir m1
mount /dev/sdb1 m1
nano syslinux.cfg
#O default menu.c32 utilizado para criar um ambiente mais amigvel ao utilizador quando se
executa o sistema.
cd linux-4.8.10
cp arch/x86/boot/bzImage ../m1/bzImage-vigilance
cd ..
#Criao do sistema de ficheiros principal na segunda partio da pen USB, utilizando o
ficheiro gerado pela compilao do buildroot
mkdir mnt1
cp buildroot-2016.08.1
cp output/images/rootfs.tar ../mnt1
cd ../mnt1
tar xvf rootfs.tar
mkdir mnt2
mount /dev/sdb2 mnt2
cp -a mnt1/* mnt2/
umount mnt1
umount mnt2
[19]
Sistema de vigilncia | 1130425-1130627
Testes do sistema
Funcionamento do sistema:
Este prottipo funciona diretamente na linha de comando de um sistema previamente
elaborado com o fim de sistema de vigilncia, ou seja, no possui interao grfica para com o
utilizador.
Comandos:
1. vlc v4l2:///dev/videox
O comando responsvel por abrir uma janela de streaming de vdeo no programa vlc da camara
x. No caso do prottipo desenvolvido era possvel ver streaming de vdeo de 3 dispositivos
diferentes.
[20]
Sistema de vigilncia | 1130425-1130627
O comando anterior pode ser ainda usado para retirar frames ao longo da gravao.
Assim como no comando acima definimos o input, que ser o ficheiro de vdeo, o output, que
ser a imagem, e o tamanho do frame. Para alm destes acrescenta-se o parmetro -ss que
corresponde ao momento, em segundos, do frame a ser retirado do vdeo.
5. O ffmpeg permite ainda criar um mosaico de vdeos que pode ser usado para ver
simultneo imagens captadas pelas diversas cmaras utilizadas no sistema.
Neste comando definimos os inputs, -i, provenientes de quatro vdeos diferentes. Usamos o
parmetro -filter_complex para criar o output proveniente de vrios inputs. Atravs deste
ultimo parmetro definimos o frame size da base onde sero colocados os vdeos. De seguida
definimos o frame size de cada um e a sua localizao na base assim como o ponto onde ser
colocado no sistema de eixos x e y. Com o parmetro -c definimos o codec a ser usado e de
seguida o ficheiro de output.
[21]
Sistema de vigilncia | 1130425-1130627
Imagens do sistema:
I. Escolha da opo de boot
[22]
Sistema de vigilncia | 1130425-1130627
V. Stream em mosaico
[23]
Sistema de vigilncia | 1130425-1130627
[24]
Sistema de vigilncia | 1130425-1130627
Concluses
Aps vrios testes efetuados conclui-se que o sistema funciona de forma esperada captando
imagens quer em forma de vdeo, quer em forma de fotografia, efetua o stream de vdeo
proveniente de diferentes fontes e ainda permite criar um mosaico com os vdeos captados das
diversas fontes. O sistema foi otimizado em termos de espao a ocupar na compilao do
buildroot uma vez que os ficheiros de vdeo so normalmente pesados ocupando um grande
espao de memria. Por outro lado, o kernel foi otimizado de forma a ser mais eficaz e rpido e
no mais leve. Os testes feitos memria mostraram-se satisfatrios, uma vez que, aps a
gravao de alguns vdeos a distribuio ainda possui 25% da memria de armazenamento livre.
Algumas otimizaes podem ainda ser efetuadas como excluir a aplicao mplayer pois esta s
foi adicionada como precauo caso a aplicao vlc no funcionasse como esperado, pois o
suporte para esta ainda no total.
O sistema possui ainda capacidade para ser expansvel a streaming por rede. Contem os drivers
de rede necessrios para, em vez de, se fazer streaming para um output ou ficheiro pode ser
feito para uma outra mquina colocada na mesma rede. Este sistema seria mais apelativo se
estas funcionalidades fossem operadas em ambiente grfico, sendo este um dos objetivos de
melhoria futuros. Futuramente pode ainda adicionar-se capacidade de captao de som para
que o streaming seja o mais fiel realidade em que a camara se situa possvel.
[25]
Sistema de vigilncia | 1130425-1130627
Bibliografia
[1] Jorge Estrela, Linux Distribution: Kernel Configuration, 2016.
[2] Jorge Estrela, Assembly of a minimalist Linux distro Assembly of a minimalist Linux
distribution, 2016.
[3] Jorge Estrela, Cross-compilation with Buildroot, 2016.
[4] ZoneMinder - Como instalar esse sistema de vigilncia para Linux? - Emerson Barros.
[Online]. Available: https://emersonbarros.com.br/zoneminder-como-instalar-esse-
sistema-de-vigilancia-para-linux/. [Accessed: 23-Dec-2016].
[5] script(1) - Linux manual page. [Online]. Available: http://man7.org/linux/man-
pages/man1/script.1.html. [Accessed: 17-Dec-2016].
[6] Extract A Single Image From A Video Using FFMPEG Bertie Baggios Wonderland.
[Online]. Available: http://blog.roberthallam.org/2010/06/extract-a-single-image-from-
a-video-using-ffmpeg/. [Accessed: 23-Dec-2016].
[7] LinuxCommand.org: Writing shell scripts. [Online]. Available:
http://linuxcommand.org/writing_shell_scripts.php. [Accessed: 21-Dec-2016].
[8] Unix Shell The case...esac Statement. [Online]. Available:
https://www.tutorialspoint.com/unix/case-esac-statement.htm. [Accessed: 23-Dec-
2016].
[9] Linux and Unix script command help and examples. [Online]. Available:
http://www.computerhope.com/unix/uscript.htm. [Accessed: 17-Dec-2016].
[10] Create a mosaic out of several input videos FFmpeg. [Online]. Available:
https://trac.ffmpeg.org/wiki/Create a mosaic out of several input videos. [Accessed: 23-
Dec-2016].
[11] Capture/Blackmagic FFmpeg. [Online]. Available:
https://trac.ffmpeg.org/wiki/Capture/Blackmagic. [Accessed: 23-Dec-2016].
[12] Concatenate FFmpeg. [Online]. Available: https://trac.ffmpeg.org/wiki/Concatenate.
[Accessed: 23-Dec-2016].
[13] Using case statements. [Online]. Available: http://tldp.org/LDP/Bash-Beginners-
Guide/html/sect_07_03.html. [Accessed: 22-Dec-2016].
[14] shell - Run a string as a command within a Bash script - Stack Overflow. [Online].
Available: http://stackoverflow.com/questions/2355148/run-a-string-as-a-command-
within-a-bash-script. [Accessed: 22-Dec-2016].
[15] linux - Pass arguments into C program from command line - Stack Overflow. [Online].
Available: http://stackoverflow.com/questions/498320/pass-arguments-into-c-
program-from-command-line. [Accessed: 17-Dec-2016].
[16] ffmpeg command line for capturing (and recording) audio and video in 720p from
decklink card using Windows 7 - Stack Overflow. [Online]. Available:
http://stackoverflow.com/questions/19212047/ffmpeg-command-line-for-capturing-
and-recording-audio-and-video-in-720p-from-d. [Accessed: 23-Dec-2016].
[17] ffmpeg Documentation. [Online]. Available: https://ffmpeg.org/ffmpeg.html.
[Accessed: 23-Dec-2016].
[26]
Sistema de vigilncia | 1130425-1130627
[18] The case statement - Linux Shell Scripting Tutorial - A Beginners handbook. [Online].
Available: https://bash.cyberciti.biz/guide/The_case_statement. [Accessed: 17-Dec-
2016].
[19] StreamingGuide FFmpeg. [Online]. Available:
https://trac.ffmpeg.org/wiki/StreamingGuide. [Accessed: 23-Dec-2016].
[20] C Command Line Arguments. [Online]. Available:
https://www.tutorialspoint.com/cprogramming/c_command_line_arguments.htm.
[Accessed: 20-Dec-2016].
[21] [FFmpeg-user] Capture Video from Decklink Video Render. [Online]. Available:
https://ffmpeg.org/pipermail/ffmpeg-user/2012-December/012048.html. [Accessed:
23-Dec-2016].
[27]