blakeblackshear.frigate/c377a04b.4cc6566e.js

1 line
5.1 KiB
JavaScript
Raw Normal View History

(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{172:function(e,t,r){"use strict";r.r(t),t.default=r.p+"assets/images/media_browser-1a855eaa41d4cf33b7dbc6586cb12a6d.png"},173:function(e,t,r){"use strict";r.r(t),t.default=r.p+"assets/images/notification-b2414ed687bb4ab92b9dfaab95a5a33c.png"},91:function(e,t,r){"use strict";r.r(t),r.d(t,"frontMatter",(function(){return i})),r.d(t,"metadata",(function(){return c})),r.d(t,"toc",(function(){return s})),r.d(t,"default",(function(){return u}));var n=r(3),o=r(7),a=(r(0),r(98)),i={id:"index",title:"Frigate",sidebar_label:"Features",slug:"/"},c={unversionedId:"index",id:"index",isDocsHomePage:!1,title:"Frigate",description:"A complete and local NVR designed for HomeAssistant with AI object detection. Uses OpenCV and Tensorflow to perform realtime object detection locally for IP cameras.",source:"@site/docs/index.md",slug:"/",permalink:"/frigate/",editUrl:"https://github.com/blakeblackshear/frigate/edit/master/docs/docs/index.md",version:"current",sidebar_label:"Features",sidebar:"docs",next:{title:"How Frigate Works",permalink:"/frigate/how-it-works"}},s=[{value:"Screenshots",id:"screenshots",children:[]}],l={toc:s};function u(e){var t=e.components,i=Object(o.a)(e,["components"]);return Object(a.b)("wrapper",Object(n.a)({},l,i,{components:t,mdxType:"MDXLayout"}),Object(a.b)("p",null,"A complete and local NVR designed for HomeAssistant with AI object detection. Uses OpenCV and Tensorflow to perform realtime object detection locally for IP cameras."),Object(a.b)("p",null,"Use of a ",Object(a.b)("a",Object(n.a)({parentName:"p"},{href:"https://coral.ai/products/"}),"Google Coral Accelerator")," is optional, but highly recommended. The Coral will outperform even the best CPUs and can process 100+ FPS with very little overhead."),Object(a.b)("ul",null,Object(a.b)("li",{parentName:"ul"},"Tight integration with HomeAssistant via a ",Object(a.b)("a",Object(n.a)({parentName:"li"},{href:"https://github.com/blakeblackshear/frigate-hass-integration"}),"custom component")),Object(a.b)("li",{parentName:"ul"},"Designed to minimize resource use and maximize performance by only looking for objects when and where it is necessary"),Object(a.b)("li",{parentName:"ul"},"Leverages multiprocessing heavily with an emphasis on realtime over processing every frame"),Object(a.b)("li",{parentName:"ul"},"Uses a very low overhead motion detection to determine where to run object detection"),Object(a.b)("li",{parentName:"ul"},"Object detection with TensorFlow runs in separate processes for maximum FPS"),Object(a.b)("li",{parentName:"ul"},"Communicates over MQTT for easy integration into other systems"),Object(a.b)("li",{parentName:"ul"},"24/7 recording"),Object(a.b)("li",{parentName:"ul"},"Re-streaming via RTMP to reduce the number of connections to your camera")),Object(a.b)("h2",{id:"screenshots"},"Screenshots"),Object(a.b)("p",null,Object(a.b)("img",{alt:"Media Browser",src:r(172).default})),Object(a.b)("p",null,Object(a.b)("img",{alt:"Notification",src:r(173).default})))}u.isMDXComponent=!0},98:function(e,t,r){"use strict";r.d(t,"a",(function(){return b})),r.d(t,"b",(function(){return d}));var n=r(0),o=r.n(n);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function s(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymb