Add on: RTSPtoWeb and RTSPtoWebRTC

I hosted Frigate outside of HASS so I could have access to my NAS storage. Looks like this is a trade-off. Thanks.

Looks like it needs some work to work together. In the mean time you could also configure the cam in home assistant natively e.g. generic to experiment

1 Like

Is anyone having an issue with the Nest Hello that will show the feed but any movement in the feed makes the image messed up pixelation? My two other newer Nest Cam Battery are fine no issue.

I canā€™t figure out why WebRTC is not working on my system. Iā€™ve tried everything I could find and also followed the video in 1st post. When I configure my camera cards to ā€œliveā€ the cameras appear in the addon GUI but when previewing them, out of the 4 formats, the webRTC one never loads so my picture-glance cards are black.

The camera feeds are provided by a Hikvision NVR on different subnet 192.168.3.x while HA is on 192.168.1.x. The NVR itself is blocked from accessing the internet but everything on the network should have access to it. I can view the camera feeds in HA using the generic camera integration but performance is terrible especially if I use the 8MP (4K) camera feed. Unfortunately the NVR only provides that, or a super low resolution feed (useless). As far as I recall, all cameras and NVR are set to H264, max resolution, max bitrate and audio enabled if available. Not sure whether there are any other relevant settings.

Below is an example of how my cameras are configured (they are all Hikvision but several different models):

  - platform: generic
    name: IP Camera
    username: "username"
    password: "password"
    authentication: digest
    verify_ssl: false
    still_image_url: http://192.168.3.99:65003/ISAPI/Streaming/channels/101/picture
    stream_source: rtsp://username:[email protected]:554/Streaming/Channels/301

Please note that the NVR uses different port numbers to point to appropriate still image, and different channel numbers to point to the specific camera. Channels 101, 201, 301 are the highest resolution stream for cameras 1, 2 and 3. For the still images, you use ports 65001, 65002 and 65003.

My network is 100% based on Unifi equipment. I wonder whether there are any settings I need to look at to enable this to work. I do constantly update the firmware (beta releases) so itā€™s possible something changed on their end. I have not made any changes to my networking equipment related to this addon.

After rebooting HA I saw this in the Core logs:

2022-03-24 09:29:36 WARNING (MainThread) [homeassistant.config_entries] Config entry 'http://192.168.1.41:8083' for rtsp_to_webrtc integration not ready yet: RTSPtoWeb server communication failure: Cannot connect to host 192.168.1.41:8083 ssl:default [Connect call failed ('192.168.1.41', 8083)]; Retrying in background

The webRTC GUI comes up fine at http://192.168.1.41:8083 and it only shows streams I set to ā€˜liveā€™ but the webRTC streams never work.

The add-on log does not have any errors in it:

