Frigate & Annke FCD600 / ffmpeg Parameter?

Hallo!

Ich habe ein etwas seltsames Problem mit einer Annke FC600-Kamera, die ich über Frigate in Home Assistant eingebunden habe. Insgesamt sind 3 Kameras eingebunden - zwei AC500 und die FCD600. Die Besonderheit der FC600 ist, daß es eine “180°-Kamera” mit zwei Optiken ist, deren jeweiligen Bilder in der Kamera zusammengesetzt werden. Ich nutzte bei allen drei Kameras den jeweils niedriger auflösenden Sub-Stream für die Live-Ansicht und die Objekt-Erkennung, um die CPU- bzw. NPU-Last in erträglichen Grenzen zu halten.

In der Übersicht in Frigate, in der die aktuellen Live-Bilder aller 3 Kameras angezeigt werden, sieht alles soweit OK aus. Wenn ich allerdings das Live-Bild der FCD600 “heranhole” (i.e. darauf klicke), bekomme ich ein in weiten Teilen verhackstücktes (Geisterbilder, falsche Farben, tlw. in Graustufen) Bild angezeigt.

Mir ist aufgefallen, das von der oberen, rechten Ecke des Bildes eine Linie durch das Bild läuft, entlang derer ein Versatz im Bild erkennbar ist. Ich vermute, das ‘ffmpeg’ mit den von der Kamera gelieferten, zusammengesetzten Frames irgendwie nicht klarkommt und bei der Verarbeitung den zu beobachteten “Bild-Müll” produziert.

Wenn ich mich - z.B. mit VLC - auf den von der Kamera gelieferten Stream verbinde, sieht alles wunderbar aus. Es scheint wirklich nur in der Verarbeitungs-Kette von Frigate irgendwo zu “haken”.

Daher meine Frage: ist das eine Frage der an ‘ffmpeg’ über die Frigate-Konfiguration übergebenen Flags oder könnte das ein grundsätzliches Problem sein?

Gruß,
Marc


FCD600_Substream_ffmpeg_Detail

Hallo,

ich hatte genau das gleiche Problem wie du, zwei AC500 ohne Probleme und eine FCD600 mit diesen Artefakten.

Die Artefakte werden durch eine falsche Auflösung verursacht.
Wenn man die Auflösung manuell übergibt passt alles.

Dazu unter der Kamera Config folgendes einfügen.

detect:
  width: 1200 # <- optional, by default Frigate tries to automatically detect resolution
  height: 544 # <- optional, by default Frigate tries to automatically detect resolution

Interessant: Die Höhe 544 pixel habe ich aus dem VLC stream entnommen (Buffer Dimension). Mit der Höhe 536 pixel klappt es nicht.

Viele Grüße
Fabian

1 „Gefällt mir“

Super! Danke für den Tip - ich werd’ das mal probieren, wenn das Ersatz-Exemplar für meine FCD600 da ist.

Die erste ist mir durch eigene Dummheit buchstäblich “abgeraucht”. Ich hatte wohl die Kabel-Hülse mit der Schaumstoff-“Dichtung” nicht ausreichend festgezogen, so daß beim ersten kräftigen Regen Wasser eingedrungen ist. Bei PoE überhaupt nicht gut :roll_eyes:

Aber zumindest hat’s der Switch überlebt…

Danke & Gruß,
Marc

Das explizite setzten der Auflösung im ‘detect:’-Abschnitt der Frigate-Config (wie von Fabian vorgeschlagen) hat das Problem mit den Artefakten tatsächlich gelöst! @fabs0mat Danke für den Tip :slight_smile:

Hey,
ich verzweifel gerade an der Config-Datei. Habe auch die FCD600. Wärst du so lieb und würdest mir mal deine config.yml zukommen lassen? Das wäre top! :slight_smile:

Hi David - hätte schon eher geantwortet, aber irgendwie konnte ich mich nicht im Forum anmelden. Wie dem auch sei, hier meine Konfiguration mit zwei AC500 (hauseingang, terrasse) und einer FCD600 (garten):

# yaml-language-server: $schema=/config/frigate-config-schema.json
mqtt:
  enabled: true
  host: core-mosquitto
  port: 1883
  topic_prefix: frigate
  client_id: frigate
  user: mqtt_user
  password: <password>

detectors:
  coral:
    type: edgetpu
    device: pci

record:
  enabled: true
  expire_interval: 60
  retain:
    days: 3
    mode: motion
  alerts:
    retain:
      days: 7
      mode: motion
  detections:
    retain:
      days: 7
      mode: motion

objects:
  track:
    - person
    - bird
    - cat
    - dog

