frigate: [Support]: Go2rtc - error="wrong response on DESCRIBE"

Describe the problem you are having

I have updated Frigate and am attempting to use Go2rtc.

One of my cameras works fine (a Hikvison), however, the other two do not.

Cameras are working fine, and recording, detecting etc…

This is the error: 2023-04-11 09:24:23.103873100 09:24:23.103 ERR github.com/AlexxIT/go2rtc/cmd/streams/producer.go:53 > error=“wrong response on DESCRIBE” url=rtsp://u321cctv:xxx@10.10.10.240:554/stream1 2023-04-11 09:24:48.324691399 09:24:48.324 ERR github.com/AlexxIT/go2rtc/cmd/streams/producer.go:53 > error=“wrong response on DESCRIBE” url=rtsp://u321cctv:xxx@10.10.10.241:554/stream1

Version

0.13.0-6986949

Frigate config file

# yaml-language-server: $schema=http://battersea:5000/api/config/schema

mqtt:
  host: mosquitto
  user: u32-1
  password: 

detectors:
  coral:
    type: edgetpu
    device: usb

birdseye:
  enabled: True
  mode: continuous
  width: 1920
  height: 1080
  quality: 1

ffmpeg:
#  input_args:
#    - -avoid_negative_ts
#    - make_zero
  hwaccel_args: -hwaccel vaapi -hwaccel_device /dev/dri/renderD128 -hwaccel_output_format yuv420p
  output_args:
    record: -f segment -segment_time 10 -segment_format mp4 -reset_timestamps 1 -strftime 1 -c:v copy -c:a aac

#logger:
  # Optional: default log level (default: shown below)
  #default: debug
  # Optional: module by module log level configuration
  #logs:
  #  frigate.mqtt: error

go2rtc:
  streams:
    West:
      - rtsp://u321cctv:xxx@10.10.10.242:554/Streaming/Channels/101/
    East:
      - rtsp://u321cctv:xxx@10.10.10.240:554/stream1
    South:
      - rtsp://u321cctv:xxx@10.10.10.241:554/stream1

