Skip to content

ardamoustafa1/StreamGuard

Repository files navigation

StreamGuard Enterprise

Broadcast Monitoring, Incident Intelligence, Operational Confidence

Python FastAPI OpenCV FFmpeg Dashboard Telegram

StreamGuard, 7/24 yayın altyapıları için geliştirilmiş bir yayın sağlığı ve olay müdahale platformudur.
Sadece "yayın açık mı?" sorusunu cevaplamaz; yayını görsel (OpenCV), işitsel (FFmpeg volumedetect) ve operasyonel (dashboard + alarm pipeline) boyutta birlikte değerlendirir.

Bir sorun tespit edildiğinde:

  • Alarm koşullarını eşik tabanlı doğrular,
  • Telegram üzerinden anlık bilgilendirir,
  • İstenirse olay anına ait kanıt videosunu (DVR clip) üretip gönderir,
  • Durumu gerçek zamanlı dashboard'a işler.

Neden StreamGuard?

  • Gerçek sinyal zekasi: Donan görüntü, sessiz ses, boş frame, kesilen akış gibi sahadaki gerçek sorunlara odaklanır.
  • Operasyonel aksiyon: Alarm sadece log'a yazılmaz; ekip aksiyon alabilsin diye mesaj ve video kanıt zinciri kurulur.
  • Canlı gözlem paneli: Metrikler (motion_score, volume_db) ve durum tek ekrandan izlenir.
  • Hafif ve pratik: CPU odaklı çalışma modeli ile küçük/orta ölçekli altyapılarda hızlı devreye alınır.

Öne Çıkan Yetenekler

1) Görüntü Sağlığı Analizi (OpenCV)

  • Art arda alınan frame'ler arası fark hesaplanır (absdiff + mean).
  • Fark skoru eşik altındaysa yayın "frozen" kabul edilir.
  • Donma eşik değeri config.json üzerinden yönetilir (thresholds.frozen_score).

2) Ses Sağlığı Analizi (FFmpeg)

  • Akıştan kısa bir örnek alınır, volumedetect ile ortalama ses seviyesi ölçülür.
  • Ortalama dB seviyesi eşik altındaysa "silence" alarmı tetiklenir.
  • Eşik değeri thresholds.silence_db ile özelleştirilebilir.

3) Alarm Doğrulama Mantığı

  • Tek seferlik paket kaybında yanlış alarmı azaltmak için sayaç yaklaşımı kullanılır.
  • Arka arkaya hata sayısı thresholds.alarm_limit değerine ulaşınca alarm üretilir.
  • Yayın geri döndüğünde otomatik "recovery" bildirimi gönderilir.

4) Kanıt Kaydı ve Mobil Bildirim

  • features.dvr_enabled=true iken olay anında FFmpeg ile kısa klip kaydedilir.
  • Klip Telegram sendVideo API ile ilgili gruba/kişiye iletilir.
  • Böylece NOC/operasyon ekibi sorunu sadece metinle değil görüntü ile de doğrular.

5) Enterprise Dashboard Katmanı

  • FastAPI üzerinden API servis edilir.
  • UI (web/index.html) her saniye /api/status endpoint'ini sorgular.
  • Start/Stop komutları dashboard'dan tetiklenir (/api/start, /api/stop).

Mimari Genel Bakis

Mimari Genel Bakis

Sistem Akisi (Detayli)

flowchart LR
    A[Canli Yayin Kaynagi<br/>HLS / HTTP Stream] --> B[AI Monitoring Engine<br/>sesgoruntu/sesgoruntu.py]

    subgraph C[Analiz Katmani]
        C1[Video Analizi<br/>OpenCV frame diff]
        C2[Ses Analizi<br/>FFmpeg volumedetect]
    end

    B --> C1
    B --> C2

    C1 --> D{Karar Motoru}
    C2 --> D
    D -->|Saglikli| E[LIVE Durumu]
    D -->|Anomali| F[Alarm Sayaci]
    F -->|alarm_limit asildi| G[Telegram Alarm]
    F -->|DVR acik| H[FFmpeg Kanit Kaydi]
    H --> I[Telegram Video Gonderimi]

    B --> J[status.json Yazimi]
    J --> K[FastAPI<br/>dashboard_api.py]
    K --> L[Web Dashboard<br/>web/index.html]
    L -->|Kontrol| K
    K -->|Start/Stop| B
Loading

Proje Yapisi

StreamGuard-main/
├─ dashboard_api.py         # FastAPI kontrol + durum API'si
├─ sesgoruntu/
│  └─ sesgoruntu.py         # Ana AI izleme motoru (audio+video+dvr)
├─ final.py                 # SNMP tabanli cihaz kilit/sinyal takibi
├─ stream_takip.py          # Basit web stream erisilebilirlik kontrolu
├─ web/
│  └─ index.html            # Gercek zamanli dashboard arayuzu
├─ config.json              # Tum merkez konfigurasyon
├─ status.json              # Motor tarafindan uretilen anlik durum dosyasi
└─ requirements.txt

Hizli Kurulum

1) Gereksinimler

  • Python 3.9+
  • FFmpeg (ffmpeg komutu PATH'te olmali veya features.ffmpeg_path tanimlanmali)
  • Internet erisimi (Telegram API ve stream kaynagi icin)

2) Kurulum

pip install -r requirements.txt

3) Konfigurasyon (config.json)

{
  "telegram": {
    "bot_token": "YOUR_TELEGRAM_BOT_TOKEN",
    "chat_id": "YOUR_TELEGRAM_CHAT_ID"
  },
  "streams": [
    {
      "url": "https://example.com/live/stream.m3u8"
    }
  ],
  "thresholds": {
    "silence_db": -50.0,
    "frozen_score": 0.5,
    "alarm_limit": 2,
    "check_interval_sec": 5
  },
  "features": {
    "dvr_enabled": true,
    "dvr_duration_sec": 15,
    "ffmpeg_path": "ffmpeg"
  }
}

4) Calistirma

Dashboard + motor kontrol katmanini baslat:

python dashboard_api.py

Ardindan tarayicidan ac:


API Uclari

Endpoint Method Aciklama
/api/status GET Durum ve metrikleri doner (status.json + process bilgisi)
/api/start POST Monitoring engine process'ini baslatir
/api/stop POST Monitoring engine process'ini durdurur

Konfigurasyon Rehberi

Alan Tip Aciklama
telegram.bot_token string Telegram bot token
telegram.chat_id string Uyari mesajlarinin gidecegi chat/grup ID
streams[0].url string Izlenecek stream adresi
thresholds.silence_db number Sessizlik esigi (dB)
thresholds.frozen_score number Donma esigi (frame diff skoru)
thresholds.alarm_limit number Alarm tetiklemek icin ard arda hata sayisi
thresholds.check_interval_sec number Izleme dongu periyodu
features.dvr_enabled bool Kanit video kaydi acik/kapali
features.dvr_duration_sec number Kanit klibi suresi
features.ffmpeg_path string FFmpeg binary yolu veya komut adi

Operasyon Notlari

  • Stream URL kalitesi dogrudan algilama performansini etkiler.
  • alarm_limit dusuk olursa hassasiyet artar, false positive riski de artar.
  • frozen_score ortama gore kalibre edilmelidir (sabit kamera, spor yayini, reklam break farkli davranir).
  • DVR ozelligi acikken disk ve ag kullanimi artar; kapasite planlamasi yapilmalidir.

Guvenlik ve Iyi Uygulamalar

  • config.json icindeki gizli bilgiler (token, chat id) ortama ozel tutulmalidir.
  • Uretim ortaminda CORS kurali kaynak bazli sinirlandirilmalidir.
  • Telegram bot izinleri minimum yetki prensibine gore ayarlanmalidir.

Yol Haritasi (Onerilen)

  • Coklu stream icin paralel worker mimarisi
  • Prometheus/Grafana entegrasyonu
  • Docker imaji + healthcheck
  • Incident timeline ve alarm korelasyon paneli

Lisans

Bu proje MIT lisansi altinda dagitilmaktadir.

About

A backend-focused system for monitoring live streams and detecting anomalies in real time.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors