diff --git a/docs/docs/configuration/index.md b/docs/docs/configuration/index.md index 80dcd7a6a..c1b87d778 100644 --- a/docs/docs/configuration/index.md +++ b/docs/docs/configuration/index.md @@ -25,36 +25,6 @@ cameras: VSCode (and VSCode addon) supports the JSON schemas which will automatically validate the config. This can be added by adding `# yaml-language-server: $schema=http://frigate_host:5000/api/config/schema.json` to the top of the config file. `frigate_host` being the IP address of Frigate or `ccab4aaf-frigate` if running in the addon. -### Overview of the video pipeline - -The following diagram shows the different processing stages for a video source. Each stage shows the key elements and how they relate to each other. - -```mermaid -%%{init: {"themeVariables": {"edgeLabelBackground": "transparent"}}}%% - -flowchart TD - ClipStore[(Clip\nstore)] - SnapStore[(Snapshot\nstore)] - - subgraph Camera - Stream[Video\nstreams] --> |detect stream|Decode - Decode --> Downscale - end - subgraph Motion - Downscale --> MotionM(Apply\nmotion masks) - MotionM --> MotionD(Motion\ndetection) - end - subgraph Detection - MotionD --> |motion regions| ObjectD(Object\ndetection) - Downscale --> ObjectD - ObjectD --> ObjectZ(Track objects and apply zones) - end - MotionD --> |motion clips|ClipStore - ObjectZ --> |detection clip|ClipStore - Stream -->|continuous record| ClipStore - ObjectZ --> |detection snapshot|SnapStore - -``` ### Full configuration reference :::caution diff --git a/docs/docs/guides/video_pipeline.md b/docs/docs/guides/video_pipeline.md new file mode 100644 index 000000000..dfe489703 --- /dev/null +++ b/docs/docs/guides/video_pipeline.md @@ -0,0 +1,56 @@ +--- +id: video_pipeline +title: The Video Pipeline +--- +Frigate uses a sophisticated video pipeline that starts with the camera feeds and progressively applies transformations to them (e.g. decoding, motion detection, etc.). + +This guide provides an overview to help users put the key Frigate concepts on a map. + +### High level view of the video pipeline + +```mermaid +%%{init: {"themeVariables": {"edgeLabelBackground": "transparent"}}}%% + +flowchart LR + Feed(Feed\nProcessing) --> Decode(Video\ndecoding) + Decode --> Motion(Motion\nDetection) + Motion --> Object(Object\nDetection) + Feed --> Recording(Recording\n&\nVisualization) + Motion --> Recording + Object --> Recording +``` + +### Detailed view of the video pipeline + + +```mermaid +%%{init: {"themeVariables": {"edgeLabelBackground": "transparent"}}}%% + +flowchart TD + ClipStore[(Clip\nstore)] + SnapStore[(Snapshot\nstore)] + + subgraph Camera + MainS[\Main Stream\n/] --> Go2RTC + SubS[\Sub Stream/] -.-> Go2RTC + Go2RTC("Go2RTC\n(optional)") --> Stream + Stream[Video\nstreams] --> |detect stream|Decode(Decode & Downscale) + end + subgraph Motion + Decode --> MotionM(Apply\nmotion masks) + MotionM --> MotionD(Motion\ndetection) + end + subgraph Detection + MotionD --> |motion regions| ObjectD(Object\ndetection) + Decode --> ObjectD + ObjectD --> ObjectZ(Track objects and apply zones) + end + MotionD --> |motion snapshots|BirdsEye + ObjectZ --> |detection snapshot|BirdsEye + + MotionD --> |motion clips|ClipStore + ObjectZ --> |detection clip|ClipStore + Stream -->|continuous record| ClipStore + ObjectZ --> |detection snapshot|SnapStore + +``` \ No newline at end of file diff --git a/docs/sidebars.js b/docs/sidebars.js index 05f24add1..36845c890 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -14,6 +14,7 @@ module.exports = { "guides/ha_network_storage", "guides/stationary_objects", "guides/reverse_proxy", + "guides/video_pipeline", ], Configuration: { "Configuration Files": [