Banana Studio
Guides · BS Manager

Utilizar todas as funcionalidades do CamRelay no Frigate NVR

Transforme um telemóvel Android de reserva numa câmara para o Frigate NVR: o CamRelay transmite RTSP com áudio e o go2rtc integrado no Frigate recebe-o para gravação, visualização em direto com som e intercomunicador. Passo a passo, com um config.yml completo.

Utilizar todas as funcionalidades do CamRelay no Frigate NVR
On this page

Utilizar todas as funcionalidades do CamRelay no Frigate NVR

O CamRelay leva um telemóvel Android até ao Frigate através de um único URL RTSP. O go2rtc, integrado no Frigate, recebe essa transmissão e partilha-a com o gravador, a visualização em direto e o canal do intercomunicador.

O CamRelay é uma aplicação da Banana Studio que transforma o telemóvel numa câmara IP na sua rede local. Transmite vídeo H.264 ou H.265 com áudio Opus, G.711 ou AAC. Tem uma interface web, suporta ONVIF e recebe áudio de quem está a ver através do backchannel RTSP.

Fluxo de dados: telemóvel com o CamRelay → go2rtc (dentro do Frigate) → gravação, visualização em direto com som, intercomunicador.

A configuração abaixo segue o Frigate 0.16. Algumas chaves podem mudar em versões posteriores, por isso consulte a documentação oficial do Frigate.

Funcionalidades do CamRelay no Frigate

As quatro primeiras funcionalidades chegam ao Frigate através do go2rtc. As restantes são configuradas na aplicação e mantêm a transmissão a funcionar 24 horas por dia, 7 dias por semana.

Funcionalidade do CamRelay Utilização no Frigate Onde configurar
Transmissão RTSP H.264/H.265, resolução e FPS da câmara do telemóvel Gravação, deteção, visualização em direto go2rtc, passo 2.1
Áudio G.711 (PCMU/PCMA), Opus ou AAC Som na visualização em direto e nas gravações Codec na aplicação, passo 2.2
Intercomunicador (backchannel RTSP) Botão do microfone na visualização em direto WebRTC + HTTPS, passo 2.3
Sobreposições de data e hora, nome da câmara, IP, bateria e temperatura, coordenadas GPS e velocidade Gravadas na imagem que o Frigate regista Na aplicação, passo 1
Arranque automático ao ligar, ecrã escurecido, pausa por sobreaquecimento ou bateria fraca Evita que a transmissão caia Na aplicação, passo 1
Gravação MP4 no telemóvel, gestão de ficheiros no navegador Gravações de segurança fora do Frigate Na aplicação, passo 1
Interface web Verificar imagem e som, alterar definições sem parar a transmissão Passo 1

Antes de começar

Vai precisar de:

  • Um servidor Frigate instalado e a funcionar (consulte o guia de instalação do Frigate), na mesma rede local que o telemóvel.
  • Um telemóvel Android com o CamRelay instalado, sempre ligado à corrente e com um endereço IP fixo atribuído no router.
  • No Android 17: permita ao CamRelay o acesso à rede local (o Android apresenta-o como Dispositivos próximos). Sem ele, o Frigate não se consegue ligar ao telemóvel. Consulte o artigo sobre o CamRelay 1.0.5.

O contentor do Frigate tem de expor estas portas para utilizar todas as funcionalidades do CamRelay:

Porta Utilizada para
8971 Interface web HTTPS do Frigate, necessária para o intercomunicador
8554 Retransmissão RTSP do go2rtc
8555 TCP e UDP WebRTC: visualização em direto com som e intercomunicador

Passo 1: Configurar o CamRelay

O CamRelay segue o idioma do telemóvel; os nomes das definições abaixo são os em português europeu. Atenção: abrir as Definições interrompe a transmissão. Com o CamRelay já a transmitir, pode alterar as definições a partir da interface web sem parar a transmissão.

1.1 Porta RTSP

A secção Portas do Servidor mostra a Porta de Transmissão RTSP (predefinição 1935) e a Porta da Interface Web (predefinição 8888). As predefinições servem perfeitamente.

Portas do Servidor nas definições do CamRelay: porta RTSP 1935 e porta web 8888

