Giter Club home page Giter Club logo

feniks's Introduction

Feniks - A computer based NVR with AI capabilities

  • Connect any source FFmpeg supports and start streaming with low latency.
  • Stream and record your videos 24/7 in both H.264 and H.265 formats directly from your browser..
  • Detect 80 different objects, recognizes human faces, car plates and characters (OCR). There will be much more thanks to CodeProject.AI
  • Query your AI data fast & easy by date, time, camera, label, score and color.
  • If you want more, develop your own custom AI service and easily integrate with Feniks.

Installation

  • The installation process can be done effortlessly since all services are dockerized and can be run by Docker-Compose in one single command. I' ve created a wizard to make generating Docker-Compose file easy.

Screenshots

Technical Notes

  • Feniks consists of 6 different services. Those are:

    • The FFmpeg Service For Live 7/24 Streaming, Snapshot and Recording (Python).
    • The Snapshot Service (Python Multi-Process)
    • The CodeProject.AI Service(Python).
    • The Cloud and Notification Service (GoLang).
    • The Web/Websockets Server Service (Golang).
    • The Web Application (Javascript/Typescript, Vue3, Quasar).
  • Runs natively on Linux.

  • Uses FFmpeg to handle video, audio, snapshot, probing and streaming.

  • Uses Redis as a main NoSql database and message broker.

  • MongoDB or SQLite is used for AI Events and query databases.

  • The web application supports more than one user and node server.

  • The UI app was developed by using Vue3 & Quasar. It uses gridstack.js to support highly customizable (like resize, dragging) video players.

  • It has a built-in watchdog mechanism to monitor all processes and recover them.

  • All running node services can be viewed on the UI app. All Services can be started/stopped by using the services page.

  • The services are tested on x86 workstation, Dell Intel x86 laptop, Raspberry PI (ARM664) and Nvidia Jetson Nano.

  • It supports multiple storages. You can assign any storage to any camera.

  • Broken / failed connections are shown in the information page. If a stream fails more than once in a given time, a notification will be sent to receivers (users) by the cloud provider service.

  • Supported Stream Types are shown below:

    Hardware Demand Latency Compatibility
    FLV * * ****
    HLS * ***** *****
    WebSockets ***** * *****
    WebRTC * * ****
  • Supported video codecs for both streaming and recording are:

    • H.264 (Software, VA-API, NVIDIA, INTEL, RASPBERRY PI)
    • H.265 (Software, VA-API, NVIDIA, INTEL, HEVC streaming is supported thanks to go2rtc)
    • AV1 (Software, VA-API, NVIDIA, INTEL)
    • VP8 (Software, VA-API, NVIDIA, INTEL)
    • VP9 (Software, VA-API, NVIDIA, INTEL)
  • Supported audio codecs for both streaming and recording are:

    • MP3
    • AAC
    • AC3
    • DTS
    • ALAC
  • Supported Video Container Formats:

    • MP4
    • WebM
  • Supported Media Servers:

  • All AI events (Object Detection, Face Recognition, Plate Recognition) can be queried by date, time, camera, label and score. All those fields are all indexed and saved as denormalized entities to provide best read performance even for big data.

  • It can store detected objects on clouds. Current cloud providers are:

    • Google Gdrive
    • Telegram
  • Feniks supports 3 different motion detection methods, those are:

    • OpenCV: Superb accuracy precision but it costs relatively high CPU time
    • Imagehash: good accuracy and high performance. It is suitable for low cost devices like Raspberry PI or Jetson Nano
    • PSNR: Similar to Imagehash
  • Re-streaming via media server to reduce the number of connections to your camera

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.