# Guia do vídeo ao vivo (go2rtc) — passo a passo fácil

**O que é, em uma frase:** o **go2rtc** é um programinha que transforma o sinal das
câmeras IP num vídeo que o navegador entende (fluido, ao vivo). **Sem ele**, as telas
ainda funcionam, mas mostram "fotos" que atualizam a cada ~1 segundo.

**Fique tranquilo:** o vídeo por foto já funciona sozinho; o go2rtc só melhora para
vídeo de verdade. Dá para parar no meio sem quebrar nada.

**Você vai precisar de:** o computador **servidor**, uns **15 minutos**, e as câmeras
na mesma rede do servidor.

---

## Passo 1 — cadastrar as câmeras no Nexus

1. Abra o Nexus → menu **Câmeras de vídeo** → **+ Câmera**.
2. Preencha: **nome**, **IP** da câmera, **usuário** e **senha** da câmera, **canal**
   (normalmente `1`) e **stream**. Dica: use **Substream** quando for ver várias
   câmeras juntas na grade (pesa muito menos).
3. Salve. O endereço técnico da câmera (RTSP) é montado sozinho — você não precisa
   digitar nada complicado.

✅ **Deu certo se:** abrindo o menu **Câmeras ao vivo** (`/live`) você já vê as câmeras
em modo "foto" (atualizando devagar). Agora vamos ligar o vídeo de verdade.

---

## Passo 2 — baixar o go2rtc

1. No navegador, vá em: **github.com/AlexxIT/go2rtc/releases**
2. Baixe o arquivo **`go2rtc_win64.zip`**.
3. **Extraia** (botão direito → Extrair tudo) e copie o **`go2rtc.exe`** para a pasta:

```
C:\wamp64\go2rtc\
```

(se a pasta não existir, crie ela.)

✅ **Deu certo se:** existe o arquivo `C:\wamp64\go2rtc\go2rtc.exe`.

---

## Passo 3 — gerar a configuração das câmeras (sem copiar/colar)

O go2rtc precisa saber quais são as câmeras. O Nexus gera isso do banco pra você:

1. Abra a pasta `C:\wamp64\www\api\scripts`.
2. Clique com o **botão direito** em **`deploy_go2rtc.bat`** → **"Executar como
   administrador"**.
3. Ele cria/atualiza o arquivo `C:\wamp64\go2rtc\go2rtc.yaml` a partir das câmeras
   cadastradas e reinicia o vídeo.

> Toda vez que você **adicionar/mudar uma câmera**, rode o `deploy_go2rtc.bat` de novo.

✅ **Deu certo se:** existe o arquivo `C:\wamp64\go2rtc\go2rtc.yaml`.

---

## Passo 4 — deixar o vídeo sempre ligado

Se você já rodou o **`install_workers.bat`** (guia `INSTALACAO-TAREFAS.md`), **o
go2rtc já está registrado** para subir sozinho no boot — não precisa fazer mais nada.

Para conferir/ligar agora sem reiniciar:
1. Abra `C:\wamp64\go2rtc` e dê **dois cliques** em... não — use o `go2rtc.bat` do
   Nexus: em `C:\wamp64\www\api\scripts`, dê **dois cliques** em **`go2rtc.bat`**
   (abre uma janelinha preta que fica trabalhando).
2. No servidor, abra no navegador: **http://127.0.0.1:1984**

✅ **Deu certo se:** nessa página aparecem os streams **`cam1`, `cam2`…** com imagem.

---

## Passo 5 — apontar o Nexus para o go2rtc

Abra o arquivo `C:\wamp64\www\api\.env` (Bloco de Notas **como administrador**;
em "Abrir" escolha **Todos os arquivos**). Escolha **uma** das opções:

**Opção A — só na rede local (mais simples):** adicione a linha (troque pelo IP do
servidor):

```
GO2RTC_BASE_URL=http://192.168.0.10:1984
```

**Opção B — acesso remoto por HTTPS (recomendado se você acessa de fora):** aqui o
Apache "empresta" o vídeo pelo mesmo endereço seguro do site. É um pouco mais técnico:

1. No `httpd.conf` do Apache, tire o `#` da frente destas três linhas (habilita os
   módulos): `proxy_module`, `proxy_http_module`, `proxy_wstunnel_module`.
2. Dentro do seu site (vhost das portas 80 e 443), cole:

