From a04fa105efec5eaeaac06d67142743727fbce3a2 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Sat, 19 Nov 2022 06:15:20 -0700 Subject: [PATCH] Fix internal restream error and add docs for reducing camera connections (#4431) * Start restream before detection * Add docs explaining how to reduce connections to the camera * Fix typos for consistency * Add link to other part of doc for readability --- docs/docs/configuration/restream.md | 44 ++++++++++++++++++++++++++++- frigate/app.py | 2 +- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/docs/docs/configuration/restream.md b/docs/docs/configuration/restream.md index b11f0ca92..1f21e8fdc 100644 --- a/docs/docs/configuration/restream.md +++ b/docs/docs/configuration/restream.md @@ -5,8 +5,50 @@ title: Restream ### RTSP -Frigate can restream your video feed as an RTSP feed for other applications such as Home Assistant to utilize it at `rtsp://:8554/`. Port 8554 must be open. This allows you to use a video feed for detection in frigate and Home Assistant live view at the same time without having to make two separate connections to the camera. The video feed is copied from the original video feed directly to avoid re-encoding. This feed does not include any annotation by Frigate. +Frigate can restream your video feed as an RTSP feed for other applications such as Home Assistant to utilize it at `rtsp://:8554/`. Port 8554 must be open. [This allows you to use a video feed for detection in frigate and Home Assistant live view at the same time without having to make two separate connections to the camera](#reduce-connections-to-camera). The video feed is copied from the original video feed directly to avoid re-encoding. This feed does not include any annotation by Frigate. ### RTMP (Deprecated) In previous Frigate versions RTMP was used for re-streaming. RTMP has disadvantages however including being incompatible with H.265, high bitrates, and certain audio codecs. RTMP is deprecated and it is recommended to move to the new restream role. + +## Reduce Connections To Camera + +Some cameras only support one active connection or you may just want to have a single connection open to the camera. The RTSP restream allows this to be possible. + +### With Single Stream + +One connection is made to the camera. One for the restream, `detect` and `record` connect to the restream. + +```yaml +cameras: + test_cam: + ffmpeg: + inputs: + - path: rtsp://localhost:8554/test_cam # <--- the name here must match the name of the camera + roles: + - record + - detect + - path: rtsp://192.168.1.5:554/live0 # <--- 1 connection to camera stream + roles: + - restream +``` + +### With Sub Stream + +Two connections are made to the camera. One for the sub stream, one for the restream, `record` connects to the restream. + +```yaml +cameras: + test_cam: + ffmpeg: + inputs: + - path: rtsp://localhost:8554/test_cam # <--- the name here must match the name of the camera + roles: + - record + - path: rtsp://192.168.1.5:554/stream # <--- camera high res stream + roles: + - restream + - path: rtsp://192.168.1.5:554/substream # <--- camera sub stream + roles: + - detect +``` diff --git a/frigate/app.py b/frigate/app.py index 0f8acce66..16cbf8735 100644 --- a/frigate/app.py +++ b/frigate/app.py @@ -355,6 +355,7 @@ class FrigateApp: print(e) self.log_process.terminate() sys.exit(1) + self.init_restream() self.start_detectors() self.start_video_output_processor() self.start_detected_frames_processor() @@ -362,7 +363,6 @@ class FrigateApp: self.start_camera_capture_processes() self.init_stats() self.init_web_server() - self.init_restream() self.start_mqtt_relay() self.start_event_processor() self.start_event_cleanup()