Streaming de vídeo com Raspberry Pi Zero W 7

Você já deve ter visto em nosso Blog como gravar vídeos e tirar fotos com a Raspberry Pi e também como fazer streaming de vídeo com o RPi Cam Web Interface. Neste tutorial iremos mostrar mais uma opção de streaming usando 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.

Montagem da câmera na Raspberry Pi

Na loja FILIPEFLOP 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, vendemos a case oficial da Raspberry Pi Zero que acompanha um cabo flat adaptado. Basta conectar a câmera como na figura abaixo.

Case Raspberry Pi Zero W com câmera

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.

Instale os seguintes programas necessários para compilação do MJPG-streamer.

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 você deverá ver 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.Tela principal M-Jpeg 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:

Teste de streaming

É 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…

VLC

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.

Streaming de vídeo com Raspberry Pi

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.

Gostou de fazer streaming de vídeo com a Raspberry Pi Zero W? Deixe seu comentário logo abaixo. Em caso de dúvidas, caso queira trocar uma ideia, ou até mesmo dividir seu projeto, acesse nosso Fórum!

Posts Relacionados

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

7 Comentários

  1. Tentei seguir este tutorial com uma webcam usb e deu o seguinte erro:

    MJPG Streamer Version: git rev: f387bb44e6c087271b763b27da998bf2e06c4f5d
    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
    mmal: mmal_vc_component_create: failed to create component ‘vc.ril.camera’ (1:ENOMEM)
    mmal: mmal_component_create_core: could not create component ‘vc.ril.camera’ (1)
    error create camera

    A minha webcam está normalmente instalada, tanto que ela tira fotos normalmente e eu já usei para outras aplicações.

    Géssica Milena Duarte de Oliveira
    1. Olá Géssica

      Você habilitou uso de câmera nas configurações da raspberry?

      No terminal digite sudo raspi-config e lá vai ter a opção para habilitar a câmera.

      Tente também modificar as resoluções, talvez sua câmera não suporte certas resoluções.

      Veja se o sistema reconheceu sua câmera e existe um dispositivo em /dev/videoX

  2. Bom dia Filipe, acompanho seu site a algum tempo. Segui esse tutorial, alem de outros, e funcionou perfeitamente.

    Agora deixa eu te fazer uma pergunta: Tem como eu adicionar algum texto nas imagens (Steaming ou Snap) nesse exemplo que você postou?

    1. Olá Carlos!

      Não sei se o MJPEG Streamer tem essa funcionalidade. Veja nas opções de Help

      ./mjpg_streamer –help

      Abraço!

      1. Bom dia Giovanni, obrigado pela resposta…irei conferir e ver se existe essa possibilidade, mas pelo que andar pesquisando não tem.

      2. É amigo, procurei e não achei. Parti para o MotionEye, farei testes com o Pi W Zero.

Trackbacks and Pingbacks

  1. […] câmeras juntamente com a Raspberry Pi podemos criar diversos tipos de aplicações, desde câmeras IP até robôs com processamento de imagem usando OpenCV. Neste post vamos mostrar a nossa nova […]