cameras:

  East: # <------ Name the camera
    ui:
      order: 0
    ffmpeg:
      inputs:
        - path: rtsp://u321cctv:xxx@10.10.10.240:554/stream1 # <----- Update for your camera
          roles:
            - record

        - path: rtsp://u321cctv:xxx@10.10.10.240:554/stream2 # <----- Update for your camera
          roles:
            - detect

    detect:
      width: 640 # <---- update for your camera's resolution
      height: 360 # <---- update for your camera's resolution
      fps: 5
      stationary:
        interval: 5
        threshold: 50

    motion:
      mask:
        # Cable and timestamp
        - 0,175,224,30,228,0,0,0
        # - 2560,0,2560,141,2051,61,1533,62,639,258,650,319,552,376,178,655,0,801,0,0
        # Optional: The threshold passed to cv2.threshold to determine if a pixel is different enough to be counted as motion. (default: shown below)
        # Increasing this value will make motion detection less sensitive and decreasing it will make motion detection more sensitive.
        # The value should be between 1 and 255. 25 default
      threshold: 25
        # Optional: Minimum size in pixels in the resized motion image that counts as motion (default: 30)
        # Increasing this value will prevent smaller areas of motion from being detected. Decreasing will
        # make motion detection more sensitive to smaller moving objects. 30 default
        # As a rule of thumb:
        #  - 15 - high sensitivity
        #  - 30 - medium sensitivity
        #  - 50 - low sensitivity
      contour_area: 15
        # Optional: Alpha value passed to cv2.accumulateWeighted when averaging the motion delta across multiple frames (default: shown below)
        # Higher values mean the current frame impacts the delta a lot, and a single raindrop may register as motion.
        # Too low and a fast moving person wont be detected as motion.
      delta_alpha: 0.2
        # Optional: Alpha value passed to cv2.accumulateWeighted when averaging frames to determine the background (default: shown below)
        # Higher values mean the current frame impacts the average a lot, and a new object will be averaged into the background faster.
        # Low values will cause things like moving shadows to be detected as motion for longer.
        # https://www.geeksforgeeks.org/background-subtraction-in-an-image-using-concept-of-running-average/
      frame_alpha: 0.2
        # Optional: Height of the resized motion frame  (default: 50)
        # This operates as an efficient blur alternative. Higher values will result in more granular motion detection at the expense
        # of higher CPU usage. Lower values result in less CPU, but small changes may not register as motion.
      frame_height: 50
      improve_contrast: True

    objects:
      track:
        - person
        - dog
        - cat
        - sheep
        - cow
        - horse
        - umbrella

      filters:
        person:
          mask:
            - 0,0,380,0,214,36,0,179

    snapshots:
      enabled: True
      bounding_box: True
      height: 360
      retain:
        default: 14
      required_zones:
        - doorbell_east
        - all_east
 
    record:
      enabled: True
      retain:
        mode: all
        days: 7
      events:
        retain:
          default: 14
        pre_capture: 5
        post_capture: 120
        required_zones:
          - doorbell_east
          - all_east

    zones:
      doorbell_east:
        coordinates: 640,360,0,360,0,319,367,137,542,89,640,103
        objects:
          - person
          - umbrella
      all_east:
        coordinates: 640,360,640,0,0,0,0,360
        objects:
          - dog
          - cat
          - sheep
          - cow
          - horse
    
  South: # <------ Name the camera
    ui:
      order: 1
    ffmpeg:
      inputs:
        - path: rtsp://u321cctv:xxx@10.10.10.241:554/stream1 # <----- Update for your camera
          roles:
            - record

        - path: rtsp://u321cctv:xxx@10.10.10.241:554/stream2 # <----- Update for your camera
          roles:
            - detect

    detect:
      width: 640 # <---- update for your camera's resolution
      height: 360 # <---- update for your camera's resolution
      fps: 5
      stationary:
        interval: 5
        threshold: 50

    motion:
      mask:
        - 0,21,231,21,228,0,0,0
      #  - 2560,233,2560,0,1966,0
      #  - 2560,1440,2560,633,2097,1440
      #  - 789,0,791,59,0,61,0,0
        # Optional: The threshold passed to cv2.threshold to determine if a pixel is different enough to be counted as motion. (default: shown below)
        # Increasing this value will make motion detection less sensitive and decreasing it will make motion detection more sensitive.
        # The value should be between 1 and 255. 25 default
      threshold: 25
        # Optional: Minimum size in pixels in the resized motion image that counts as motion (default: 30)
        # Increasing this value will prevent smaller areas of motion from being detected. Decreasing will
        # make motion detection more sensitive to smaller moving objects. 30 default
        # As a rule of thumb:
        #  - 15 - high sensitivity
        #  - 30 - medium sensitivity
        #  - 50 - low sensitivity
      contour_area: 15
        # Optional: Alpha value passed to cv2.accumulateWeighted when averaging the motion delta across multiple frames (default: shown below)
        # Higher values mean the current frame impacts the delta a lot, and a single raindrop may register as motion.
        # Too low and a fast moving person wont be detected as motion.
      delta_alpha: 0.2
        # Optional: Alpha value passed to cv2.accumulateWeighted when averaging frames to determine the background (default: shown below)
        # Higher values mean the current frame impacts the average a lot, and a new object will be averaged into the background faster.
        # Low values will cause things like moving shadows to be detected as motion for longer.
        # https://www.geeksforgeeks.org/background-subtraction-in-an-image-using-concept-of-running-average/
      frame_alpha: 0.2
        # Optional: Height of the resized motion frame  (default: 50)
        # This operates as an efficient blur alternative. Higher values will result in more granular motion detection at the expense
        # of higher CPU usage. Lower values result in less CPU, but small changes may not register as motion.
      frame_height: 50
      improve_contrast: True

    objects:
      track:
        - person
        - dog
        - cat
        - sheep
        - cow
        - horse
        - umbrella

    snapshots:
      enabled: True
      bounding_box: True
      height: 360
      retain:
        default: 14
      required_zones:
        - doorbell_south
        - all_south

    record:
      enabled: True
      retain:
        mode: all
        days: 7
      events:
        retain:
          default: 14
        pre_capture: 5
        post_capture: 120
        required_zones:
          - doorbell_south
          - all_south

    zones:
      doorbell_south:
        coordinates: 0,360,195,360,83,130,297,47,485,71,491,50,336,27,260,22,83,81,44,115,0,136 
        objects:
          - person
          - umbrella
      all_south:
        coordinates: 640,360,640,0,0,0,0,360
        objects:
          - dog
          - cat
          - sheep
          - cow
          - horse

  West: # <------ Name the camera
    ui:
      order: 2
    ffmpeg:
      inputs:
        - path: rtsp://u321cctv:xxx@10.10.10.242:554/Streaming/Channels/101/ # <----- Update for your camera
          roles:
            - record

        - path: rtsp://u321cctv:xxx@10.10.10.242:554/Streaming/Channels/103/ # <----- Update for your camera
          roles:
            - detect

    #rtmp:
    #  enabled: True # <-- RTMP should be disabled if your stream is not H264

    detect:
      width: 1280 # <---- update for your camera's resolution
      height: 720 # <---- update for your camera's resolution
      fps: 6
      stationary:
        interval: 5
        threshold: 50
        max_frames:
           objects:
            car: 750

    motion:
      mask:      
        # Timestamp
        - 30,24,335,24,335,2,30,2
        # Cable
        - 957,720,1020,720,932,58,902,63
        #- 59,94,672,95,672,38,57,39
        # Optional: The threshold passed to cv2.threshold to determine if a pixel is different enough to be counted as motion. (default: shown below)
        # Increasing this value will make motion detection less sensitive and decreasing it will make motion detection more sensitive.
        # The value should be between 1 and 255. 25 default
      threshold: 25
        # Optional: Minimum size in pixels in the resized motion image that counts as motion (default: 30)
        # Increasing this value will prevent smaller areas of motion from being detected. Decreasing will
        # make motion detection more sensitive to smaller moving objects. 30 default
        # As a rule of thumb:
        #  - 15 - high sensitivity
        #  - 30 - medium sensitivity
        #  - 50 - low sensitivity
      contour_area: 15
        # Optional: Alpha value passed to cv2.accumulateWeighted when averaging the motion delta across multiple frames (default: shown below)
        # Higher values mean the current frame impacts the delta a lot, and a single raindrop may register as motion.
        # Too low and a fast moving person wont be detected as motion.
      delta_alpha: 0.2
        # Optional: Alpha value passed to cv2.accumulateWeighted when averaging frames to determine the background (default: shown below)
        # Higher values mean the current frame impacts the average a lot, and a new object will be averaged into the background faster.
        # Low values will cause things like moving shadows to be detected as motion for longer.
        # https://www.geeksforgeeks.org/background-subtraction-in-an-image-using-concept-of-running-average/
      frame_alpha: 0.2
        # Optional: Height of the resized motion frame  (default: 50)
        # This operates as an efficient blur alternative. Higher values will result in more granular motion detection at the expense
        # of higher CPU usage. Lower values result in less CPU, but small changes may not register as motion.
      frame_height: 50
      improve_contrast: True

    objects:
      track:
        - person
        - car
        - dog
        - cat
        - sheep
        - cow
        - horse
        - umbrella

      filters:
        person:
          min_area: 375
          mask:
            - 0,0,743,0,1280,0,1280,155,915,114,348,122,0,204
        car:
          min_area: 1000

    snapshots:
      enabled: True
      bounding_box: True
      height: 720
      retain:
        default: 14
      required_zones:
        - person_west
        - car_west
        - all_west

    record:
      enabled: True
      retain:
        mode: all
        days: 7
      events:
        retain:
          default: 14
        pre_capture: 5
        post_capture: 120
        required_zones:
          - person_west
          - car_west
          - all_west

    zones:
      person_west:
        coordinates: 0,720,1280,720,1280,311,1176,225,147,395,147,503,0,549
        objects:
          - person
          - umbrella
      car_west:
        coordinates: 170,664,848,607,1280,487,1280,368,720,471,173,526
        objects:
          - car
      all_west:
        coordinates: 1280,720,1280,0,0,0,0,720
        objects:
          - dog
          - cat
          - sheep
          - horse
          - cow

