Uma câmera de protocolo de Internet (câmera IP) é um tipo de câmera de vídeo digital que recebe dados de controle e envia dados de imagem por meio de uma rede IP. Elas são comumente usados para vigilância, mas ao contrário das câmeras analógicas de circuito fechado de televisão (CCTV), elas não requerem nenhum dispositivo de gravação local, apenas uma rede local.
Para ter acesso à câmera, deve-se conectá-la no mesmo roteador que o computador (wireless ou cabo). No computador, acessar o site do roteador (geralmente 192.168.0.1 ou 192.168.1.1), entrar com login e senha e buscar o IP pelo nome do dispositivo ou MAC address (identificador único atribuído a uma interface de rede do endereço de controle de acesso ao dispositivo). A visualização das imagens (ou até áudio) pode ser através de software proprietário ou genérico, como o VLC. A comunicação ocorre via protocolo RTSP (Real Time Streaming Protocol).
Transmissão no VLC modo gráfico
Você pode utilizar o protocolo RTSP no modo gráfico do VLC através do “Fluxo de Rede”. Para isso, entre no menu “Mídia – Abrir Fluxo de Rede” (ou CTRL+N) e digite o comando na caixa de texto: rtsp://192.168.1.254/ovnfi (exemplo de número de IP, coloque o seu respectivo). Ao clicar em “Reproduzir”, a transmissão em tempo real da câmera instalada em sua rede local deve estar ocorrendo. Para facilitar o acesso das próximas vezes, salve a transmissão como uma playlist, o que vai gerar um arquivo (camera_rtsp.xspf, por exemplo). Basta executá-lo para abrir a câmera. Um atalho/lançador pode ser criado para esse arquivo no menu inicial ou barra de tarefas e executar a transmissão da câmera com apenas um clique.
Automatização com python
Existem comandos em linha no Linux que podem executar essa funções, com bibliotecas e métodos implementados em Python. O script desse post pesquisa o endereço IP da câmera e lança o programa VLC para transmissão desse endereço – usando cvlc em vez de vlc na linha de comando, o programa inicia sem a interface gráfica. Para isso, você deve entrar com as seguintes variáveis personalizadas para o seu caso:
- router_user – usuário do painel de controle do roteador
- router_password – senha do roteador
- login_url – URL do roteador, usada no navegador (por exemplo, ‘http://192.168.1.1/login.cgi’)
- data_url – página do painel de controle com os clientes conectados ao roteador (por exemplo, ‘http://192.168.1.1/status_lanclients.cgi?submitValue=Refresh&refreshStatus=0’)
- cam_macAddress – endereço MAC do dispositivo (veja pelo painel ou pelo equipamento)
- WiFi_password – senha para o dispositivo se conectar ao roteador
Com essas informações, haverá a tentativa de abrir uma sessão com o roteador, onde poderão ser exibidas mensagens de erro conforme o caso. Com a sessão aberta, a página de status será aberta e o IP do dispositivo será coletado através do MAC address.
De posse do IP, será executado o comando em bash ou shell para abrir o VLC usando a senha do WiFi e o endereço IP, através do protocolo RTSP: “vlc rtsp://admin:”+WiFi_password+”@”+ipAddress+”/onvif1”. O ONVIF é um protocolo aberto da indústria, utilizado com o objetivo de facilitar o desenvolvimento e o uso de um padrão aberto global para a interface de produtos de segurança físicos baseados em IP. Confira se a sua câmera trabalha com ele.
#!/usr/bin/env python3 # Pesquisa o endereço IP da câmera e lança o programa VLC import os import requests from requests.exceptions import Timeout, ConnectionError, ConnectTimeout import sys import shutil import subprocess import shlex def run_command(command, **kwargs): bash = kwargs.get('bash', False) shell = kwargs.get('shell', False) # execução de comandos direto no shell if bash or shell: cprocess = subprocess.run(command, shell=True, encoding='utf-8', stdout=subprocess.PIPE, stderr=subprocess.PIPE) else: cprocess = subprocess.run(shlex.split(command), encoding= 'utf-8', stdout=subprocess.PIPE, stderr=subprocess.PIPE) return cprocess def main(): router_user = 'ENTER_YOUR_DATA_HERE' router_password = 'ENTER_YOUR_DATA_HERE' login_url = 'ENTER_YOUR_DATA_HERE' data_url = 'ENTER_YOUR_DATA_HERE' cam_macAddress = 'ENTER_YOUR_DATA_HERE' WiFi_password = 'ENTER_YOUR_DATA_HERE' # Abre sessão com o roteador payload = {'isSubmit':'1','username': router_user,'password': router_password} s = requests.Session() try: resp = s.post(login_url, data=payload, timeout=10) except Timeout: print("*** Roteador não responde. Timeout ***") exit() except ConnectionError: print("*** Erro na conexão. Provável queda na internet ***") exit() except ConnectTimeout: print( "**** Timeout da conexão ***" ) exit() if not resp.ok: print("*** Problemas não identificados na conexão ***") exit() resp = s.get(data_url) lines = resp.text.split() for i, line in enumerate(lines): if line == "vIpAddress[vIpAddress.length]": ipAddress = lines[i+2].replace(";", "") ipAddress = ipAddress.replace("'", "") if line == "vMacAddress[vMacAddress.length]": macAddress = lines[i+2].replace(";","") macAddress = macAddress.replace("'", "") if macAddress == cam_macAddress: break print(ipAddress) cmd = "cvlc rtsp://admin:"+WiFi_password+"@"+ipAddress+"/onvif1" #print(cmd) run_command(cmd) exit() main()
Chame o script em seu terminal como “python cameraIP.py”, por exemplo.
Criar atalho
Note que boa parte do script busca o número de IP do dispositivo pelo MAC address, então se for um IP fixo, pode comentar muita coisa. O principal é a execução do comando contendo o programa e o protocolo: a linha com “cvlc” e “rtsp”. Se quiser criar um atalho/lançador para esse comando, você pode usar o botão direito ou criar um arquivo “cam.desktop” (por exemplo) com o seguinte conteúdo:
#!/usr/bin/env xdg-open [Desktop Entry] Version=1.0 Type=Application Terminal=false Icon=/usr/share/icons/cab_view.png Icon[pt_BR]=mate-eyes-applet Name[pt_BR]=cam Categories=AudioVideo Exec=cvlc --play-and-exit rtsp://admin:WiFi_password@ipAddress/onvif1 Name=cam
A variável “Icon” é o caminho completo para o ícone (sugestão) e está personalizado para a interface mate em pt_BR – “Categories” indica o nome da categoria do menu em que deve aparecer. Não esqueça de substituir o usuário, senha de wi-fi e número de IP. O último termo do comando “Exec”, com o protocolo, pode ser usado como um fluxo diretamente na interface do VLC (desktop ou android). Para figurar entre os itens do menu principal, copie o arquivo como sudo para “/usr/share/applications/”.
Além do VLC, é possível usar o visualizador do FFMpeg, o FFplay. Para isso, o comando altera para: ffplay rtsp://admin:WiFi_password@ipAddress/onvif1