[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 01-rtsp-to-web: executing... 
[09:31:12] INFO: Updating configuration
[cont-init.d] 01-rtsp-to-web: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
[09:31:13] INFO: Starting discovery service
[09:31:13] INFO: Starting RSTPtoWeb
time="2022-03-24T09:31:13-05:00" level=info msg="Server CORE start" func=main module=main
time="2022-03-24T09:31:13-05:00" level=info msg="Server RTSP start" call=Start func=RTSPServer module=rtsp_server
time="2022-03-24T09:31:13-05:00" level=info msg="Server HTTP start" call=Start func=RTSPServer module=http_server
time="2022-03-24T09:31:13-05:00" level=info msg="Server start success a wait signals" func=main module=main
[09:31:13] INFO: Successfully send discovery information to Home Assistant (8083).

Moments ago I tried to change the log level to DEBUG and I disabled SSL Verification to see if it would help. No change.

Is the RTSP port number correct? Should it not be 554? I tried both but did not notice any change.

This is what I see on the addon web GUI (obviously the feeds are not pixelated):

Last, it seems that having this running uses quite a bit of CPU resources. Glances shows 13% CPU usage with only 3 of my 9 cameras showing in the stream list. My HA is running in Proxmox VM on a dedicated machine (i7-8700 with 32GB ram) and I reserved 6 CPU threads out of 12, and 6GB ram to HA. Should be fine but wondering whether once all streams work I might have a load issue.

Any suggestions on what may be causing my webRTC streams to not work?

EDIT: Adding snippet of debug logs

[09:39:44] INFO: Successfully send discovery information to Home Assistant (8083).
time="2022-03-24T09:39:46-05:00" level=error msg="stream not found" call=StreamChannelExist channel=0 func=HTTPAPIServerStreamHLSLLM3U8 module=http_hlsll stream=camera.backyard_camera
time="2022-03-24T09:39:48-05:00" level=error msg="stream not found" call=StreamChannelExist channel=0 func=HTTPAPIServerStreamHLSM3U8 module=http_hls stream=camera.backyard_camera
time="2022-03-24T09:39:54-05:00" level=error msg="stream not found" call=StreamChannelExist channel=0 func=HTTPAPIServerStreamHLSLLM3U8 module=http_hlsll stream=camera.backyard_camera
time="2022-03-24T09:39:56-05:00" level=error msg="stream not found" call=StreamChannelExist channel=0 func=HTTPAPIServerStreamHLSM3U8 module=http_hls stream=camera.backyard_camera
time="2022-03-24T09:40:10-05:00" level=error msg="stream not found" call=StreamChannelExist channel=0 func=HTTPAPIServerStreamHLSLLM3U8 module=http_hlsll stream=camera.backyard_camera
time="2022-03-24T09:40:12-05:00" level=error msg="stream not found" call=StreamChannelExist channel=0 func=HTTPAPIServerStreamHLSM3U8 module=http_hls stream=camera.backyard_camera
time="2022-03-24T09:41:25-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T09:41:25-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T09:41:25-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T09:41:25-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.backyard_camera
time="2022-03-24T09:41:25-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_west_camera
time="2022-03-24T09:41:25-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.garage_camera
time="2022-03-24T09:41:55-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-24T09:41:55-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-24T09:41:55-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.garage_camera
time="2022-03-24T09:41:59-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T09:41:59-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T09:41:59-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T09:41:59-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T09:41:59-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T09:41:59-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T09:41:59-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.garage_camera
time="2022-03-24T09:41:59-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_west_camera
time="2022-03-24T09:41:59-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.backyard_camera
time="2022-03-24T09:42:02-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T09:42:02-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T09:42:02-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T09:42:02-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T09:42:02-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T09:42:02-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T09:42:02-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_west_camera
time="2022-03-24T09:42:02-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.garage_camera
time="2022-03-24T09:42:02-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.backyard_camera
time="2022-03-24T09:42:11-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.garage_camera
time="2022-03-24T09:42:11-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-24T09:42:11-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-24T09:42:32-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-24T09:42:32-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-24T09:42:32-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.garage_camera
time="2022-03-24T09:46:02-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T09:46:02-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T09:46:02-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T09:46:02-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T09:46:02-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T09:46:02-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T09:46:02-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.backyard_camera
time="2022-03-24T09:46:02-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_west_camera
time="2022-03-24T09:46:02-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.garage_camera
time="2022-03-24T09:46:03-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T09:46:03-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T09:46:03-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T09:46:03-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T09:46:03-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T09:46:03-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T09:46:03-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.garage_camera
time="2022-03-24T09:46:03-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.backyard_camera
time="2022-03-24T09:46:03-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_west_camera
time="2022-03-24T09:46:05-05:00" level=error msg="stream not found" call=HLSMuxerM3U8 channel=0 func=HTTPAPIServerStreamHLSLLM3U8 module=http_hlsll stream=camera.driveway_west_camera
time="2022-03-24T09:46:12-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamMSE module=http_mse stream=camera.driveway_west_camera
time="2022-03-24T09:46:12-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-24T09:46:12-05:00" level=error msg="read tcp 192.168.1.41:8083->192.168.1.100:58805: use of closed network connection" call=Receive channel=0 func=HTTPAPIServerStreamMSE module=http_mse stream=camera.driveway_west_camera
time="2022-03-24T09:46:12-05:00" level=error msg="<nil>" call=Close channel=0 func=HTTPAPIServerStreamMSE module=http_mse stream=camera.driveway_west_camera
time="2022-03-24T09:46:12-05:00" level=info msg="Client Full Exit"
time="2022-03-24T09:46:12-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-24T09:46:13-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.garage_camera
time="2022-03-24T09:46:13-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-24T09:46:34-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.garage_camera
time="2022-03-24T09:46:34-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-24T09:46:34-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-24T09:53:10-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T09:53:10-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T09:53:10-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T09:53:10-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T09:53:10-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T09:53:10-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T09:53:10-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_west_camera
time="2022-03-24T09:53:10-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.backyard_camera
time="2022-03-24T09:53:10-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.garage_camera
time="2022-03-24T09:53:11-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T09:53:11-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T09:53:11-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T09:53:11-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T09:53:11-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T09:53:11-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T09:53:11-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.garage_camera
time="2022-03-24T09:53:11-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_west_camera
time="2022-03-24T09:53:11-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.backyard_camera
time="2022-03-24T09:53:20-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-24T09:53:20-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.garage_camera
time="2022-03-24T09:53:20-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-24T09:53:41-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-24T09:53:41-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.garage_camera
time="2022-03-24T09:53:41-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-24T10:07:22-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera

Hi, the thing here to focus on is the error from the config entry first (you listed like 3 or 4 issues so letā€™s narrow down to one) and getting the streams that do work in the add-on working in home assistant. Home assistant canā€™t connect to the integration so itā€™s not working in home assistant.

To confirm: This is running as an add-on or as a standalone container? If add-on: Did you set up the integration yourself or was it auto discovered?

The add-on typicality runs on the host network but maybe trying http://127.0.0.1:8083 could work if home assistant canā€™t talk to itā€™s network ip for some reason. The ideal option is to use auto discovery, so you can remove the integration, restart, make sure the add-on is started, and let home assistant suggest to configure, then it will use the correct host:port which may not necessarily be the same host port you use from your own browser.

@allenporter I am not familiar with all the terms however I installed the HA image with its own OS and added the webRTC addon. I believe I had installed the integration myself however I just removed it and after a reboot it was in my list of integrations. I hit the Configure button and clicked through prompts (I was not asked for any settings).

3 cameras show up as they are the only ones I set to ā€œliveā€ in a testing dashboard view. However, the webRTC feed does not work on any of them. I added set another camera to live and it automatically was added to my list of streams.

I am also seeing multiple instances of this error in my Supervisor logs. I believe they vanish when I disable webRTC addon but am not certain.

22-03-24 10:41:17 ERROR (MainThread) [asyncio] Task exception was never retrieved
future: <Task finished name='Task-20282' coro=<Scheduler._run_task.<locals>._wrap_task() done, defined at /usr/src/supervisor/supervisor/misc/scheduler.py:58> exception=AttributeError("'NoneType' object has no attribute 'get'")>
Traceback (most recent call last):
  File "/usr/src/supervisor/supervisor/misc/scheduler.py", line 62, in _wrap_task
    await task.coro_callback()
  File "/usr/src/supervisor/supervisor/misc/tasks.py", line 417, in _watchdog_addon_application
    if addon.in_progress or await addon.watchdog_application():
  File "/usr/src/supervisor/supervisor/addons/addon.py", line 473, in watchdog_application
    port = self.ports.get(f"{t_port}/tcp", t_port)
AttributeError: 'NoneType' object has no attribute 'get'

Edit: If I click on Open Web UI it now fails as it tries to load my Nabu Casa URL with 8083 port appended to it.

Edit2: The web UI is however still accessible from the HA IP:8083 (internal network IP)

Edit 3: I returned to my computer after a while and refreshed the dashboard where the webRTC feeds should display, and noticed this in the logs:

time="2022-03-24T13:01:42-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T13:01:42-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T13:01:43-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T13:01:43-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_east_camera
time="2022-03-24T13:01:43-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T13:01:43-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-24T13:01:43-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_east_camera
time="2022-03-24T13:01:43-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T13:01:43-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-24T13:01:43-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-24T13:01:43-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_west_camera
time="2022-03-24T13:01:43-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.garage_camera
time="2022-03-24T13:01:43-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_east_camera
time="2022-03-24T13:01:43-05:00" level=error msg="Stream error restart stream Camera send statusRTSP/1.0 404 Not Found" call=Restart
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0xb9b686]
goroutine 702 [running]:
main.(*Segment).WritePacket(0x0, 0xc00342c640)
	/workspace/hlsSegment.go:44 +0x26
main.(*MuxerHLS).WritePacket(0xc00254a600, 0xc00342c640)
	/workspace/hlsMuxer.go:62 +0x1bd
main.(*StorageST).HlsMuxerWritePacket(0xc000512680, 0xc000b0a94d, 0x1b, 0x12b73c0, 0x1, 0xc00342c640)
	/workspace/storageStreamChannel.go:377 +0x205
main.StreamServerRunStream(0xc000b0a94d, 0x1b, 0x12b73c0, 0x1, 0xc00bfddc30, 0x0, 0x0, 0x0)
	/workspace/streamCore.go:173 +0xb09
main.StreamServerRunStreamDo(0xc000b0a94d, 0x1b, 0x12b73c0, 0x1)
	/workspace/streamCore.go:43 +0x4fa
created by main.(*StorageST).StreamEdit
	/workspace/storageStream.go:65 +0x5ff
[cont-finish.d] executing container finish scripts...
[cont-finish.d] done.
[s6-finish] waiting for services.
[s6-finish] sending all processes the TERM signal.
[s6-finish] sending all processes the KILL signal and exiting.

Hello @allenporter any idea on my question why the Nest Hello shows video but any movement and the video feed goes pixelated.

Thanks

Seems like the supervisor log issue is caused because the Watchdog setting is enabled: Supervisor errors Ā· Issue #47 Ā· allenporter/stream-addons Ā· GitHub ā€“ i think its because this doesnā€™t use a standard port because its on host network, and uses a separate port configuration method.

Letā€™s again focus on the error logs from the integration only, and ignore things like supervisor errors for a moment. Did the integration setup properly on the home assistant side? Does that crash happen immediately the first time a request is made or hours later?

Hi. I have a Nest Hello video doorbell and never noticed this before. My doorbell sits with no movement as you can imagine. I just decided to fire up and test this out and saw what you are talking about: it looked like the predator or something. Want to file an issue at GitHub - deepch/RTSPtoWeb: RTSP Stream to WebBrowser ? If you record a screen capture of it happening it could likely help show the issue.

I disabled watchdog and it appears to have fixed that error.

I setup another instance of HASS running on an RPI4 w/ SSD. I added the add-on and after configuring the generic cameras integration, I let HA offer to install the integration. Once installed the web UI showed the cameras but the webRTC feed is black for all of them.

Could there be an issue with my network setup or with my Hikvision NVR?

As for that crash, it was the first time I saw it, but I also donā€™t monitor at the logs unless I am trying to fix something.

The logs on the RPI system seem to say that the cameras are offline. Is there some protocol / access rights / etc that I need to enable / set up on the NVR?

time="2022-03-25T00:18:51-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.entrance_camera
time="2022-03-25T00:18:51-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_east_camera
time="2022-03-25T00:18:58-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-25T00:18:58-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-25T00:18:58-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.backyard_camera
time="2022-03-25T00:18:59-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-25T00:18:59-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-25T00:18:59-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_east_camera
time="2022-03-25T00:18:59-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.entrance_camera
time="2022-03-25T00:19:01-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-25T00:19:01-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.entrance_camera
time="2022-03-25T00:19:01-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_east_camera
time="2022-03-25T00:19:01-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-25T00:19:06-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-25T00:19:06-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-25T00:19:06-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.garage_camera
time="2022-03-25T00:19:08-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-25T00:19:16-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-25T00:19:16-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-25T00:19:16-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_east_camera
time="2022-03-25T00:19:16-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.entrance_camera
time="2022-03-25T00:19:16-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-25T00:19:16-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-25T00:19:16-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_east_camera
time="2022-03-25T00:19:16-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.entrance_camera
time="2022-03-25T00:19:16-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.entrance_camera
time="2022-03-25T00:19:16-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.backyard_camera
time="2022-03-25T00:19:16-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_east_camera
time="2022-03-25T00:19:16-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_west_camera
time="2022-03-25T00:19:18-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-25T00:19:18-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-25T00:19:18-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_east_camera
time="2022-03-25T00:19:18-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-25T00:19:18-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.entrance_camera
time="2022-03-25T00:19:18-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.entrance_camera
time="2022-03-25T00:19:18-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_east_camera
time="2022-03-25T00:19:18-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-25T00:19:18-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_east_camera
time="2022-03-25T00:19:18-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.backyard_camera
time="2022-03-25T00:19:18-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.entrance_camera
time="2022-03-25T00:19:18-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_west_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_east_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_east_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.entrance_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.entrance_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.backyard_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_west_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_east_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.entrance_camera
time="2022-03-25T00:19:21-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.garage_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.backyard_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_east_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_east_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.entrance_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.entrance_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.driveway_west_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Run stream" call=Run channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Stream exit by signal or not client" call=StreamServerRunStream channel=0 func=StreamServerRunStreamDo module=core stream=camera.garage_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_east_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.backyard_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.driveway_west_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.garage_camera
time="2022-03-25T00:19:23-05:00" level=info msg="Success connection RTSP" call=Start channel=0 func=StreamServerRunStream module=core stream=camera.entrance_camera
time="2022-03-25T00:19:25-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.entrance_camera
time="2022-03-25T00:19:25-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-25T00:19:25-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-25T00:19:26-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_east_camera
time="2022-03-25T00:19:27-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-25T00:19:27-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-25T00:19:27-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.entrance_camera
time="2022-03-25T00:19:28-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_east_camera
time="2022-03-25T00:19:30-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-25T00:19:31-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_east_camera
time="2022-03-25T00:19:31-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-25T00:19:31-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.entrance_camera
time="2022-03-25T00:19:31-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.garage_camera
time="2022-03-25T00:19:32-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.entrance_camera
time="2022-03-25T00:19:32-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-25T00:19:32-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-25T00:19:33-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_east_camera
time="2022-03-25T00:19:33-05:00" level=error msg="stream no video" call=ErrorStreamNoVideo channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.garage_camera
time="2022-03-25T00:19:53-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.backyard_camera
time="2022-03-25T00:19:53-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_east_camera
time="2022-03-25T00:19:53-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.entrance_camera
time="2022-03-25T00:19:53-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_west_camera
time="2022-03-25T00:19:53-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.garage_camera
time="2022-03-25T00:20:47-05:00" level=error msg=EOF call=Receive channel=0 func=HTTPAPIServerStreamMSE module=http_mse stream=camera.driveway_east_camera
time="2022-03-25T00:20:47-05:00" level=error msg="Client Reader Exit" call=controlExit channel=0 func=HTTPAPIServerStreamMSE module=http_mse stream=camera.driveway_east_camera
time="2022-03-25T00:20:47-05:00" level=error msg="<nil>" call=Close channel=0 func=HTTPAPIServerStreamMSE module=http_mse stream=camera.driveway_east_camera
time="2022-03-25T00:20:47-05:00" level=info msg="Client Full Exit"
time="2022-03-25T00:21:14-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.driveway_east_camera
time="2022-03-25T00:21:22-05:00" level=error msg="WebRTC Client Offline" call=WritePacket channel=0 func=HTTPAPIServerStreamWebRTC module=http_webrtc stream=camera.garage_camera