Relevant log output

2023-04-11 09:23:52.603778701  [INFO] Preparing go2rtc config...
2023-04-11 09:23:52.804503528  [INFO] Starting go2rtc...
2023-04-11 09:23:52.916525507  09:23:52.916 INF go2rtc version 1.2.0 linux/amd64
2023-04-11 09:23:52.916753002  09:23:52.916 INF [api] listen addr=:1984
2023-04-11 09:23:52.917054768  09:23:52.916 INF [rtsp] listen addr=:8554
2023-04-11 09:23:52.917298121  09:23:52.917 INF [srtp] listen addr=:8443
2023-04-11 09:23:52.917511341  09:23:52.917 INF [webrtc] listen addr=:8555
2023-04-11 09:24:02.608656196  [INFO] Starting go2rtc healthcheck service...
2023-04-11 09:24:22.499020170  09:24:22.498 ERR github.com/AlexxIT/go2rtc/cmd/streams/producer.go:53 > error="wrong response on DESCRIBE" url=rtsp://u321cctv:xxx@10.10.10.240:554/stream1
2023-04-11 09:24:23.103873100  09:24:23.103 ERR github.com/AlexxIT/go2rtc/cmd/streams/producer.go:53 > error="wrong response on DESCRIBE" url=rtsp://u321cctv:xxx@10.10.10.240:554/stream1
2023-04-11 09:24:48.324691399  09:24:48.324 ERR github.com/AlexxIT/go2rtc/cmd/streams/producer.go:53 > error="wrong response on DESCRIBE" url=rtsp://u321cctv:xxx@10.10.10.241:554/stream1
2023-04-11 09:24:48.929638151  09:24:48.929 ERR github.com/AlexxIT/go2rtc/cmd/streams/producer.go:53 > error="wrong response on DESCRIBE" url=rtsp://u321cctv:xxx@10.10.10.241:554/stream1

FFprobe output from your camera

Frigate is unable to get FFprobe output for the C320WS cameras

Frigate stats

{"East":{"camera_fps":5.1,"capture_pid":302,"detection_enabled":1,"detection_fps":9.6,"ffmpeg_pid":313,"pid":297,"process_fps":5.1,"skipped_fps":0.0},"South":{"camera_fps":5.1,"capture_pid":305,"detection_enabled":1,"detection_fps":7.9,"ffmpeg_pid":309,"pid":299,"process_fps":5.1,"skipped_fps":0.0},"West":{"camera_fps":6.1,"capture_pid":308,"detection_enabled":1,"detection_fps":16.6,"ffmpeg_pid":315,"pid":301,"process_fps":6.0,"skipped_fps":0.0},"cpu_usages":{"%Cpu(s):":{"cpu":"id,","mem":"0.3"},"1":{"cpu":"0.0","mem":"0.0"},"107":{"cpu":"7.6","mem":"3.5"},"108":{"cpu":"0.0","mem":"0.0"},"119":{"cpu":"0.0","mem":"0.1"},"122":{"cpu":"0.0","mem":"0.0"},"123":{"cpu":"0.3","mem":"0.1"},"124":{"cpu":"0.0","mem":"0.0"},"125":{"cpu":"0.0","mem":"0.0"},"15":{"cpu":"0.0","mem":"0.0"},"16":{"cpu":"0.0","mem":"0.0"},"1977":{"cpu":"0.0","mem":"0.0"},"2025":{"cpu":"0.0","mem":"0.0"},"2031":{"cpu":"0.0","mem":"0.0"},"2033":{"cpu":"0.0","mem":"0.0"},"2039":{"cpu":"0.7","mem":"0.0"},"24":{"cpu":"0.0","mem":"0.0"},"25":{"cpu":"0.0","mem":"0.0"},"26":{"cpu":"0.0","mem":"0.0"},"27":{"cpu":"0.0","mem":"0.0"},"28":{"cpu":"0.0","mem":"0.0"},"282":{"cpu":"0.0","mem":"1.4"},"288":{"cpu":"0.7","mem":"0.1"},"289":{"cpu":"32.9","mem":"1.7"},"29":{"cpu":"0.0","mem":"0.0"},"291":{"cpu":"23.9","mem":"1.6"},"297":{"cpu":"19.9","mem":"1.5"},"298":{"cpu":"0.0","mem":"0.4"},"299":{"cpu":"12.0","mem":"1.5"},"30":{"cpu":"0.0","mem":"0.0"},"300":{"cpu":"0.0","mem":"0.4"},"301":{"cpu":"48.8","mem":"1.6"},"302":{"cpu":"1.0","mem":"1.5"},"305":{"cpu":"1.3","mem":"1.5"},"308":{"cpu":"3.7","mem":"1.5"},"309":{"cpu":"6.0","mem":"0.3"},"31":{"cpu":"0.0","mem":"0.0"},"313":{"cpu":"5.6","mem":"0.3"},"315":{"cpu":"5.3","mem":"0.4"},"317":{"cpu":"0.0","mem":"0.4"},"319":{"cpu":"4.0","mem":"0.2"},"32":{"cpu":"0.0","mem":"0.0"},"322":{"cpu":"20.6","mem":"0.6"},"324":{"cpu":"3.7","mem":"0.2"},"325":{"cpu":"6.0","mem":"0.2"},"41":{"cpu":"0.0","mem":"0.0"},"42":{"cpu":"0.0","mem":"0.0"},"79":{"cpu":"0.0","mem":"0.0"},"81":{"cpu":"0.0","mem":"0.0"},"82":{"cpu":"0.0","mem":"0.0"},"88":{"cpu":"0.0","mem":"0.1"},"MiB":{"cpu":"6305.1","mem":"avail"},"PID":{"cpu":"%CPU","mem":"%MEM"},"Tasks:":{"cpu":"stopped,","mem":"0"},"top":{"cpu":"average:","mem":"2.78,"}},"detection_fps":34.1,"detectors":{"coral":{"detection_start":0.0,"inference_speed":11.44,"pid":289}},"gpu_usages":{"intel-vaapi":{"gpu":"2.18 %","mem":"- %"}},"service":{"last_updated":1681195266,"latest_version":"0.12.0","storage":{"/dev/shm":{"free":264.4,"mount_type":"tmpfs","total":268.4,"used":4.0},"/media/frigate/clips":{"free":910597.0,"mount_type":"exfat","total":4000768.3,"used":3090171.3},"/media/frigate/recordings":{"free":910597.0,"mount_type":"exfat","total":4000768.3,"used":3090171.3},"/tmp/cache":{"free":1988.9,"mount_type":"tmpfs","total":2000.0,"used":11.1}},"temperatures":{},"uptime":1033,"version":"0.13.0-6986949"}}

Operating system

Other Linux

Install method

Docker Compose

Coral version

USB

Network connection

Wired

Camera make and model

TP-Link C320WS

Any other information that may be helpful

No response

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Comments: 15 (2 by maintainers)

Most upvoted comments

Hi there, I just had exactly the same issues with my Tplink Tapo C200. The problem was that the camera does only allow two concurrent streams from any frontend. So if you have frigate configured to use go2rtc and rtsp over ffmpg, these are already the 2 streams available.

You have to close all other streams, e.g. Home Assistant, offical App, etc…

Maybe make an issue on go2rtc repo, but it seems those cameras are just not compatible with go2rtc as it is right now from what I can tell