diff --git a/docker/main/Dockerfile b/docker/main/Dockerfile index 7a0351240..2a7d388bc 100644 --- a/docker/main/Dockerfile +++ b/docker/main/Dockerfile @@ -55,7 +55,7 @@ RUN --mount=type=tmpfs,target=/tmp --mount=type=tmpfs,target=/var/cache/apt \ FROM scratch AS go2rtc ARG TARGETARCH WORKDIR /rootfs/usr/local/go2rtc/bin -ADD --link --chmod=755 "https://github.com/AlexxIT/go2rtc/releases/download/v1.9.2/go2rtc_linux_${TARGETARCH}" go2rtc +ADD --link --chmod=755 "https://github.com/AlexxIT/go2rtc/releases/download/v1.9.9/go2rtc_linux_${TARGETARCH}" go2rtc FROM wget AS tempio ARG TARGETARCH diff --git a/docker/main/rootfs/usr/local/go2rtc/create_config.py b/docker/main/rootfs/usr/local/go2rtc/create_config.py index 4fe26775e..30b78e1e1 100644 --- a/docker/main/rootfs/usr/local/go2rtc/create_config.py +++ b/docker/main/rootfs/usr/local/go2rtc/create_config.py @@ -69,10 +69,6 @@ elif go2rtc_config["log"].get("format") is None: if go2rtc_config.get("webrtc") is None: go2rtc_config["webrtc"] = {} -# go2rtc should listen on 8555 tcp & udp by default -if go2rtc_config["webrtc"].get("listen") is None: - go2rtc_config["webrtc"]["listen"] = ":8555" - if go2rtc_config["webrtc"].get("candidates") is None: default_candidates = [] # use internal candidate if it was discovered when running through the add-on @@ -84,15 +80,6 @@ if go2rtc_config["webrtc"].get("candidates") is None: go2rtc_config["webrtc"]["candidates"] = default_candidates -# This prevents WebRTC from attempting to establish a connection to the internal -# docker IPs which are not accessible from outside the container itself and just -# wastes time during negotiation. Note that this is only necessary because -# Frigate container doesn't run in host network mode. -if go2rtc_config["webrtc"].get("filter") is None: - go2rtc_config["webrtc"]["filter"] = {"candidates": []} -elif go2rtc_config["webrtc"]["filter"].get("candidates") is None: - go2rtc_config["webrtc"]["filter"]["candidates"] = [] - # sets default RTSP response to be equivalent to ?video=h264,h265&audio=aac # this means user does not need to specify audio codec when using restream # as source for frigate and the integration supports HLS playback diff --git a/docs/docs/configuration/advanced.md b/docs/docs/configuration/advanced.md index b037c0768..c889d2d26 100644 --- a/docs/docs/configuration/advanced.md +++ b/docs/docs/configuration/advanced.md @@ -186,7 +186,7 @@ To do this: ### Custom go2rtc version -Frigate currently includes go2rtc v1.9.2, there may be certain cases where you want to run a different version of go2rtc. +Frigate currently includes go2rtc v1.9.9, there may be certain cases where you want to run a different version of go2rtc. To do this: diff --git a/docs/docs/configuration/camera_specific.md b/docs/docs/configuration/camera_specific.md index fb4ce5714..0cd1efd47 100644 --- a/docs/docs/configuration/camera_specific.md +++ b/docs/docs/configuration/camera_specific.md @@ -219,7 +219,7 @@ go2rtc: - rtspx://192.168.1.1:7441/abcdefghijk ``` -[See the go2rtc docs for more information](https://github.com/AlexxIT/go2rtc/tree/v1.9.2#source-rtsp) +[See the go2rtc docs for more information](https://github.com/AlexxIT/go2rtc/tree/v1.9.9#source-rtsp) In the Unifi 2.0 update Unifi Protect Cameras had a change in audio sample rate which causes issues for ffmpeg. The input rate needs to be set for record if used directly with unifi protect. diff --git a/docs/docs/configuration/reference.md b/docs/docs/configuration/reference.md index 37884259a..9a880aade 100644 --- a/docs/docs/configuration/reference.md +++ b/docs/docs/configuration/reference.md @@ -591,7 +591,7 @@ genai: person: "My special person prompt." # Optional: Restream configuration -# Uses https://github.com/AlexxIT/go2rtc (v1.9.2) +# Uses https://github.com/AlexxIT/go2rtc (v1.9.9) # NOTE: The default go2rtc API port (1984) must be used, # changing this port for the integrated go2rtc instance is not supported. go2rtc: diff --git a/docs/docs/configuration/restream.md b/docs/docs/configuration/restream.md index 0db4ded80..288dc8fd9 100644 --- a/docs/docs/configuration/restream.md +++ b/docs/docs/configuration/restream.md @@ -7,7 +7,7 @@ title: Restream 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. -Frigate uses [go2rtc](https://github.com/AlexxIT/go2rtc/tree/v1.9.2) to provide its restream and MSE/WebRTC capabilities. The go2rtc config is hosted at the `go2rtc` in the config, see [go2rtc docs](https://github.com/AlexxIT/go2rtc/tree/v1.9.2#configuration) for more advanced configurations and features. +Frigate uses [go2rtc](https://github.com/AlexxIT/go2rtc/tree/v1.9.9) to provide its restream and MSE/WebRTC capabilities. The go2rtc config is hosted at the `go2rtc` in the config, see [go2rtc docs](https://github.com/AlexxIT/go2rtc/tree/v1.9.9#configuration) for more advanced configurations and features. :::note @@ -134,7 +134,7 @@ cameras: ## Handling Complex Passwords -go2rtc expects URL-encoded passwords in the config, [urlencoder.org](https://urlencoder.org) can be used for this purpose. +go2rtc expects URL-encoded passwords in the config, [urlencoder.org](https://urlencoder.org) can be used for this purpose. For example: @@ -156,7 +156,7 @@ See [this comment(https://github.com/AlexxIT/go2rtc/issues/1217#issuecomment-224 ## Advanced Restream Configurations -The [exec](https://github.com/AlexxIT/go2rtc/tree/v1.9.2#source-exec) source in go2rtc can be used for custom ffmpeg commands. An example is below: +The [exec](https://github.com/AlexxIT/go2rtc/tree/v1.9.9#source-exec) source in go2rtc can be used for custom ffmpeg commands. An example is below: NOTE: The output will need to be passed with two curly braces `{{output}}` diff --git a/docs/docs/guides/configuring_go2rtc.md b/docs/docs/guides/configuring_go2rtc.md index 1a61fd0c5..3b8a8af1f 100644 --- a/docs/docs/guides/configuring_go2rtc.md +++ b/docs/docs/guides/configuring_go2rtc.md @@ -13,7 +13,7 @@ Use of the bundled go2rtc is optional. You can still configure FFmpeg to connect # Setup a go2rtc stream -First, you will want to configure go2rtc to connect to your camera stream by adding the stream you want to use for live view in your Frigate config file. Avoid changing any other parts of your config at this step. Note that go2rtc supports [many different stream types](https://github.com/AlexxIT/go2rtc/tree/v1.9.2#module-streams), not just rtsp. +First, you will want to configure go2rtc to connect to your camera stream by adding the stream you want to use for live view in your Frigate config file. Avoid changing any other parts of your config at this step. Note that go2rtc supports [many different stream types](https://github.com/AlexxIT/go2rtc/tree/v1.9.9#module-streams), not just rtsp. :::tip @@ -32,69 +32,74 @@ go2rtc: After adding this to the config, restart Frigate and try to watch the live stream for a single camera by clicking on it from the dashboard. It should look much clearer and more fluent than the original jsmpeg stream. - ### What if my video doesn't play? - Check Logs: - - Access the go2rtc logs in the Frigate UI under Logs in the sidebar. - - If go2rtc is having difficulty connecting to your camera, you should see some error messages in the log. + + - Access the go2rtc logs in the Frigate UI under Logs in the sidebar. + - If go2rtc is having difficulty connecting to your camera, you should see some error messages in the log. - Check go2rtc Web Interface: if you don't see any errors in the logs, try viewing the camera through go2rtc's web interface. - - Navigate to port 1984 in your browser to access go2rtc's web interface. - - If using Frigate through Home Assistant, enable the web interface at port 1984. - - If using Docker, forward port 1984 before accessing the web interface. - - Click `stream` for the specific camera to see if the camera's stream is being received. + + - Navigate to port 1984 in your browser to access go2rtc's web interface. + - If using Frigate through Home Assistant, enable the web interface at port 1984. + - If using Docker, forward port 1984 before accessing the web interface. + - Click `stream` for the specific camera to see if the camera's stream is being received. - Check Video Codec: - - If the camera stream works in go2rtc but not in your browser, the video codec might be unsupported. - - If using H265, switch to H264. Refer to [video codec compatibility](https://github.com/AlexxIT/go2rtc/tree/v1.9.2#codecs-madness) in go2rtc documentation. - - If unable to switch from H265 to H264, or if the stream format is different (e.g., MJPEG), re-encode the video using [FFmpeg parameters](https://github.com/AlexxIT/go2rtc/tree/v1.9.2#source-ffmpeg). It supports rotating and resizing video feeds and hardware acceleration. Keep in mind that transcoding video from one format to another is a resource intensive task and you may be better off using the built-in jsmpeg view. - ```yaml - go2rtc: - streams: - back: - - rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2 - - "ffmpeg:back#video=h264#hardware" - ``` -- Switch to FFmpeg if needed: - - Some camera streams may need to use the ffmpeg module in go2rtc. This has the downside of slower startup times, but has compatibility with more stream types. - ```yaml - go2rtc: - streams: - back: - - ffmpeg:rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2 - ``` + - If the camera stream works in go2rtc but not in your browser, the video codec might be unsupported. + - If using H265, switch to H264. Refer to [video codec compatibility](https://github.com/AlexxIT/go2rtc/tree/v1.9.9#codecs-madness) in go2rtc documentation. + - If unable to switch from H265 to H264, or if the stream format is different (e.g., MJPEG), re-encode the video using [FFmpeg parameters](https://github.com/AlexxIT/go2rtc/tree/v1.9.9#source-ffmpeg). It supports rotating and resizing video feeds and hardware acceleration. Keep in mind that transcoding video from one format to another is a resource intensive task and you may be better off using the built-in jsmpeg view. + ```yaml + go2rtc: + streams: + back: + - rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2 + - "ffmpeg:back#video=h264#hardware" + ``` - - If you can see the video but do not have audio, this is most likely because your camera's audio stream codec is not AAC. - - If possible, update your camera's audio settings to AAC in your camera's firmware. - - If your cameras do not support AAC audio, you will need to tell go2rtc to re-encode the audio to AAC on demand if you want audio. This will use additional CPU and add some latency. To add AAC audio on demand, you can update your go2rtc config as follows: - ```yaml - go2rtc: - streams: - back: - - rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2 - - "ffmpeg:back#audio=aac" - ``` +- Switch to FFmpeg if needed: - If you need to convert **both** the audio and video streams, you can use the following: + - Some camera streams may need to use the ffmpeg module in go2rtc. This has the downside of slower startup times, but has compatibility with more stream types. - ```yaml - go2rtc: - streams: - back: - - rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2 - - "ffmpeg:back#video=h264#audio=aac#hardware" - ``` + ```yaml + go2rtc: + streams: + back: + - ffmpeg:rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2 + ``` - When using the ffmpeg module, you would add AAC audio like this: + - If you can see the video but do not have audio, this is most likely because your camera's audio stream codec is not AAC. + - If possible, update your camera's audio settings to AAC in your camera's firmware. + - If your cameras do not support AAC audio, you will need to tell go2rtc to re-encode the audio to AAC on demand if you want audio. This will use additional CPU and add some latency. To add AAC audio on demand, you can update your go2rtc config as follows: - ```yaml - go2rtc: - streams: - back: - - "ffmpeg:rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2#video=copy#audio=copy#audio=aac#hardware" - ``` + ```yaml + go2rtc: + streams: + back: + - rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2 + - "ffmpeg:back#audio=aac" + ``` + + If you need to convert **both** the audio and video streams, you can use the following: + + ```yaml + go2rtc: + streams: + back: + - rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2 + - "ffmpeg:back#video=h264#audio=aac#hardware" + ``` + + When using the ffmpeg module, you would add AAC audio like this: + + ```yaml + go2rtc: + streams: + back: + - "ffmpeg:rtsp://user:password@10.0.10.10:554/cam/realmonitor?channel=1&subtype=2#video=copy#audio=copy#audio=aac#hardware" + ``` :::warning diff --git a/docs/sidebars.ts b/docs/sidebars.ts index 0c25e4eb7..bffb54349 100644 --- a/docs/sidebars.ts +++ b/docs/sidebars.ts @@ -1,106 +1,106 @@ -import type { SidebarsConfig, } from '@docusaurus/plugin-content-docs'; -import { PropSidebarItemLink } from '@docusaurus/plugin-content-docs'; -import frigateHttpApiSidebar from './docs/integrations/api/sidebar'; +import type { SidebarsConfig } from "@docusaurus/plugin-content-docs"; +import { PropSidebarItemLink } from "@docusaurus/plugin-content-docs"; +import frigateHttpApiSidebar from "./docs/integrations/api/sidebar"; const sidebars: SidebarsConfig = { docs: { Frigate: [ - 'frigate/index', - 'frigate/hardware', - 'frigate/installation', - 'frigate/camera_setup', - 'frigate/video_pipeline', - 'frigate/glossary', + "frigate/index", + "frigate/hardware", + "frigate/installation", + "frigate/camera_setup", + "frigate/video_pipeline", + "frigate/glossary", ], Guides: [ - 'guides/getting_started', - 'guides/configuring_go2rtc', - 'guides/ha_notifications', - 'guides/ha_network_storage', - 'guides/reverse_proxy', + "guides/getting_started", + "guides/configuring_go2rtc", + "guides/ha_notifications", + "guides/ha_network_storage", + "guides/reverse_proxy", ], Configuration: { - 'Configuration Files': [ - 'configuration/index', - 'configuration/reference', + "Configuration Files": [ + "configuration/index", + "configuration/reference", { - type: 'link', - label: 'Go2RTC Configuration Reference', - href: 'https://github.com/AlexxIT/go2rtc/tree/v1.9.2#configuration', + type: "link", + label: "Go2RTC Configuration Reference", + href: "https://github.com/AlexxIT/go2rtc/tree/v1.9.9#configuration", } as PropSidebarItemLink, ], Detectors: [ - 'configuration/object_detectors', - 'configuration/audio_detectors', + "configuration/object_detectors", + "configuration/audio_detectors", ], Classifiers: [ - 'configuration/semantic_search', - 'configuration/genai', - 'configuration/face_recognition', - 'configuration/license_plate_recognition', + "configuration/semantic_search", + "configuration/genai", + "configuration/face_recognition", + "configuration/license_plate_recognition", ], Cameras: [ - 'configuration/cameras', - 'configuration/review', - 'configuration/record', - 'configuration/snapshots', - 'configuration/motion_detection', - 'configuration/birdseye', - 'configuration/live', - 'configuration/restream', - 'configuration/autotracking', - 'configuration/camera_specific', + "configuration/cameras", + "configuration/review", + "configuration/record", + "configuration/snapshots", + "configuration/motion_detection", + "configuration/birdseye", + "configuration/live", + "configuration/restream", + "configuration/autotracking", + "configuration/camera_specific", ], Objects: [ - 'configuration/object_filters', - 'configuration/masks', - 'configuration/zones', - 'configuration/objects', - 'configuration/stationary_objects', + "configuration/object_filters", + "configuration/masks", + "configuration/zones", + "configuration/objects", + "configuration/stationary_objects", ], - 'Extra Configuration': [ - 'configuration/authentication', - 'configuration/notifications', - 'configuration/hardware_acceleration', - 'configuration/ffmpeg_presets', + "Extra Configuration": [ + "configuration/authentication", + "configuration/notifications", + "configuration/hardware_acceleration", + "configuration/ffmpeg_presets", "configuration/pwa", - 'configuration/tls', - 'configuration/advanced', + "configuration/tls", + "configuration/advanced", ], }, Integrations: [ - 'integrations/plus', - 'integrations/home-assistant', + "integrations/plus", + "integrations/home-assistant", // This is the HTTP API generated by OpenAPI { - type: 'category', - label: 'HTTP API', + type: "category", + label: "HTTP API", link: { - type: 'generated-index', - title: 'Frigate HTTP API', - description: 'HTTP API', - slug: '/integrations/api/frigate-http-api', + type: "generated-index", + title: "Frigate HTTP API", + description: "HTTP API", + slug: "/integrations/api/frigate-http-api", }, items: frigateHttpApiSidebar, }, - 'integrations/mqtt', - 'configuration/metrics', - 'integrations/third_party_extensions', + "integrations/mqtt", + "configuration/metrics", + "integrations/third_party_extensions", ], - 'Frigate+': [ - 'plus/index', - 'plus/first_model', - 'plus/improving_model', - 'plus/faq', + "Frigate+": [ + "plus/index", + "plus/first_model", + "plus/improving_model", + "plus/faq", ], Troubleshooting: [ - 'troubleshooting/faqs', - 'troubleshooting/recordings', - 'troubleshooting/edgetpu', + "troubleshooting/faqs", + "troubleshooting/recordings", + "troubleshooting/edgetpu", ], Development: [ - 'development/contributing', - 'development/contributing-boards', + "development/contributing", + "development/contributing-boards", ], }, };