I added one of the cameras skipping the NVR and I have the same issueā€¦ no webRTC feed.

While looking at the various camera feeds in the webRTC web UI of the RPI system, I believe it crashed again as the browser could no longer load the UI. I was noticing that the camera configured skipping the NVR was performing poorly compared to when it is via the NVR. HLSLL was very dark and not loading, while HLS and MSE looked fine. After starting the addon again all is back to normal on that camera (except no webRTC feed):

goroutine 12371 [select]:
github.com/pion/ice/v2.(*Agent).connectivityChecks(0x4001e4b500)
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/agent.go:538 +0x138
created by github.com/pion/ice/v2.(*Agent).startConnectivityChecks.func1
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/agent.go:479 +0x14c
goroutine 12367 [select, 3 minutes]:
context.propagateCancel.func1(0x977170, 0x4006c1ad80, 0x96e020, 0x40087fef80)
	/usr/lib/go/src/context/context.go:279 +0x8c
created by context.propagateCancel
	/usr/lib/go/src/context/context.go:278 +0x254
goroutine 12317 [select]:
github.com/pion/ice/v2.(*Agent).taskLoop(0x400368e300)
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/agent.go:222 +0x100
created by github.com/pion/ice/v2.NewAgent
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/agent.go:356 +0x774
goroutine 12318 [chan receive, 3 minutes]:
github.com/pion/ice/v2.(*Agent).startOnConnectionStateChangeRoutine.func1(0x400368e300)
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/agent.go:412 +0x4c
created by github.com/pion/ice/v2.(*Agent).startOnConnectionStateChangeRoutine
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/agent.go:408 +0x3c
goroutine 12319 [select, 2 minutes]:
github.com/pion/ice/v2.(*Agent).startOnConnectionStateChangeRoutine.func2(0x400368e300)
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/agent.go:421 +0x74
created by github.com/pion/ice/v2.(*Agent).startOnConnectionStateChangeRoutine
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/agent.go:419 +0x5c
goroutine 12391 [select]:
github.com/pion/interceptor/pkg/nack.(*GeneratorInterceptor).loop(0x400439c460, 0x967b48, 0x4007e839d0)
	/root/go/pkg/mod/github.com/pion/[email protected]/pkg/nack/generator_interceptor.go:139 +0x138
