Tapo Cameras with Frigate

Thanks for the PTZ settings, I was using wrong ONVIF port number :slight_smile:

With regards to your 2-way audio issue, I have 2-way audio working with Tapo C220 camera. Under your go2rtc settings add the following:

streams:
    EundE_EINGANG-Innen:
      - rtsp://USER:[email protected]:554/stream1
      - tapo://[email protected]

( # insert your tplink cloud password without username)

Hopefully that will enable 2-way audio for you too :slight_smile:

THX, but No 2way Audio Icon to talk in fregate when I click in the picture of the cam.
Where do you see the icon.
I have these on Top richt corner:
image

And The PTZ in the middle down on the Video screen

Can you provide a screenshot of the 2 Way-Audio Icon, Pls.
And also the camera section, Maybe I have a problem there.

Does the C220 work fluently? I have just bought a Tapo C220 and the image is not stable and frigate throws lot of errors from ffmpeg. I think I’m going to return this shit.

Are you accessing Frigate UI over https? It must be https for 2 way audio to work.

It’s working great for me. Here are my go2rtc settings in my Frigate config.yml:

go2rtc:
  streams:
    kitchen_tapo:
      - ffmpeg:rtsp://user:[email protected]/stream1#video=copy#audio=copy#audio=aac
      - tapo://[email protected]

I have that configuration, but PTZ is not working.

Frigate says “No appropriate Onvif profiles found for camera: camara-cocina.”

I have RTSP video in Frigate but has that problem.

Onvif is working with an Onvif software and I can control the PTZ with it.

Do you have ONVIF configured in Frigate under that specific camera?

Here’s my tapo camera Frigate config for reference:

  kitchen_tapo:
    ffmpeg:
      retry_interval: 60
      inputs:
        - path: rtsp://127.0.0.1:8554/kitchen_tapo?video=copy&audio=aac
          input_args: preset-rtsp-restream
          roles:
            - record
            - audio
            - detect
    audio:
      enabled: true
      listen:
        - bark
        - scream
        - yell
        - glass
        - smash
        - speech
        - fire_alarm
        - smoke_detector
      filters:
        speech:
          threshold: 0.6
        glass:
          threshold: 0.5
        fire_alarm:
          threshold: 0.5
        smoke_detector:
          threshold: 0.5
    snapshots:
      enabled: false
      timestamp: false
    record:
      enabled: true
      retain:
        # Optional: Number of days to retain recordings regardless of events (default: shown below)
        # NOTE: This should be set to 0 and retention should be defined in events section below
        #       if you only want to retain recordings of events.
        days: 1
        # Optional: Mode for retention. Available options are: all, motion, and active_objects
        #   all - save all recording segments regardless of activity
        #   motion - save all recordings segments with any detected motion
        #   active_objects - save all recording segments with active/moving objects
        # NOTE: this mode only applies when the days setting above is greater than 0
        mode: all
    detect:
      enabled: false
      fps: 1
    onvif:
      # Required: host of the camera being connected to.
      host: 192.168.0.14
      # Optional: ONVIF port for device (default: shown below).
      port: 2020
      # Optional: username for login.
      # NOTE: Some devices require admin to access ONVIF.
      user: username
      # Optional: password for login.
      password: mypassword1
      # Optional: PTZ camera object autotracking. Keeps a moving object in
      # the center of the frame by automatically moving the PTZ camera.
      autotracking:
        # Optional: enable/disable object autotracking. (default: shown below)
        enabled: false
        # Optional: list of objects to track from labelmap.txt (default: shown below)
        track:
          - person
        # Required: Begin automatically tracking an object when it enters any of the listed zones.
        #required_zones:
        #  - all
        # Required: Name of ONVIF preset in camera's firmware to return to when tracking is over. (default: shown below)
        return_preset: '3'
        # Optional: Seconds to delay before returning to preset. (default: shown below)

Hello,

This is my configuration.

camara-cocina:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/camara-cocina
input_args: preset-rtsp-restream
roles:
- record
output_args:
record: preset-record-generic-audio-aac
onvif:
host: 192.168.1.136
port: 2020
user: “usercamera”
password: “r532mtE8camera”

detect:
  enabled: False
record:
  enabled: True
snapshots:
  enabled: False

On the other hand, I have the camera set to 20fps. Sometimes the video runs smoothly, but other times the image becomes choppy or freezes and then suddenly speeds up to catch up to real-time.
This happens both in Frigate and in the Tapo app. The camera is located next to the router, and the RSSI is good (-24dB).

Additionally, Frigate keeps logging errors related to this camera, like the following:

[segment @ 0x62c0ebffcd40] Non-monotonous DTS in output stream 0:0; previous: 3446867, current: 304128; changing to 3446868. This may result in incorrect timestamps in the output file.

Does anything similar happen to you?

I used it with local IP!
Many THX conorlap!
That is the " Magic" nowhere mentioned! :magic_wand: :sunglasses:

1 Like

Here are my full Tapo related settings, have a look at my config and try to copy it to see if your camera works better.

I’ve put my rtsp feed through ffmpeg in go2rtc and specified video copy, audio copy and audio aac for full compatibility with Frigate and Home Assistant. I use ‘input_args: preset-rtsp-restream’ and ‘output_args: preset-record-generic-audio-copy’.

go2rtc:
  streams:
    kitchen_tapo:
      - ffmpeg:rtsp://username:[email protected]/stream1#video=copy#audio=copy#audio=aac
      - tapo://[email protected]
  webrtc:
    candidates:
      - stun:8555
  api:
    origin: '*'


cameras:
  kitchen_tapo:
    ffmpeg:
      retry_interval: 60
      inputs:
        - path: rtsp://127.0.0.1:8554/kitchen_tapo?video=copy&audio=aac
          input_args: preset-rtsp-restream
          roles:
            - record
            - audio
            - detect
    #Audio detection settings:
    audio: 
      enabled: true
      listen:
        - bark
        - scream
        - yell
        - glass
        - smash
        - speech
        - fire_alarm
        - smoke_detector
      filters:
        speech:
          threshold: 0.6
        glass:
          threshold: 0.5
        fire_alarm:
          threshold: 0.5
        smoke_detector:
          threshold: 0.5
    snapshots:
      enabled: false
      timestamp: false
    record:
      enabled: true
      retain:
        # Optional: Number of days to retain recordings regardless of events (default: shown below)
        # NOTE: This should be set to 0 and retention should be defined in events section below
        #       if you only want to retain recordings of events.
        days: 1
        # Optional: Mode for retention. Available options are: all, motion, and active_objects
        #   all - save all recording segments regardless of activity
        #   motion - save all recordings segments with any detected motion
        #   active_objects - save all recording segments with active/moving objects
        # NOTE: this mode only applies when the days setting above is greater than 0
        mode: all
    detect:
      enabled: false
      fps: 1
    onvif:
      # Required: host of the camera being connected to.
      host: 192.168.0.14
      # Optional: ONVIF port for device (default: shown below).
      port: 2020
      # Optional: username for login.
      # NOTE: Some devices require admin to access ONVIF.
      user: username
      # Optional: password for login.
      password: password
      # Optional: PTZ camera object autotracking. Keeps a moving object in
      # the center of the frame by automatically moving the PTZ camera.
      autotracking:
        # Optional: enable/disable object autotracking. (default: shown below)
        enabled: false
        # Optional: list of objects to track from labelmap.txt (default: shown below)
        track:
          - person
        # Required: Begin automatically tracking an object when it enters any of the listed zones.
        #required_zones:
        #  - all
        # Required: Name of ONVIF preset in camera's firmware to return to when tracking is over. (default: shown below)
        return_preset: '3'
        # Optional: Seconds to delay before returning to preset. (default: shown below)

ffmpeg:
  hwaccel_args: preset-vaapi #or, depending on your CPU use preset-intel-qsv-h264 / preset-intel-qsv-h265
  output_args:
    record: preset-record-generic-audio-copy

Will u share your frigate.yaml?

It’s something with FW version of the camera.

I bought two camera.

The first one updated to 1.2.2 and it’s not working PTZ.

The second one I desactivad automatic updates and it’s on 1.1.13. It’s working right!

Are you using the latest frigate beta? Something changed with tapo and frigate 16.

yes, there seems to be a change for audio in the new beta

  • The go2rtc audio handling has been updated to accept any audio codec instead of only AAC. This makes it easier to get audio from cameras that use PCMA/U audio. However, if the recording ffmpeg preset preset-record-generic-audio-copy is currently used it likely will need to be changed to preset-record-generic-audio-aac to continue to support audio in recordings.
ffmpeg:
  ...
  output_args: 
    record: preset-record-generic-audio-aac

I just started using Frigate and started off the with the Tapo C320WS camera (HW2, FW 1.2.4), but im running into major issues here if I use anything other than stream 2, but I suspect its config related:

If somone can share their recent config, which works with beta 0.16.0x, that would be so helpful!

Also, have any of you been able to integrate this into the HA, either via the core or HACS ingtegration? I followed the FAQ but for the life of me, cannot get this integrated.

thank you

Yep, had to change that setting and then it worked. I don’t have that same model camera, but I use tapo in my go2rtc setting, not rtsp. Not sure if that helps you.

Hey everyone, I just bought a bunch on the TPlink Tapo C500 cameras, adn finally got HA and Frigate installed…adn just now got a camera viewable, pretty stoked! but I want to learn how to do the controls for the camera also, can someone show me how? here is my VERY basic config

mqtt:
enabled: false

cameras:
Driveway: # <------ Name the camera
enabled: true
ffmpeg:
inputs:
- path: rtsp://f4u5t1:[email protected]/stream1 # <----- The stream you want to use for detection
roles:
- detect
detect:
enabled: false # <---- disable detection until you have a working camera feed
width: 1280
height: 720
version: 0.15-1

For anyone arriving here now - I was finding this difficult and this thread among others helped me a lot. So, I’m posting my final working YAML for anyone it might help

# Obvs get rid of this if you don't need it
mqtt:
  enabled: True
  host: core-mosquitto
  port: 1883
  user: nope
  password: nope
  topic_prefix: frigate
  client_id: frigate

# Because I didn't buy a Coral (yet)
ffmpeg:
  hwaccel_args: preset-vaapi

# Tweak based on your preferences
record:
  enabled: true
  alerts:
    retain:
      days: 7
    pre_capture: 3
    post_capture: 3
  detections:
    retain:
      days: 7
    pre_capture: 3
    post_capture: 3

snapshots:
  enabled: true
  timestamp: true
  retain:
    default: 7

# The #audio=aac bit is super important (well I guess it all is but that's the bit that caught me out)
go2rtc:
  streams:
    office_camera:
      - rtsp://nope:[email protected]:554/stream1
      - ffmpeg:office_camera#audio=aac
    office_camera_sub:
      - rtsp://nope:[email protected]:554/stream2

# The output_args are important
cameras:
  office_camera:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/office_camera
          input_args: preset-rtsp-restream
          roles:
            - record
            - audio
        - path: rtsp://127.0.0.1:8554/office_camera_sub
          input_args: preset-rtsp-restream
          roles:
            - detect
      output_args:
        record: preset-record-generic-audio-copy
    live:
      stream_name: office_camera
    detect:
      enabled: true
      width: 640
      height: 360
    # This gives you the arrow controls in the live stream
    onvif:
      host: 192.168.86.29
      port: 2020
      user: nope
      password: nope

# Because I didn't buy a Coral (yet)
detectors:
  ov:
    type: openvino
    device: AUTO

model:
  width: 300
  height: 300
  input_tensor: nhwc
  input_pixel_format: bgr
  path: /openvino-model/ssdlite_mobilenet_v2.xml
  labelmap_path: /openvino-model/coco_91cl_bkgr.txt

semantic_search:
  enabled: true
  reindex: true
  model_size: small

version: 0.15-1

Something worth noting is I wasted a couple of hours trying to work out why I had no audio playback in the “Review” section of Frigate - but I did have it in my live stream and also in the video files when viewed in “Explore”

I fixed this by clearing my browser cache for home assistant and all started to work.

My setup:

Thing Spec
HA Version core-2025.6.0
Installation type Home Assistant OS
Operating system version 6.12.23-haos
CPU architecture x86_64
Physical Machine HP EliteDesk 800 G2 Mini Core i5-6500T 2.5 - SSD 128 GB - 8GB
Camera Tapo C211

Hope this saves someones sanity in the future.

2 Likes

Hello all - I have my Frigate server running very well and most things work great. I’m having some trouble adding audio to my Tapo TC110 and TC60 devices although the video is perfect.

I have the Tapo Lab setting on and have rebooted all the cameras as previously suggested. I’m also access the Frigate server via https:ip:8971 with authentication.

I have audio on other devices, D-Link, REOlink, others, so I know the audio is working.

Running Frigate 0.15.2 on Portainer on a Debian bare metal box.

Relative config info for TC60 with 2-way audio.

go2rtc:
  streams:
    storage:
      - rtsp://USER:[email protected]:554/stream1#video=copy#audio=copy#audio=aac
      - tapo://[email protected]

cameras:
   Storage:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/storage
          input_args: preset-rtsp-restream
          roles:
            - detect
            - record
            - audio
      output_args:
        record: preset-record-generic-audio-aac

What am I missing? I’ve tried everything else I’ve seen online including this thread.

Hi,
I have got Tapo cam C220 working with Frigate with PTZ controls and Audio in Live Feed.
But I have a couple of issues that I am not able to resolve.

  1. No audio in recorded footage
  2. No audio in HomeAssistant (only works in Frigate Live Feed)

I am running HA in a docker container alongside Frigate. They are both running the latest stable version.

Here’s my Frigate config, can someone help please?

logger:
  default: error
  logs:
    frigate.mqtt: debug
    frigate.app: debug
    frigate.object_detection: debug
    frigate.zeroconf: debug
    detector.cpu: debug
    ffmpeg.tapo1_cam.detect: debug
    ffmpeg.tapo1_cam.record: debug
    ffmpeg.tapo1_cam.audio: debug

mqtt:
  host: 127.0.0.1
  user: *****
  password: *****

record:
  enabled: true
  expire_interval: 120
  retain:
    # Optional: Number of days to retain recordings regardless of events (default: shown below)
    # NOTE: This should be set to 0 and retention should be defined in events section below
    #       if you only want to retain recordings of events.
    days: 0
    # Optional: Mode for retention. Available options are: all, motion, and active_objects
    #   all - save all recording segments regardless of activity
    #   motion - save all recordings segments with any detected motion
    #   active_objects - save all recording segments with active/moving objects
    # NOTE: this mode only applies when the days setting above is greater than 0
    mode: all
  alerts:
    retain:
      days: 1
    pre_capture: 5
    post_capture: 5
  detections:
    retain:
      days: 1
    pre_capture: 5
    post_capture: 5
snapshots:
  enabled: true
  timestamp: true
  retain:
    default: 7

go2rtc:
  streams:
    tapo1_camera:
      - rtsp://xxxx:[email protected]:554/stream1
      - ffmpeg:tapo1_camera#audio=aac
    tapo1_camera_sub:
      - rtsp://xxxx:[email protected]:554/stream2

cameras:
  tapo1_camera:
    ffmpeg:
      inputs:
        - path: rtsp://127.0.0.1:8554/tapo1_camera
          input_args: preset-rtsp-restream
          roles:
            - record
        - path: rtsp://127.0.0.1:8554/tapo1_camera_sub
          input_args: preset-rtsp-restream
          roles:
            - detect
      output_args:
        record: preset-record-generic-audio-aac
    live:
      stream_name: tapo1_camera
    detect:
      enabled: true
      width: 640
      height: 360
    onvif:
      host: 192.168.1.135
      port: 2020
      user: *****
      password: *****

1 Like

shouldn’t that be admin: upercaseMD5hash?