Neste tutorial iremos mostrar a possibilidade de realizar streaming ou transmissão de vídeo com uma Raspberry Pi Zero W usando o MJPG-streamer, onde você poderá visualizar o vídeo de sua Raspberry Pi em tempo real através de um navegador web ou programa como o VLC. Esse é um projeto bem interessante se vocẽ quer ter uma câmera IP em sua residência ou implementar sistemas de segurança por vídeo.
Para este tutorial é interessante que você tenha alguns conhecimentos básicos sobre Linux embarcado, como comandos de terminal.
Montagem da câmera na Raspberry Pi
Na loja MakerHero você encontra as câmeras da Raspberry Pi. Ambas as câmeras já vem com um cabo flat para conexão com o modelo 3. Se você deseja utilizar as câmeras com a Zero W, existe a case oficial da Raspberry Pi Zero que acompanha um cabo flat adaptado. Basta conectar a câmera como na figura abaixo.
Sobre o MJPG-streamer
MJPG-streamer é uma aplicação que “lê” arquivos JPG de webcams compatíveis com Linux-UVC e faz um streaming desses arquivos em formato M-JPEG através do protocolo HTTP. Esse streaming pode ser visto em navegadores Web, VLC e outros softwares. Foi um programa originalmente desenvolvido para dispositivos embarcados com recursos de RAM e CPU bem limitados. É um programa sucessor do UVC-streamer, também uma aplicação para streaming de dispositivos compatíveis Linux-UVC.
Após instalado o MJPG-streamer, e com ajuda de alguns scripts de inicialização, será possível visualizar o vídeo da câmera da sua Raspberry Pi em tempo real através do navegador. Veja abaixo como instalar o MJPG-streamer.
Instalando o MJPG-streamer
Acesse o sistema de sua Raspberry Pi seja via monitor HDMI ou via terminal SSH e clone o repositório abaixo na pasta /home/pi do sistema Raspbian.
cd /home/pi git clone https://github.com/jacksonliam/mjpg-streamer.git
Esse repositório é na verdade um fork do projeto original com adição ao suporte a câmera da Raspberry Pi.
sudo apt-get install cmake libjpeg8-dev
Então inicie a compilação.
cd mjpg-streamer/mjpg-streamer-experimental make sudo make install
Utilizando o MJPG-streamer
Após a compilação você deve notar que temos um binário chamado mjpg_streamer e também alguns plugins .so dentre eles o input_raspicam.so e output_http.so.
Antes de executar o MJPG-streamer, certifique-se de que sua Raspberry está conectada a uma rede Wi-Fi e que a interface de câmera está configurada no raspi-config. Para executar o MJPG-streamer com a câmera da Raspberry Pi utilize os comandos abaixo.
export LD_LIBRARY_PATH=. ./mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so"
Se tudo ocorrer bem o terminal deverá exibir algo do tipo:
MJPG Streamer Version.: 2.0 i: fps.............: 5 i: resolution........: 640 x 480 i: camera parameters..............: Sharpness 0, Contrast 0, Brightness 50 Saturation 0, ISO 0, Video Stabilisation No, Exposure compensation 0 Exposure Mode 'auto', AWB Mode 'auto', Image Effect 'none' Metering Mode 'average', Colour Effect Enabled No with U = 128, V = 128 Rotation 0, hflip No, vflip No ROI x 0.000000, y 0.000000, w 1.000000 h 1.000000 o: www-folder-path......: ./www/ o: HTTP TCP port........: 8080 o: HTTP Listen Address..: (null) o: username:password....: disabled o: commands.............: enabled i: Starting Camera Encoder Buffer Size 81920
Agora abra um navegador e acesse o IP da sua Raspberry Pi na porta 8080. Você deverá ver a página de boas vindas do MJPG-streamer.
Clique na aba Stream onde você poderá ver o vídeo em tempo real. Você também pode ver o link direto para o vídeo clicando em here como mostrado na imagem abaixo:
É possível selecionar a resolução, FPS e qualidade de vídeo como mostrado no comando abaixo:
./mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so -fps 15 -x 640 -y 480 -quality 35"
Também é possível utilizar o programa VLC para visualizar o vídeo. Abra o VLC e selecione o menu Open Network Stream…
Insira o link direto, já visto acima, no campo de texto e clique em Play. O stream de vídeo deve iniciar logo em seguida.
Automatizando o Streaming de vídeo com Systemd
Vamos automatizar os comandos vistos acima utilizando systemd e shell script para que o streaming se inicialize logo após o sistema da Raspberry pi iniciar.
Crie um arquivo de nome start-camera.service com o conteúdo abaixo e coloque-o na pasta /lib/systemd/system
[Unit] Description=MJPEG-streamer Wants=network-online.target After=network-online.target [Service] ExecStart=/home/pi/start-camera.sh User=pi [Install] WantedBy=multi-user.target
Crie um outro arquivo de nome start-camera.sh com o conteúdo abaixo e coloque-o na pasta /home/pi.
#!/bin/bash cd /home/pi/mjpg-streamer/mjpg-streamer-experimental/ export LD_LIBRARY_PATH=. mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so -fps 15 -x 640 -y 480 -quality 35"
Não se esqueça de tornar o arquivo executável.
chmod +x start-camera.sh
Ative o e inicie o serviço com os comandos abaixo:
sudo systemctl enable start-camera.service sudo systemctl start start-camera.service
Pronto! Agora sempre que a Raspberry Pi iniciar, o streaming de vídeo já estará disponível automaticamente.
Com isso você pode integrar os conceitos vistos neste tutorial com Node.js, HTML e criar sua própria interface de uma câmera IP.
Quer aprender ainda mais sobre Raspberry Pi? Acesse nossos outros conteúdos aqui :)
Olá
Eu pretendo fazer este projeto, cujo o objetivo é transmitir o vídeo em um celular ou tablet, ou mesmo outra Raspberry com display. Porém, na aplicação que vou usar, estarei isolado, no meio da Floresta Amazônica, e sem internet…
Se eu criar um servidor através de um roteador ou mesmo uma ESP32, outra Raspberry ou qualquer microcontrolador com sistema embarcado, eu consigo realizar a transmissão de vídeo?