```apache
# go2rtc (vídeo ao vivo) — repassa para o serviço local
ProxyPass        "/video/api/ws" "ws://127.0.0.1:1984/api/ws"
ProxyPassReverse "/video/api/ws" "ws://127.0.0.1:1984/api/ws"
ProxyPass        "/video/" "http://127.0.0.1:1984/"
ProxyPassReverse "/video/" "http://127.0.0.1:1984/"
```

3. No `.env`, use:

```
GO2RTC_BASE_URL=/video
```

4. **Reinicie o Apache** (menu do WampServer → Apache → Restart Service).

✅ **Deu certo se:** abrindo **/monitor** ou **/live** o vídeo agora é **fluido** (não
mais foto-a-foto).

---

## Passo 6 — Colocar câmeras ao vivo no Dashboard

Dá para deixar de **1 a 4 câmeras** aparecendo ao vivo na tela inicial do sistema.

**Se o Nexus já estava instalado antes de julho/2026**, rode antes esta migração
(uma vez só) — troque a senha do banco quando ele pedir:

```
C:\wamp64\bin\mariadb\mariadb11.4.9\bin\mariadb.exe -h 127.0.0.1 -P 3307 -u guilherme -p controle_veiculos < C:\wamp64\www\api\database\migration_video_camera_dashboard.sql
```

Depois:

1. No menu, vá em **Configurações → Câmeras de vídeo**.
2. Na câmera que você quer, clique em **🏠 Mostrar no dashboard**.
3. Repita em até **4 câmeras**. Ao tentar a 5ª, o sistema avisa e não deixa — tire
   uma antes.

✅ **Deu certo se:** a câmera ganha a etiqueta **🏠 No dashboard**, e ao abrir o
**Dashboard** as imagens aparecem ao vivo. Clicar numa delas abre a tela **Ao vivo**.

> **Quem enxerga essas câmeras?** Só **portaria, administração, funcionário autorizado
> e administrador do sistema** — a mesma permissão da tela "Ao vivo". O **morador NÃO
> vê** o quadro de câmeras no dashboard dele, nem conseguiria abrir a imagem digitando
> o endereço na mão.
>
> **O vídeo pesa no seu computador?** Há um botão **Pausar** no canto do quadro. O
> sistema lembra a sua escolha naquele navegador.

---

## Deu algum problema?

- **Tela preta e no log do go2rtc aparece `origin not allowed`:** o go2rtc está
  recusando o vídeo por vir de outro endereço. O `go2rtc.yaml` gerado pelo Nexus já
  vem com a linha certa (`origin: "*"`); é só **rodar o `deploy_go2rtc.bat` de novo**
  para regravar. (Se editar à mão, a seção fica assim:)

  ```yaml
  api:
    listen: "127.0.0.1:1984"
    origin: "*"
  ```
- **Tela preta só no acesso por HTTPS:** faltou o proxy do Apache (Opção B) ou o
  módulo `proxy_wstunnel`.
- **A "foto" aparece "indisponível":** confira o **usuário/senha** da câmera e se o
  servidor **alcança** a câmera na rede.
- **Vídeo trava com muitas câmeras juntas:** use **Substream** nas câmeras da grade
  (deixe o stream principal só para a tela cheia).

---

## Rede e segurança (importante)

- Deixe as câmeras numa **rede/VLAN isolada**; libere só **servidor ↔ câmeras**.
- As **senhas das câmeras** ficam no banco e só o servidor as usa — o navegador do
  usuário **nunca** recebe as senhas.

---

## (Base antiga) criar a tabela do banco

Instalação nova já tem a tabela `video_camera` no `schema.sql`. Só numa base **antiga**
sem ela, rode uma vez no banco:

```sql
CREATE TABLE `video_camera` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `nome` varchar(100) NOT NULL,
  `host` varchar(100) NOT NULL,
  `porta_rtsp` int(11) NOT NULL DEFAULT 554,
  `usuario` varchar(60) DEFAULT NULL,
  `senha` varchar(120) DEFAULT NULL,
  `canal` int(11) NOT NULL DEFAULT 1,
  `subtipo` int(11) NOT NULL DEFAULT 0,
  `rtsp_path` varchar(255) DEFAULT NULL,
  `ordem` int(11) NOT NULL DEFAULT 0,
  `ativo` tinyint(1) NOT NULL DEFAULT 1,
  `criado_em` timestamp NOT NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_video_camera_ativo` (`ativo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
```