created by github.com/pion/interceptor/pkg/nack.(*GeneratorInterceptor).BindRTCPWriter
	/root/go/pkg/mod/github.com/pion/[email protected]/pkg/nack/generator_interceptor.go:74 +0x104
goroutine 12320 [select, 3 minutes]:
context.propagateCancel.func1(0x977170, 0x4001d38540, 0x96e020, 0x400581d400)
	/usr/lib/go/src/context/context.go:279 +0x8c
created by context.propagateCancel
	/usr/lib/go/src/context/context.go:278 +0x254
goroutine 12377 [chan receive, 3 minutes]:
github.com/pion/ice/v2.(*Agent).startOnConnectionStateChangeRoutine.func1(0x40024f2000)
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/agent.go:412 +0x4c
created by github.com/pion/ice/v2.(*Agent).startOnConnectionStateChangeRoutine
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/agent.go:408 +0x3c
goroutine 12392 [select]:
github.com/pion/interceptor/pkg/report.(*ReceiverInterceptor).loop(0x40001aa000, 0x967b48, 0x4007e839d0)
	/root/go/pkg/mod/github.com/pion/[email protected]/pkg/report/receiver_interceptor.go:97 +0x148
created by github.com/pion/interceptor/pkg/report.(*ReceiverInterceptor).BindRTCPWriter
	/root/go/pkg/mod/github.com/pion/[email protected]/pkg/report/receiver_interceptor.go:86 +0x104
goroutine 12393 [select]:
github.com/pion/interceptor/pkg/report.(*SenderInterceptor).loop(0x40001aa070, 0x967b48, 0x4007e839d0)
	/root/go/pkg/mod/github.com/pion/[email protected]/pkg/report/sender_interceptor.go:98 +0x148