motion:
  enabled: true
  threshold: 20
  contour_area: 20
  frame_height: 200
  improve_contrast: true

logger:
  default: warning
  logs:
    frigate.app: error
    frigate.mqtt: info
    frigate.object_detection: info
    watchdog.hauseingang: error
    watchdog.terrasse: error

cameras:
  hauseingang: # <------ Annke AC500
    enabled: true
    ffmpeg:
      hwaccel_args: preset-vaapi
      inputs:
        - path: 
            rtsp://<user>:<passwd>@hauseingang.fritz.box:554/live
          roles:
            - record
          input_args: preset-rtsp-generic
        - path: 
            rtsp://<user>:<passwd>@hauseingang.fritz.box:554/Streaming/channels/102
          roles:
            - detect
            - audio
          input_args: preset-rtsp-generic
      output_args:
        record: preset-record-generic-audio-copy
    detect:
      enabled: true
      fps: 7
    record:
      alerts:
        retain: {}
        pre_capture: 10
        post_capture: 10
      detections:
        retain: {}
        pre_capture: 10
        post_capture: 10
    snapshots:
      enabled: true
      timestamp: false
      bounding_box: true
      retain:
        default: 7

    motion:
      threshold: 35
      contour_area: 20
      improve_contrast: 'true'
  garten: # <--- Annke FCD600
    enabled: true
    ffmpeg:
      hwaccel_args: preset-vaapi
      inputs:
        - path: rtsp://<user>:<passwd>@garten.fritz.box:554/live
          roles:
            - record
          input_args: preset-rtsp-generic
        - path: 
            rtsp://<user>:<passwd>@garten.fritz.box:554/Streaming/channels/102
          roles:
            - detect
            - audio
          input_args: preset-rtsp-generic
      output_args:
        record: preset-record-generic-audio-copy
    detect:
      width: 1200
      height: 544
      enabled: true
      fps: 7
    record:
      alerts:
        retain: {}
        pre_capture: 10
        post_capture: 10
      detections:
        retain: {}
        pre_capture: 10
        post_capture: 10
    snapshots:
      enabled: true
      timestamp: false
      bounding_box: true
      retain:
        default: 7
    motion:
      threshold: 35
      contour_area: 70
      improve_contrast: 'true'
  terrasse: # <----- Annke AC500
    enabled: true
    ffmpeg:
      hwaccel_args: preset-vaapi
      inputs:
        - path: rtsp://<user>:<passwd>@terrasse.fritz.box:554/live
          roles:
            - record
          input_args: preset-rtsp-generic
        - path: 
            rtsp://<user>:<passwd>@terrasse.fritz.box:554/Streaming/channels/102
          roles:
            - detect
            - audio
          input_args: preset-rtsp-generic
      output_args:
        record: preset-record-generic-audio-copy
    detect:
      enabled: true
      fps: 7
    record:
      alerts:
        retain: {}
        pre_capture: 10
        post_capture: 10
      detections:
        retain: {}
        pre_capture: 10
        post_capture: 10
    snapshots:
      enabled: true
      timestamp: false
      bounding_box: true
      retain:
        default: 7
    motion:
      threshold: 35
      contour_area: 80
      improve_contrast: 'true'
version: 0.16-0

detect:
  enabled: true

Die Kameras sind alle auf H.265+ eingestellt mit variabler Bitrate eingestellt, das Audio-Format steht auf AAC mit 16kHz und 32kbps. Um den Speicherplatzbedarf etwas zu begrenzen habe ich die Auflösung der AC500 auf 1920x1080p eingestellt, aber das hat für die FCD600 weniger relevanz, da ich dort (noch) keine Möglichkeit gefunden habe, eine explizite Videoauflösung einzustellen.

Hope that helps :slight_smile: Eventuell hilft ja man ein ausprobieren der Streams mit VLC um die grundsätzliche Funktionalität zu testen…

Gruß,
Marc

Danke dir! Und dein Log ist fehlerfrei?

Soweit ich das überblicken kann, ja. Es hat vor 2 Tagen etwas “Schluckauf” in meinem Heimnetz gegeben, der sich in zwei, drei Timouts geäußert hat - aber das betraf nur die beiden über einen devolo dLan-Adapter ins Netz eingebundenen Kameras und war ein isoliertes Ereignis. Sporadisch scheint es hin und wieder mal kurzzeitig in der Kommunikation mit dem HA Cloud-Service in Form von kirzzeitigen Timeouts zu klemmen, aber das hat AFAICT keine spürbaren Auswirkungen auf Frigate insgesamt…

1 „Gefällt mir“

Top! Ich danke dir herzlichst. Du hast mir sehr geholfen :slight_smile: