Skip to content

m8u/distributed-ffmpeg-nvr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ffnvr - Distributed FFmpeg NVR

So me and my friend been working on our obscure video surveillance project. We wondered how do we approach the recording of hundreds of RTSP streams without thinking too much about hardware, cpu/memory/network load, etc.

ffnvr uses a kind of Redis Lock (see https://redis.io/glossary/redis-lock) to avoid race condition when distributing streams across replicas. This allows us to have leaderless replication.

Streams can be configured via AMQP (we use RabbitMQ) like this:

{
    "action": "<ADD | DELETE>",
    "guid": "<unique id, e.g. UUID4>",
    "name": "<also unique, used for naming output path>",
    "url": "<RTSP url>"
}

See .env.example for startup configuration

As for storage, we currently use good ol' SMB/CIFS mount. Our future task is to introduce some kind of distributed storage in case we're out of network bandwidth and/or write speed of a single disk.

License

idk

About

A simple NVR that uses FFmpeg and is meant to go well with Kubernetes

Topics

Resources

Stars

Watchers

Forks