openjutsu
One-click character swap for videos: an open-source, local Higgsfield Genjutsu alternative built on ComfyUI and MiniMax H3, with FLUX.3 Klein relighting.
Câmeras de monitoramento dos rios de Rolante/RS, ao vivo e com histórico.
Translation pending
MediaTypeScript · CSSGitHub @filipesfbrOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Câmeras dos rios de Rolante - RS. Acompanhamento dos rios nas enchentes da cidade.
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Câmeras ao vivo dos rios de Rolante/RS, com histórico de prints gravado 24 horas por dia.
Um site que mostra as câmeras de monitoramento dos rios de Rolante/RS ao vivo e guarda um histórico de prints. As câmeras apontam para uma régua graduada e queimam data e hora na imagem, então o histórico mostra a evolução do nível do rio, inclusive de madrugada, quando ninguém está olhando.
O projeto apenas exibe as imagens. Os links das câmeras vêm do portal
alerta.rolante.ifrs.edu.br, e os streams são
carregados das páginas das câmeras em rolante.solutti.net.
FORA DO AR e detecção de stream travado.← → (botões e teclado) navegam entre os prints, com o horário sobre a imagem.
O botão Ao vivo volta para o vídeo.flowchart LR
C["Câmeras<br/>(stream HLS)"] -- "ffmpeg puxa 1 frame" --> S["Servidor Next.js"]
S -- "grande 1280px + miniatura 320px" --> R[("Cloudflare R2")]
R -- "URL pública do bucket" --> B["Navegador"]
S -- "lista de prints (/api/frames)" --> B
C -. "ao vivo, direto da fonte" .-> B
ffmpeg
lê o stream e extrai um frame, sem abrir navegador.No Cloudflare R2 (armazenamento compatível com S3), num bucket com leitura pública. Não há banco de dados:
bucket/
shots/<câmera>/<AAAA-MM-DD>/<HHmmss>.jpg imagem grande, 1280 px, ~180 KB
shots/<câmera>/<AAAA-MM-DD>/<HHmmss>.thumb.jpg miniatura, 320 px, ~10 KB
config.json configuração do app (não guarde segredo nele)
| Camada | Tecnologia |
|---|---|
| App | Next.js 16 (App Router) + TypeScript, CSS Modules |
| Vídeo ao vivo | hls.js |
| Captura | ffmpeg rodando dentro do processo do servidor |
| Armazenamento | Cloudflare R2, via @aws-sdk/client-s3 |
| Deploy | Docker no Render |
| CI e releases | GitHub Actions |
https que resolvam para IP público. Um playlist remoto que redirecione ou aponte
segmentos para um endereço interno não é filtrado pela aplicação; fechar isso exige restringir a saída de rede
do container.Família Rolante (a mesma do Impostômetro Rolante): símbolo de visor com ponto de foco em terracota, fonte Inter,
fundo #faf8f4, tinta #26221d e um único acento, #b4622f. Sem sombras nem gradientes. Os tokens ficam em
app/globals.css; a especificação, os arquivos da marca e o protótipo estão em
docs/brand/cameras-rolante/.
Licença MIT, veja LICENSE. Este site não é responsável pelo conteúdo, disponibilidade ou
propriedade das câmeras.
As imagens são exibidas através do portal alerta.rolante.ifrs.edu.br e das páginas de câmera em rolante.solutti.net.