created by github.com/pion/interceptor/pkg/report.(*SenderInterceptor).BindRTCPWriter
	/root/go/pkg/mod/github.com/pion/[email protected]/pkg/report/sender_interceptor.go:87 +0x104
goroutine 12394 [select]:
github.com/pion/interceptor/pkg/twcc.(*SenderInterceptor).loop(0x4003327b00, 0x967b48, 0x4007e839d0)
	/root/go/pkg/mod/github.com/pion/[email protected]/pkg/twcc/sender_interceptor.go:171 +0xd0
created by github.com/pion/interceptor/pkg/twcc.(*SenderInterceptor).BindRTCPWriter
	/root/go/pkg/mod/github.com/pion/[email protected]/pkg/twcc/sender_interceptor.go:87 +0x170
goroutine 12404 [select, 3 minutes]:
github.com/pion/ice/v2.(*Agent).connect(0x40024f2000, 0x9766b8, 0x4004440440, 0x4004440400, 0x40049b410a, 0x4, 0x40037bee88, 0x18, 0x0, 0x0, ...)
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/transport.go:53 +0xec
github.com/pion/ice/v2.(*Agent).Accept(...)
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/transport.go:21
github.com/pion/webrtc/v3.(*ICETransport).Start(0x4004010960, 0x4003748870, 0x40049b410a, 0x4, 0x40037bee88, 0x18, 0x0, 0x4003ea1ed0, 0x0, 0x0)
	/root/go/pkg/mod/github.com/pion/webrtc/[email protected]/icetransport.go:141 +0x444
github.com/pion/webrtc/v3.(*PeerConnection).startTransports(0x400457d440, 0x2, 0x1, 0x40049b410a, 0x4, 0x40037bee88, 0x18, 0x40047d8e94, 0x5f, 0x40047d8e8c, ...)
	/root/go/pkg/mod/github.com/pion/webrtc/[email protected]/peerconnection.go:2141 +0x8c
github.com/pion/webrtc/v3.(*PeerConnection).SetRemoteDescription.func2()
	/root/go/pkg/mod/github.com/pion/webrtc/[email protected]/peerconnection.go:1177 +0xe8
github.com/pion/webrtc/v3.(*operations).start(0x4004374030)
	/root/go/pkg/mod/github.com/pion/webrtc/[email protected]/operations.go:87 +0x60
created by github.com/pion/webrtc/v3.(*operations).Enqueue
	/root/go/pkg/mod/github.com/pion/webrtc/[email protected]/operations.go:38 +0x178
goroutine 12378 [select, 2 minutes]:
github.com/pion/ice/v2.(*Agent).startOnConnectionStateChangeRoutine.func2(0x40024f2000)
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/agent.go:421 +0x74
created by github.com/pion/ice/v2.(*Agent).startOnConnectionStateChangeRoutine
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/agent.go:419 +0x5c
goroutine 12379 [select]:
github.com/pion/ice/v2.(*Agent).connectivityChecks(0x40024f2000)
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/agent.go:538 +0x138
created by github.com/pion/ice/v2.(*Agent).startConnectivityChecks.func1
	/root/go/pkg/mod/github.com/pion/ice/[email protected]/agent.go:479 +0x14c
goroutine 12406 [select, 3 minutes]:
context.propagateCancel.func1(0x977170, 0x40024d8600, 0x96e020, 0x40043c8500)
	/usr/lib/go/src/context/context.go:279 +0x8c
created by context.propagateCancel
	/usr/lib/go/src/context/context.go:278 +0x254
[s6-finish] sending all processes the KILL signal and exiting.

Hi, glad the integration was able to find the service and that part seems to be working. Consider filing an issue with GitHub - deepch/RTSPtoWeb: RTSP Stream to WebBrowser given it seems like the streams are having issues.

1 Like

Hi @allenporter, again great work on the addon.

