Flux vidéo Frigate Card

Bonjour,

Régulièrement j’ai le flux vidéo de mes caméras sur ma Frigate card qui montre un message d’erreur :


Je suis obligé de redémarrer le module complémentaire pour que cela réaffiche correctement l’image.

J’ai l’intégration Frigate ainsi que le module complémentaire Frigate Full Access.
Quand je consulte dans l’intégration Frigate, j’ai bien l’image.

Savez vous d’où vient le problème ?

Merci d’avance!

Hello,

Quels sont les logs de l’addon? Ça aidera.

Et ta configuration de Frigate également, de ta carte et combien de caméras tu as et quels models?

Par exemple si tu n’utilises pas webRTC et que tu as des Tapo, t’as le droit à seulement 2 fluxx simultanés.

J’ai 3 caméras HIKVISION (protocole propriétaire), j’ai regardé les logs et j’ai ce message qui revient :

2025-05-12 11:19:49.224504349  [2025-05-12 13:19:49] frigate.record.maintainer      WARNING : Too many unprocessed recording segments in cache for chambre. This likely indicates an issue with the detect stream, keeping the 6 most recent segments out of 7 and discarding the rest...
2025-05-12 11:19:54.229495592  [2025-05-12 13:19:54] frigate.record.maintainer      WARNING : Too many unprocessed recording segments in cache for chambre. This likely indicates an issue with the detect stream, keeping the 6 most recent segments out of 7 and discarding the rest...

Ma config :

mqtt:
  enabled: true
  host: IP
  user: user
  password: mdp
  client_id: frigate

detectors:
  coral:
    type: edgetpu
    device: usb

review:
  alerts:
    labels:
      - person
      - car
      - motorcycle
  detections:
    labels:
      - cat
      - dog
      - bird

cameras:
#Caméra entrée
  entree:
    ffmpeg:
      inputs:
        - path: rtsp://user:mdp@IP:554/Streaming/channels/101
          roles:
            - record
        - path: rtsp://user:mdp@IP:554/Streaming/channels/102
          roles:
            - detect
    detect:
      enabled: true
      width: 1280
      height: 720
      fps: 5
    objects:
      track:
        - person
        - cat
        - dog
        - car
        - motorcycle
      filters:
        person:
          threshold: 0.7
          min_area: 40000
        cat:
          threshold: 0.7
          min_area: 2000
          max_area: 20000
        dog:
          threshold: 0.7
          min_area: 2000
          max_area: 20000
        car:
          threshold: 0.7
          min_area: 60000
    snapshots:
      enabled: true
      bounding_box: true
      crop: false
      quality: 100
      retain:
        default: 30
    record:
      enabled: true
      retain:
        days: 0
      alerts:
        retain:
          days: 14
        pre_capture: 15
        post_capture: 10
      detections:
        retain:
          days: 14
        pre_capture: 15
        post_capture: 10
    motion:
      mask: 0,0,0,0.298,0.687,0.333,0.668,0

#Caméra terrasse
  terrasse:
    ffmpeg:
      inputs:
        - path: rtsp://user:mdp@IP:554/Streaming/channels/201
          roles:
            - record
        - path: rtsp://user:mdp@IP:554/Streaming/channels/202
          roles:
            - detect
    detect:
      enabled: true
      width: 1280
      height: 720
      fps: 5
    objects:
      track:
        - person
        - cat
        - dog
      filters:
        person:
          threshold: 0.7
          min_area: 40000
        cat:
          threshold: 0.7
          min_area: 2000
          max_area: 20000
        dog:
          threshold: 0.7
          min_area: 3000
          max_area: 20000
    snapshots:
      enabled: true
      bounding_box: true
      crop: false
      quality: 100
      retain:
        default: 30
    record:
      enabled: true
      retain:
        days: 0
      alerts:
        retain:
          days: 14
        pre_capture: 15
        post_capture: 10
      detections:
        retain:
          days: 14
        pre_capture: 15
        post_capture: 10
    motion:
      mask: 0,0,0,1,0.328,0.894,0.824,0

#Caméra chambre
  chambre:
    ffmpeg:
      inputs:
        - path: rtsp://user:mdp@IP:554/Streaming/channels/301
          roles:
            - record
        - path: rtsp://user:mdp@IP:554/Streaming/channels/302
          roles:
            - detect
    detect:
      enabled: true
      width: 1280
      height: 720
      fps: 5
    objects:
      track:
        - person
        - cat
        - dog
      filters:
        person:
          threshold: 0.7
          min_area: 40000
        cat:
          threshold: 0.7
          min_area: 2000
          max_area: 20000
        dog:
          threshold: 0.7
          min_area: 3000
          max_area: 20000
    snapshots:
      enabled: true
      bounding_box: true
      crop: false
      quality: 100
      retain:
        default: 30
    record:
      enabled: true
      retain:
        days: 0
      alerts:
        retain:
          days: 14
        pre_capture: 15
        post_capture: 10
      detections:
        retain:
          days: 14
        pre_capture: 15
        post_capture: 10
    motion:
      mask: 0,0,0,0.63,0.914,0
version: 0.15-1

Difficile à dire mais je passerai par go2RTC pour utiliser le webRTC, c’est bien mieux lorsqu’on stream le fluxx des caméras sur HA:

Surtout pour voir à distance (pas sur le LAN)

En gros le stream de la caméra va vers go2RTC qui lui redirigera le flux à qui le demande. WebRTC c’est ce qu’utilise Google Meet, Jitsi, Zoom, Microsoft Teams etc

+1, j’ai passé mes 3 tapo en rtsp, et c’est clairement le jour et la nuit
et sans coral tout sur le CPU intel gen 6+ (40% en detection)

@Stef_42 tu peux essayer voir si passer par go2rtc aide?

Exemple: rajoute une section pour go2rtc dans ton frigate.yaml et ensuite dans la config des caméras, pointe sur le flux go2rtc (en local donc d’où le 127.0.0.1)

go2rtc:
  webrtc:
    candidates:
      - 192.168.1.245:8555 # L'IP de ton système où Frigate tourne et est accessible
      - stun:8555
  streams:
    entree:
      - rtsp://user:mdp@IP:554/Streaming/channels/101?transportmode=multicast 
    entree_sub:
      - rtsp://user:mdp@IP:554/Streaming/channels/102?transportmode=multicast 


cameras:
#Caméra entrée
  entree:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/entree
          input_args: preset-rtsp-restream
          roles:
            - record
        - path: rtsp://127.0.0.1:8554/entree_sub
          input_args: preset-rtsp-restream
          roles:
            - detect

J’ai essayé mais la config ne doit pas être la bonne :

mqtt:
  enabled: true
  host: mon_host
  user: mon_user
  password: mon_mdp
  client_id: frigate

detectors:
  coral:
    type: edgetpu
    device: usb

review:
  alerts:
    labels:
      - person
      - car
      - motorcycle
  detections:
    labels:
      - cat
      - dog
      - bird

go2rtc:
  webrtc:
    candidates:
      - mon_host:8555
      - stun:8555
  streams:
    entree:
      - rtsp://mon_user:mon_mdp@IP_NVR:554/Streaming/channels/101?transportmode=multicast 
    entree_sub:
      - rtsp://mon_user:mon_mdp@IP_NVR:554/Streaming/channels/102?transportmode=multicast 
    terrasse:
      - rtsp://mon_user:mon_mdp@IP_NVR:554/Streaming/channels/201?transportmode=multicast 
    terrasse_sub:
      - rtsp://mon_user:mon_mdp@IP_NVR:554/Streaming/channels/202?transportmode=multicast
    chambre:
      - rtsp://mon_user:mon_mdp@IP_NVR:554/Streaming/channels/301?transportmode=multicast 
    chambre_sub:
      - rtsp://mon_user:mon_mdp@IP_NVR:554/Streaming/channels/302?transportmode=multicast

cameras:
#Caméra entrée
  entree:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/entree
           input_args: preset-rtsp-restream
          roles:
            - record
        - path: rtsp://127.0.0.1:8554/entree_sub
           input_args: preset-rtsp-restream
          roles:
            - detect
    detect:
      enabled: true
      width: 1280
      height: 720
      fps: 5
    objects:
      track:
        - person
        - cat
        - dog
        - car
        - motorcycle
      filters:
        person:
          threshold: 0.7
          min_area: 40000
        cat:
          threshold: 0.7
          min_area: 2000
          max_area: 20000
        dog:
          threshold: 0.7
          min_area: 2000
          max_area: 20000
        car:
          threshold: 0.7
          min_area: 60000
    snapshots:
      enabled: true
      bounding_box: true
      crop: false
      quality: 100
      retain:
        default: 30
    record:
      enabled: true
      retain:
        days: 0
      alerts:
        retain:
          days: 14
        pre_capture: 15
        post_capture: 10
      detections:
        retain:
          days: 14
        pre_capture: 15
        post_capture: 10
    motion:
      mask: 0,0,0,0.298,0.687,0.333,0.668,0

#Caméra terrasse
  terrasse:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/terrasse
          roles:
            - record
        - path: rtsp://127.0.0.1:8554/terrasse_sub
          roles:
            - detect
    detect:
      enabled: true
      width: 1280
      height: 720
      fps: 5
    objects:
      track:
        - person
        - cat
        - dog
      filters:
        person:
          threshold: 0.7
          min_area: 40000
        cat:
          threshold: 0.7
          min_area: 2000
          max_area: 20000
        dog:
          threshold: 0.7
          min_area: 3000
          max_area: 20000
    snapshots:
      enabled: true
      bounding_box: true
      crop: false
      quality: 100
      retain:
        default: 30
    record:
      enabled: true
      retain:
        days: 0
      alerts:
        retain:
          days: 14
        pre_capture: 15
        post_capture: 10
      detections:
        retain:
          days: 14
        pre_capture: 15
        post_capture: 10
    motion:
      mask: 0,0,0,1,0.328,0.894,0.824,0

#Caméra chambre
  chambre:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/chambre
          roles:
            - record
        - path: rtsp://127.0.0.1:8554/chambre_sub
          roles:
            - detect
    detect:
      enabled: true
      width: 1280
      height: 720
      fps: 5
    objects:
      track:
        - person
        - cat
        - dog
      filters:
        person:
          threshold: 0.7
          min_area: 40000
        cat:
          threshold: 0.7
          min_area: 2000
          max_area: 20000
        dog:
          threshold: 0.7
          min_area: 3000
          max_area: 20000
    snapshots:
      enabled: true
      bounding_box: true
      crop: false
      quality: 100
      retain:
        default: 30
    record:
      enabled: true
      retain:
        days: 0
      alerts:
        retain:
          days: 14
        pre_capture: 15
        post_capture: 10
      detections:
        retain:
          days: 14
        pre_capture: 15
        post_capture: 10
    motion:
      mask: 0,0,0,0.63,0.914,0
version: 0.15-1

Comment tu sais quels ports utiliser ? Je laisse 127.0.0.1 ?

J’ai cela dans le journal du module :

2025/05/13 14:02:21 EOF
2025-05-13 12:02:21.833202201  [INFO] Service NGINX exited with code 1 (by signal 0)
2025-05-13 12:02:22.536337216  [INFO] Preparing new go2rtc config...
2025-05-13 12:02:22.574784734  [INFO] Got IP address from supervisor: 192.168.1.68
2025-05-13 12:02:22.612637920  [INFO] Got WebRTC port from supervisor: 8553
2025-05-13 12:02:22.839494927  [INFO] Starting NGINX...
Traceback (most recent call last):
  File "/usr/local/nginx/get_tls_settings.py", line 22, in <module>
    config: dict[str, any] = yaml.load(raw_config)
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/main.py", line 451, in load
    return constructor.get_single_data()
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/constructor.py", line 114, in get_single_data
    node = self.composer.get_single_node()
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 72, in get_single_node
    document = self.compose_document()
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 95, in compose_document
    node = self.compose_node(None, None)
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 130, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 211, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 130, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 211, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 130, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 211, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 130, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 211, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 128, in compose_node
    node = self.compose_sequence_node(anchor)
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 173, in compose_sequence_node
    node.value.append(self.compose_node(node, index))
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 130, in compose_node
    node = self.compose_mapping_node(anchor)
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 211, in compose_mapping_node
    item_value = self.compose_node(node, item_key)
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/composer.py", line 106, in compose_node
    if self.parser.check_event(AliasEvent):
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/parser.py", line 141, in check_event
    self.current_event = self.state()
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/parser.py", line 631, in parse_block_mapping_value
    if self.scanner.check_token(ValueToken):
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/scanner.py", line 1735, in check_token
    self._gather_comments()
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/scanner.py", line 1775, in _gather_comments
    self.fetch_more_tokens()
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/scanner.py", line 278, in fetch_more_tokens
    return self.fetch_value()
  File "/usr/local/lib/python3.9/dist-packages/ruamel/yaml/scanner.py", line 628, in fetch_value
    raise ScannerError(
ruamel.yaml.scanner.ScannerError: mapping values are not allowed here
  in "<unicode string>", line 50, column 22:
               input_args: preset-rtsp-restream
                         ^ (line: 50)

Bonjour @Cloom

Quand tu dis « L’IP de ton système où Frigate tourne et est accessible » tu parles de l’IP de Frigate ou de l’IP du mini-PC (ou du Raspberry, ou tout autre appareil) sur lequel est installé Frigate ?

A quoi correspond « /streaming/channels/101 » ici : « - rtsp://user:mdp@IP:554/Streaming/channels/101?transportmode=multicast » ?

Avec ma sonnette Reolink, j’ai deux flux (un HD et un LD) : « rtsp://user:password@192.168.xx.xxx:554/h264Preview_01_main » et « rtsp://user:password@192.168.xx.xxx:554/h264Preview_01_sub », du coup, je dois modifier « rtsp://user:mdp@IP:554/Streaming/channels/101?transportmode=multicast » par mon fllux HD et la ligne « 102 » par mon flux LD ?

Essaye de générer tes url avec ce site, ca a marché impec pour mes tapo

Hello,

L’IP de Frigate, c’est pas correct mais ma formulation non plus :slight_smile:
Frigate est un logiciel, donc il n’a pas d’IP, donc soit l’IP de son container (docker) ou du système sur lequel il tourne. L’IP depuis laquelle l’interface web est accessible via le port 5000.

http://ip_de_frigate:5000

Si c’est sur HAOS via l’addon de Frigate, alors je pense que c’est la même IP que HA, je ne me souviens plus.

C’est juste le stream des cameras HIKVISION, @olybop a partagé un lien utile pour trouver les URL des streams selon les marques:

Exemple: Complete Hikvision IP Camera Setup Guide - ONVIF, RTSP and Tutorial Included

Non tu mets tes flux RTSP comme ils fonctionnent dans VLC (ou dans ta config actuelle de Frigate)

ça se plaint de:

input_args: preset-rtsp-restream

Tu pourrais essayer juste en enlevant ça.

Sinon quand j’utilisais Frigate, pour les config, quand ça ne fonctionne pas, je pars toujours du plus simple et j’ajoute petit à petit le reste et à chaque fois j’observais les logs pour m’assurer qu’il n’y avait aucune erreur ni warning :slight_smile:

Essaye ça:

mqtt:
  enabled: true
  host: mon_host
  user: mon_user
  password: mon_mdp
  client_id: frigate

detectors:
  coral:
    type: edgetpu
    device: usb

go2rtc:
  webrtc:
    candidates:
      - mon_host:8555
      - stun:8555
  streams:
    entree:
      - rtsp://mon_user:mon_mdp@IP_NVR:554/Streaming/channels/101?transportmode=multicast 

cameras:
#Caméra entrée
  entree:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/entree
          roles:
            - record
            - detect
version: 0.15-1

Assure toi que le flux rtsp fonctionne, avec VLC par exemple:

rtsp://mon_user:mon_mdp@IP_NVR:554/Streaming/channels/101?transportmode=multicast 

Sinon essaye juste avec:

rtsp://mon_user:mon_mdp@IP_NVR:554/Streaming/channels/101

Je me demandais pourquoi j’utilisais le port 8554… c’est peut-être le 8555 justement:

Par contre oui tu gardes bien 127.0.0.1, go2rtc est intégré avec Frigate et tourne au même endroit donc c’est accédé par Frigate en local.