1.2 Vídeo

  1. Em Seleção de Câmara, escolha a câmara a utilizar (a câmara traseira costuma dar melhor imagem).
  2. Abra as definições dessa câmara e escolha Resolução, Taxa de Fotogramas (FPS) e Bitrate de Vídeo. As resoluções e taxas de fotogramas disponíveis dependem da câmara do telemóvel.
  3. Em Definições Globais de Vídeo → Codec de Vídeo, escolha H.264 para que os navegadores consigam reproduzir a visualização em direto.
  4. Deixe o Intervalo de Key-frames (GOP) em 1s (a predefinição) para que a visualização em direto abra depressa.

Resolução, FPS e bitrate de cada câmara

Codec de vídeo H.264 e intervalo de key-frames de 1 segundo

Para videovigilância, 1080p a 15 FPS é suficiente e poupa o servidor do Frigate. O H.265 poupa largura de banda, mas o Frigate tem de o transcodificar para o navegador (consulte o passo 2.2).

1.3 Áudio

Em Definições de Áudio, ative Ativar Áudio. O codec de áudio da transmissão escolhe-se em Áudio Bidirecional → Codec de Áudio Bidirecional. Esta única definição aplica-se tanto ao som enviado como ao intercomunicador:

  • G.711 ULAW: recomendado para o Frigate, é reproduzido diretamente tanto em MSE como em WebRTC (consulte o passo 2.2).
  • OPUS: a predefinição a partir do Android 10, som mais nítido, mas só é reproduzido por WebRTC.
  • G.711 ALAW: apenas se o dispositivo que recebe o áudio exigir A-law.
  • AAC: apenas reprodução; o intercomunicador precisa de transcodificação.

Deixe o Modo de Áudio Bidirecional em Comunicação de Voz: tem cancelamento de eco, por isso o intercomunicador não provoca microfonia.

Codec de áudio e modo do intercomunicador

1.4 Sobreposições, gravação e funcionamento 24/7

  • Sobreposição de Vídeo: mostre a data e hora, um nome de câmara (Nome da Câmara; deixe vazio para usar o nome do dispositivo), o endereço IP, a bateria e a temperatura, as coordenadas GPS ou um velocímetro. As sobreposições são desenhadas no próprio vídeo, por isso também aparecem nas gravações do Frigate. Estão todas desativadas por predefinição.
  • Definições de Gravação: ative Ativar Gravação para ter uma cópia de segurança no telemóvel. Os ficheiros MP4 são guardados em Movies/CamRelay, divididos segundo a Duração do Segmento de Gravação (em minutos). Quando o Armazenamento Máximo (MB) é atingido, os ficheiros mais antigos são eliminados.
  • Segurança & Automação: ative Início automático ao ligar o Dispositivo para que o CamRelay volte a transmitir depois de o telemóvel reiniciar. No Android 10 e posterior, a aplicação também precisa de autorização para se sobrepor a outras aplicações. Proteção de Temperatura e Proteção de Bateria colocam a transmissão em pausa quando o telemóvel aquece demasiado ou a bateria está fraca, e retomam-na quando tudo volta ao normal.
  • Otimização da Bateria: confirme que a otimização da bateria está desativada para o CamRelay, para que o Android não o termine em segundo plano.

Opções de sobreposição de vídeo

Gravação MP4 no telemóvel

Arranque automático ao ligar e proteção de temperatura

1.5 Iniciar a transmissão e obter o URL

Volte ao ecrã principal e toque no botão de reprodução. A barra no topo mostra a resolução, os FPS, o bitrate e os codecs em uso. No canto inferior aparecem três endereços, cada um com um botão de copiar:

  • rtsp://<phone-ip>:1935/: o URL RTSP para o Frigate.
  • http://<phone-ip>:8888: a interface web do CamRelay.
  • http://<phone-ip>:8889/onvif/device_service: o serviço ONVIF.

CamRelay a transmitir: endereços RTSP, web e ONVIF em baixo

Para uma câmara que fica sempre no mesmo sítio, toque no ícone da lua (Escurecer Ecrã) para apagar o ecrã. Isto poupa energia e evita marcas permanentes em ecrãs OLED. Toque duas vezes para o voltar a acender.

Os exemplos abaixo usam rtsp://192.168.1.50:1935/; substitua-o pelo URL que o CamRelay mostra. A versão atual do CamRelay ainda não pede credenciais no RTSP, por isso utilize-o apenas numa rede de confiança.

Brevemente: a próxima atualização do CamRelay permite definir um nome de utilizador e uma palavra-passe para proteger a transmissão RTSP. Depois basta acrescentá-los ao URL no go2rtc, por exemplo rtsp://user:[email protected]:1935/.

Pode verificar a transmissão a partir do servidor do Frigate com o ffprobe:

ffprobe -rtsp_transport tcp rtsp://192.168.1.50:1935/

O resultado deve listar uma faixa de vídeo h264 e uma faixa de áudio (pcm_mulaw com G.711 ULAW, opus com OPUS).

Passo 2: Configurar o go2rtc no Frigate

O go2rtc dentro do Frigate é o único que se liga ao telemóvel. Obtém a transmissão RTSP do CamRelay uma única vez e partilha-a com a gravação, a deteção, a visualização em direto (MSE, WebRTC) e o intercomunicador. O próprio Frigate lê a partir de rtsp://127.0.0.1:8554/camrelay, por isso o telemóvel nunca tem de servir várias ligações ao mesmo tempo. Assim aquece menos e poupa bateria.

2.1 Adicionar a transmissão

Acrescente um bloco go2rtc ao ~/frigate/config/config.yml:

go2rtc:
  streams:
    camrelay:                              # mesmo nome da câmara no Frigate
      - rtsp://192.168.1.50:1935/          # o URL que o CamRelay mostra
  webrtc:
    candidates:
      - 192.168.1.100:8555   # IP do servidor Frigate
      - stun:8555
  • Uma linha RTSP chega. Com áudio G.711 ou Opus, o go2rtc passa o vídeo e o som diretamente para o navegador, sem transcodificação ffmpeg:. A mesma linha RTSP também transporta o canal do intercomunicador.
  • webrtc.candidates é obrigatório quando se usa Docker simples; sem ele, o WebRTC e o microfone não funcionam na rede local. As portas 8555 TCP/UDP foram abertas em "Antes de começar".
  • Quando a transmissão tem o mesmo nome da câmara, o Frigate usa-a automaticamente na visualização em direto. Caso contrário, defina live.streams para a câmara.

2.2 Codecs e áudio

Configure o CamRelay com vídeo H.264. O G.711 é a opção de áudio mais simples. Segundo a documentação do Frigate, o MSE (a visualização em direto predefinida) reproduz AAC ou PCMA/PCMU, e o WebRTC (usado pelo intercomunicador) reproduz Opus ou PCMA/PCMU. Só o G.711 funciona diretamente em ambos.

Áudio do CamRelay MSE WebRTC Linha extra no go2rtc
G.711 ULAW / ALAW (PCMU/PCMA) Sim Sim Nenhuma
OPUS Não Sim ffmpeg:camrelay#audio=aac para ouvir em MSE
AAC Sim Não ffmpeg:camrelay#audio=opus para WebRTC

O Opus soa mais nítido do que o G.711 (qualidade telefónica, 8 kHz) se vê sobretudo por WebRTC. Se tiver mesmo de usar H.265, acrescente uma linha de transcodificação de vídeo e mantenha a linha RTSP:

go2rtc:
  streams:
    camrelay:
      - rtsp://192.168.1.50:1935/
      - "ffmpeg:camrelay#video=h264#hardware"   # cópia H.264 para os navegadores

2.3 Intercomunicador

Durante a transmissão, o CamRelay está sempre pronto a receber áudio pelo backchannel RTSP; não há nenhum interruptor para ativar. O go2rtc abre este canal a partir da linha RTSP do passo 2.1, sem configuração adicional.

Para falar, abra o Frigate por HTTPS na porta 8971, vá à visualização em direto da câmara e prima o microfone; o Frigate muda sozinho para WebRTC. A sua voz sai pelo altifalante do telemóvel, ao volume definido em Volume de Reprodução no CamRelay.

Se outra aplicação também precisar de falar diretamente com o telemóvel, acrescente #backchannel=0 ao fim do URL RTSP para que o go2rtc não fique a ocupar o canal.

2.4 Adicionar a câmara ao Frigate

Acrescente um bloco cameras por baixo do bloco go2rtc. A câmara lê a transmissão a partir do go2rtc em vez de se ligar ao telemóvel:

cameras:
  camrelay:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/camrelay   # a transmissão do go2rtc do passo 2.1
          input_args: preset-rtsp-restream
          roles:
            - record
            - detect   # exigido pelo Frigate, nada mais a configurar
    record:
      enabled: true

O CamRelay envia uma única transmissão (não há substream), por isso a câmara usa-a tanto para gravação como para deteção.

Reinicie e verifique:

docker compose restart frigate
docker logs -f frigate

Para verificar apenas o go2rtc, acrescente temporariamente a porta 1984:1984 ao docker-compose e abra http://<server-ip>:1984. A transmissão camrelay deve ter uma fonte RTSP com vídeo H264 e áudio PCMU/PCMA ou OPUS. Quando o CamRelay aparecer na página inicial do Frigate, está concluído.

Passo 3: config.yml completo

O ficheiro abaixo contém apenas o que o CamRelay precisa: a transmissão no go2rtc, o WebRTC, o início de sessão (para o HTTPS, exigido pelo intercomunicador) e a gravação com som.

go2rtc:
  streams:
    camrelay:
      - rtsp://192.168.1.50:1935/   # o URL que o CamRelay mostra, H.264 + G.711 ULAW
  webrtc:
    candidates:
      - 192.168.1.100:8555   # IP do servidor Frigate
      - stun:8555

auth:
  enabled: true

cameras:
  camrelay:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/camrelay
          input_args: preset-rtsp-restream
          roles: [record, detect]   # detect: exigido pelo Frigate
    record:
      enabled: true
    live:
      streams:
        CamRelay: camrelay

version: 0.16-0

Resolução de problemas

A maioria dos problemas ao adicionar o CamRelay ao Frigate resume-se ao URL da transmissão, aos codecs ou à rede.

Sintoma Causa habitual Solução
A câmara mostra "No frames received" URL ou porta errados, CamRelay não está a transmitir, ou o Android terminou-o em segundo plano Copie novamente o URL no ecrã principal do CamRelay; verifique-o com o ffprobe; abra http://<ip>:1984 (se exposto) para ver se o go2rtc recebe a transmissão
Não liga, mesmo na mesma rede Wi-Fi Telemóvel com Android 17 sem acesso à rede local; "isolamento de clientes" no router; rede de convidados; VPN Permita Dispositivos próximos ao CamRelay; desative o isolamento de clientes/AP; coloque o servidor e o telemóvel na mesma rede principal
Imagem aos soluços ou cortada Pacotes UDP perdidos Acrescente #transport=tcp ao URL no go2rtc
A visualização em direto não reproduz no navegador Transmissão H.265 ou webrtc.candidates em falta Escolha H.264 no CamRelay, ou transcodifique com ffmpeg:...#video=h264; defina webrtc.candidates
A ligação cai de vez em quando Wi-Fi instável, otimização da bateria do Android, telemóvel em sobreaquecimento Use um IP fixo, mantenha o telemóvel a carregar, desative a otimização da bateria para o CamRelay, ative Início automático ao ligar o Dispositivo, use o botão para escurecer o ecrã; vigie a temperatura no topo do ecrã do CamRelay; consulte os registos do Frigate em Settings → System → Logs
Sem som na visualização em direto Ativar Áudio desligado, ou a ver em MSE enquanto o CamRelay envia OPUS Ative o áudio no CamRelay; escolha G.711 ULAW para ouvir som tanto em MSE como em WebRTC
O microfone não funciona Frigate aberto por HTTP em vez de HTTPS, ou porta 8555 em falta Abra o Frigate em https://<ip>:8971; exponha a porta 8555 TCP/UDP e defina webrtc.candidates

Ao pedir ajuda nas GitHub Discussions do Frigate, inclua o seu ficheiro de configuração, o registo de arranque e o resultado do ffprobe para a transmissão do CamRelay. Para questões sobre o CamRelay, toque em Enviar comentários no ecrã Acerca de da aplicação.

Obtenha o CamRelay no Google Play

Encontre mais notícias, guias e aplicações da Banana Studio em xnano.net.


Fontes: documentação de Live View do Frigate para o go2rtc; o guia do utilizador do CamRelay e a página no Google Play para o CamRelay.

Related app

CamRelay - Câmara IP em direto via RTSP

Transforme o seu telemóvel Android numa poderosa câmara de rede RTSP.

Related posts