However need some clarification because I got several working problem.

  1. Upon installation of the addon the webUI is not reachable accept if I access it via http://IP:8500. My current HA supervised setup are connected via NGINX Proxy that work for all my addon accept this one. WebUI redirecting towards https://mydomain:8500 which is unreachable.

  2. In point 1 problem the integrations still run perfectly for all my Yi and Sonoff Cam and very pleasing sight. However the problem goes to my Reolink expensive Camera which somehow did not work at all. Best generic setting for Reolink is via RMTP which is not supported. Setup on RTSP some how are very slow, glitchy and broken. Maybe somebody who are running Reolink Cam can give some light on fixing the problem.

This is my current setup:

  - platform: ffmpeg
    name: Front Garage Cam
    input: "rtmp://192.168.x.x/bcs/channel0_main.bcs?channel=0&stream=0&user=uname&password=upass"

Try this code but glitchy

  - platform: generic
    name: Reolink Cam
    still_image_url: !secret reolink_cam1_picture
    stream_source: "-rtsp_transport tcp -i rtsp://uname:[email protected]:554/h264Preview_01_main"
  1. Is it possible to run the apps on different docker container other then addon?

#1: Iā€™m not sure I follow exactly, but the addon uses host network so it canā€™t use the add-on ingress settings as far as I know. Iā€™m not familiar with advanced add-on setting here so I donā€™t have any insights

#2: the home assistant integration doesnā€™t currently match rtmp url prefixes discussed above w.r.t. frigate

#3: yes. The home assistant integration can auto discovery the add-on, or can be configured with a url pointed at the standalone server.

1 Like

Iā€™m testing web-to-rtc on different machine running docker. The webRTC working perfectly however when I directed HA to that machine I got error. The only way it working if the webRTC is running as addon.

Any suggestion why? wanna distributed some of the load from main machine.

Hi,
I run RTSPtoWeb I kubernetes and here is my config json inside a k8s configmap: k8s-gitops/configmap.yaml at 13641e717285132bc8106134abe801e4775c88eb Ā· allenporter/k8s-gitops Ā· GitHub

1 Like

Most likely itā€™s the http password which is demo:demo by default. (R.g. http://demo:[email protected]/ would be the default url for the docker container)

Hi @allenporter,

Thank you for all the help and yes its working now. However wondering, have you try running it on https instead of http? I try and docker unable to grab the certificate which Iā€™m not sure how to make it possible since there are no documentation on it. Again thanks for all the help and hopefully you can also help with HTTPS

No, I personally donā€™t use SSL from this as I only have these two seupts (1) using kubernetes ingress to do SSL or (2) using the home assistant OS add-on w/o SSL. Perhaps worth discussing in the upstream project?

This may be a silly question, but I couldnā€™t find the answer anywhere: The frigate lovelace card mentions using the Native RTSPToWeb and RTSPToWebRTC addons, but I just canā€™t figure out how it works. If I create ā€œgenericā€ or ā€œffmpegā€ camera, the stream is converted to webRTC correctly, but none of the frigate lovelace live views seem to use it.

Iā€™ve forced the ā€œlive_providerā€ to ā€œhaā€, but no deal.

Anyone has examples for those?

Thanks

@allenporter After discovering that the webRTC camera feeds worked fine in Edge (I donā€™t use it so I only tested Chrome and FireFox), I realized that webRTC was disabled in both the other browsers. I found out by installing a browser plug in that enables/disables it to prevent your IP from being leaked when you are on a VPN. I then took a look at the settings of PureVPN which is installed on both Chrome and FireFox but not Edge and sure enough there was a default on setting which seems to work even when not connected to the VPN. If I turn that off it works just fine.

Mystery solved! Hope it helps others having my same issue!

Summary: Check webRTC settings in your VPN client regardless of you using it or not when the webRTC camera feeds donā€™t work.

Now I wonder whether turning that off can negate part of the benefit of using a VPNā€¦ as far as I know I only use webRTC in this context.

Edit: Not sure how useful this is but in my digging I ran across this (works in Chrome and shows some info on the webRTC streams):

chrome://webrtc-internals/