September 10, 20205 yr Application Name: Viseron - a self-hosted NVR with object and face detectionApplication Site: https://viseron.netlify.appDocker Hub: https://hub.docker.com/repository/docker/roflcoopter/viseronGithub: https://github.com/roflcoopter/viseron ViseronViseron is a self-hosted NVR deployed via Docker, which utilizes machine learning to detect objects and start recordings. v3.0.0 Has finally been release which features a lot of improvements, including 24/7 recordings with a nice timeline view Check out the release notes:https://github.com/roflcoopter/viseron/releases/tag/v3.0.0 Viserons features include, but not limited to the following:Continuous (24/7) recordingsTiered storage, allowing multiple storage media with different retention policiesA timeline view of eventsBuilt in authentication systemObject detection via:YOLOv3, YOLOv4 and YOLOv7 Darknet using OpenCVTensorflow via Google Coral EdgeTPUCodeProject.AIMotion detectionFace recognition via:CompreFaceCodeProject.AIdlibImage classification via:Tensorflow via Google Coral EdgeTPULicense plate recognition via:CodeProject.AIResponsive, mobile friendly Web UI written in TypeScript ReactMQTT supportHome Assistant MQTT DiscoveryLookback, record before an event actually happensSupports hardware acceleration on different platformsCUDA for systems with a supported GPUOpenCLOpenMax and MMAL on the RaspberryPi 3B+video4linux on the RaspberryPi 4Intel QuickSync with VA-APINVIDIA video4linux2 on Jetson NanoMultiplatform, should support any amd64, aarch64 or armhf machine running Linux.Specific images are built to support:RaspberryPi 3B+RaspberryPi 4NVIDIA Jetson NanoZones to limit detection to a particular area to reduce false positivesMasks to limit where object and motion detection occursStop/start cameras on-demand over MQTTTelegram support for notifications I hope you'll find this useful!Viseron is a project that is under active development and I appreciate any feedback or feature requests you have.A few screenshots are included below, please go to the documentation for more: https://viseron.netlify.app/docs/documentation#screenshots Edited October 7, 2025Oct 7 by roflcoopter v3.0.0
September 22, 20205 yr Author Well right now there isnt much to show, videos are recorded when configured objects are detected. A GUI will be implemented in the future where you can view cameras/recordings and maybe even edit the configuration
November 20, 20205 yr Author Viseron will first try to load the EdgeTPU from USB, if it fails PCIe will be tried. I think you need to mount the coral into the container like this but I am not sure --device /dev/apex_0:/dev/apex_0
December 20, 20205 yr Author On 12/18/2020 at 10:13 PM, Mike-D said: Does this app support Nvidia transcoding? Viseron supports this with the roflcoopter/viseron-cuda container, however i am not sure how to incorporate that into this implementation. I am not using Unraid myself so i dont know how to do that unfortunately.
December 21, 20205 yr On 12/20/2020 at 4:39 AM, roflcoopter said: Viseron supports this with the roflcoopter/viseron-cuda container, however i am not sure how to incorporate that into this implementation. I am not using Unraid myself so i dont know how to do that unfortunately. Is '--runtime=nvidia' already set by default. The plex app has a variable you set to true to enable nvidia encoding.
June 13, 20224 yr How about an example config file for dummies like me trying to set this up? I get the basic concept but it would be nice to see a built example that's setup to do some motion detection with recognition.
June 13, 20224 yr Author 19 hours ago, parish said: How about an example config file for dummies like me trying to set this up? I get the basic concept but it would be nice to see a built example that's setup to do some motion detection with recognition. I suggest you check out this PR: https://github.com/roflcoopter/viseron/pull/306 I am currently rewriting Viseron in that PR, and it is almost done. The documentation is the only part missing. That PR has a small config example that you should be able to use. You need to pull the Docker tag called `modularized` in order to get Viseron v2 however, not sure how you do that using Unraid
December 20, 20223 yr Author Viseron v2 is finally out! Check out the release notes: https://github.com/roflcoopter/viseron/releases/tag/v2.0.0
December 21, 20223 yr @roflcoopter Any chance for an updated listing in the Community Apps? The only option currently is missing some fields in the template (like network ports, for example). It also wants the container to be privileged, which is the first time I'm even seeing this after using Unraid for like 7 years Edited December 21, 20223 yr by jeremytodd1
December 22, 20223 yr According to docs privileged is only needed when passing through Edge TPU. Have you tired without this option enabled as Frigate works just fine if you pass usb device. I will be able to test it after xmas. Also port is missing and icon - any chance for fixes @roflcoopter? You're maintainer of the project right? 🙂 Edited December 22, 20223 yr by cpu
December 22, 20223 yr Author Absolutely, will try to fix. However i do not use Unraid so i am not really sure what to change, the template was created for me by a user. I can make some proposed changes to the git repo, would you be able to help review it?
December 29, 20223 yr Author Updated the template, but i think it is broken now. Can anyone assist in reviewing the template here: https://github.com/roflcoopter/viseron-unraid-ca-template/blob/master/Viseron.xml and see whats wrong with it?
December 29, 20223 yr 3 hours ago, roflcoopter said: Updated the template, but i think it is broken now. Can anyone assist in reviewing the template here: https://github.com/roflcoopter/viseron-unraid-ca-template/blob/master/Viseron.xml and see whats wrong with it? I just tried out the current listing for Viseron on Unraid's Community Apps and it looks like it successfully installed. I'm able to get to the Viseron's web ui at least. I haven't tried adding any cameras or anything yet. EDIT: I just tried putting in the camera sample configuration as well and it looks like the sample cameras are working correctly as well. Haven't done anything with recording yet though. I did notice that the icon for Viseron in my docker containers page isn't there. It's just using the standard blank icon image. I don't know much about templates though so I can't assist much with helping you there. Edited December 29, 20223 yr by jeremytodd1
December 30, 20223 yr One more thing I'll point out. After testing it yesterday (installing from Community Apps and adding the sample camera configuration), I didn't touch it again. 25 hours later I noticed that the memory usage of the Viseron container was using up a bit over 3GB of ram. Screenshot for reference: Is this expected?
December 30, 20223 yr Author Yes it is normal, object detection loads the model into memory, you can reduce it by using a smaller model but at the cost of accuracy
January 2, 20233 yr @roflcoopter I'm very interested in your software, so hopefully you are able to explain some messages/errors I'm getting. I'm running a server with an Intel iGPU and used your viseron docker, but also experimented with the amd64-viseron docker. Both fail to recognized the VA-API. OpenCL is available it says. I've passed the /dev/dri through as device both as path and as extra parameter (last method is the one linuxserver.io is using for their Plex dockers). The last method seems to give an actual load on my iGPU, but that could be just coincidence because it's not using the iGPU constantly. Both methods result in object detection successfully. I've changed PUID and GUID to 99/100. I don't think 0/0 is needed, and on Unraid most of the dockers run at 99/100. ls /dev/dri also shows the igpu within the docker. I've gotten object detection hits successfully, which are amazingly accurate. But I can't place the errors I get in the log below (mostly below), but it also shows OpenCL is available, but VA-API isn't. Some things that I've noticed: Playback of the recordings is not possible for me in my web browser. It says the format is not supported. Live view does open a mjepg stream in my browser. Recordings just don't play. The files on my server are working though. Maybe because of the error in the log below about mp4 not being supported? All the recordings are placed within 1 folder with random namings together with a thumbnail of said recording (same name). For me it would be better to change this to date and timestamps with their own folder. I can have 100's of hits on a daily basis, so having them all in one big folder per camera will be difficult to go through. Especially when file dates get corrupted and there is no way to search through dates. If you need any testing from me, please let me know! I think your software has incredible potential. [2023-01-02 09:35:14] [INFO ] [viseron.core] - ------------------------------------------- [2023-01-02 09:35:14] [INFO ] [viseron.core] - Initializing Viseron [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setting up component data_stream [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setup of component data_stream took 0.0 seconds [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setting up component webserver [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setup of component webserver took 0.0 seconds [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setting up component ffmpeg [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setting up component darknet [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setting up component nvr [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setup of component nvr took 0.0 seconds [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setup of component ffmpeg took 0.0 seconds [2023-01-02 09:35:15] [INFO ] [viseron.components] - Setup of component darknet took 0.3 seconds [2023-01-02 09:35:15] [INFO ] [viseron.components] - Setting up domain camera for component ffmpeg with identifier camera_1 [2023-01-02 09:35:15] [INFO ] [viseron.components] - Setting up domain object_detector for component darknet with identifier camera_1 [2023-01-02 09:35:15] [INFO ] [viseron.components] - Setting up domain nvr for component nvr with identifier camera_1 [2023-01-02 09:35:17] [WARNING ] [viseron.components.ffmpeg.stream.camera_1] - Container mp4 does not support pcm_alaw audio codec, using mkv instead. Consider changing extension in your config. [2023-01-02 09:35:17] [INFO ] [viseron.components] - Setup of domain camera for component ffmpeg with identifier camera_1 took 2.0 seconds [2023-01-02 09:35:17] [INFO ] [viseron.components] - Setup of domain object_detector for component darknet with identifier camera_1 took 0.0 seconds [2023-01-02 09:35:17] [INFO ] [viseron.components.nvr.nvr.camera_1] - Motion detector is disabled [2023-01-02 09:35:17] [INFO ] [viseron.components.nvr.nvr.camera_1] - NVR for camera Door initialized [2023-01-02 09:35:17] [INFO ] [viseron.components] - Setup of domain nvr for component nvr with identifier camera_1 took 0.0 seconds [2023-01-02 09:35:17] [INFO ] [viseron.core] - Viseron initialized in 3.1 seconds [s6-init] making user provided files available at /var/run/s6/etc...exited 0. [s6-init] ensuring user provided files have correct perms...exited 0. [fix-attrs.d] applying ownership & permissions fixes... [fix-attrs.d] done. [cont-init.d] executing container initialization scripts... [cont-init.d] 10-adduser: executing... ************************ UID/GID ************************* User uid: 0 User gid: 0 ************************** Done ************************** [cont-init.d] 10-adduser: exited 0. [cont-init.d] 20-gid-video-device: executing... [cont-init.d] 20-gid-video-device: exited 0. [cont-init.d] 30-edgetpu-permission: executing... ************** Setting EdgeTPU permissions *************** Coral Vendor IDs: "1a6e" "18d1" No EdgeTPU USB device was found ************************** Done ************************** [cont-init.d] 30-edgetpu-permission: exited 0. [cont-init.d] 40-set-env-vars: executing... ****** Checking for hardware acceleration platforms ****** OpenCL is available! VA-API cannot be used CUDA cannot be used *********************** Done ***************************** [cont-init.d] 40-set-env-vars: exited 0. [cont-init.d] 50-check-if-rpi: executing... ********** Checking if we are running on an RPi ********** Not running on any supported RPi *********************** Done ***************************** [cont-init.d] 50-check-if-rpi: exited 0. [cont-init.d] 55-check-if-jetson: executing... ****** Checking if we are running on a Jetson Board ****** Not running on any supported Jetson board *********************** Done ***************************** [cont-init.d] 55-check-if-jetson: exited 0. [cont-init.d] 60-ffmpeg-path: executing... ****************** Getting FFmpeg path ******************* FFmpeg path: /home/abc/bin/ffmpeg *********************** Done ***************************** [cont-init.d] 60-ffmpeg-path: exited 0. [cont-init.d] 70-gstreamer-path: executing... ***************** Getting GStreamer path ***************** GStreamer path: /usr/bin/gst-launch-1.0 *********************** Done ***************************** [cont-init.d] 70-gstreamer-path: exited 0. [cont-init.d] done. [services.d] starting services [services.d] done. [ WARN:[email protected]] global /tmp/opencv/modules/core/src/utils/filesystem.cpp (489) getCacheDirectory Using world accessible cache directory. This may be not secure: /var/tmp/ [2023-01-02 09:35:33] [ERROR ] [viseron.components.nvr.nvr.camera_1] - Failed to retrieve result for object_detector, message repeated 4 times
January 5, 20233 yr Author On 1/2/2023 at 9:58 AM, Kaizac said: @roflcoopter I'm very interested in your software, so hopefully you are able to explain some messages/errors I'm getting. I'm running a server with an Intel iGPU and used your viseron docker, but also experimented with the amd64-viseron docker. Both fail to recognized the VA-API. OpenCL is available it says. I've passed the /dev/dri through as device both as path and as extra parameter (last method is the one linuxserver.io is using for their Plex dockers). The last method seems to give an actual load on my iGPU, but that could be just coincidence because it's not using the iGPU constantly. Both methods result in object detection successfully. I've changed PUID and GUID to 99/100. I don't think 0/0 is needed, and on Unraid most of the dockers run at 99/100. ls /dev/dri also shows the igpu within the docker. I've gotten object detection hits successfully, which are amazingly accurate. But I can't place the errors I get in the log below (mostly below), but it also shows OpenCL is available, but VA-API isn't. Some things that I've noticed: Playback of the recordings is not possible for me in my web browser. It says the format is not supported. Live view does open a mjepg stream in my browser. Recordings just don't play. The files on my server are working though. Maybe because of the error in the log below about mp4 not being supported? All the recordings are placed within 1 folder with random namings together with a thumbnail of said recording (same name). For me it would be better to change this to date and timestamps with their own folder. I can have 100's of hits on a daily basis, so having them all in one big folder per camera will be difficult to go through. Especially when file dates get corrupted and there is no way to search through dates. If you need any testing from me, please let me know! I think your software has incredible potential. [2023-01-02 09:35:14] [INFO ] [viseron.core] - ------------------------------------------- [2023-01-02 09:35:14] [INFO ] [viseron.core] - Initializing Viseron [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setting up component data_stream [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setup of component data_stream took 0.0 seconds [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setting up component webserver [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setup of component webserver took 0.0 seconds [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setting up component ffmpeg [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setting up component darknet [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setting up component nvr [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setup of component nvr took 0.0 seconds [2023-01-02 09:35:14] [INFO ] [viseron.components] - Setup of component ffmpeg took 0.0 seconds [2023-01-02 09:35:15] [INFO ] [viseron.components] - Setup of component darknet took 0.3 seconds [2023-01-02 09:35:15] [INFO ] [viseron.components] - Setting up domain camera for component ffmpeg with identifier camera_1 [2023-01-02 09:35:15] [INFO ] [viseron.components] - Setting up domain object_detector for component darknet with identifier camera_1 [2023-01-02 09:35:15] [INFO ] [viseron.components] - Setting up domain nvr for component nvr with identifier camera_1 [2023-01-02 09:35:17] [WARNING ] [viseron.components.ffmpeg.stream.camera_1] - Container mp4 does not support pcm_alaw audio codec, using mkv instead. Consider changing extension in your config. [2023-01-02 09:35:17] [INFO ] [viseron.components] - Setup of domain camera for component ffmpeg with identifier camera_1 took 2.0 seconds [2023-01-02 09:35:17] [INFO ] [viseron.components] - Setup of domain object_detector for component darknet with identifier camera_1 took 0.0 seconds [2023-01-02 09:35:17] [INFO ] [viseron.components.nvr.nvr.camera_1] - Motion detector is disabled [2023-01-02 09:35:17] [INFO ] [viseron.components.nvr.nvr.camera_1] - NVR for camera Door initialized [2023-01-02 09:35:17] [INFO ] [viseron.components] - Setup of domain nvr for component nvr with identifier camera_1 took 0.0 seconds [2023-01-02 09:35:17] [INFO ] [viseron.core] - Viseron initialized in 3.1 seconds [s6-init] making user provided files available at /var/run/s6/etc...exited 0. [s6-init] ensuring user provided files have correct perms...exited 0. [fix-attrs.d] applying ownership & permissions fixes... [fix-attrs.d] done. [cont-init.d] executing container initialization scripts... [cont-init.d] 10-adduser: executing... ************************ UID/GID ************************* User uid: 0 User gid: 0 ************************** Done ************************** [cont-init.d] 10-adduser: exited 0. [cont-init.d] 20-gid-video-device: executing... [cont-init.d] 20-gid-video-device: exited 0. [cont-init.d] 30-edgetpu-permission: executing... ************** Setting EdgeTPU permissions *************** Coral Vendor IDs: "1a6e" "18d1" No EdgeTPU USB device was found ************************** Done ************************** [cont-init.d] 30-edgetpu-permission: exited 0. [cont-init.d] 40-set-env-vars: executing... ****** Checking for hardware acceleration platforms ****** OpenCL is available! VA-API cannot be used CUDA cannot be used *********************** Done ***************************** [cont-init.d] 40-set-env-vars: exited 0. [cont-init.d] 50-check-if-rpi: executing... ********** Checking if we are running on an RPi ********** Not running on any supported RPi *********************** Done ***************************** [cont-init.d] 50-check-if-rpi: exited 0. [cont-init.d] 55-check-if-jetson: executing... ****** Checking if we are running on a Jetson Board ****** Not running on any supported Jetson board *********************** Done ***************************** [cont-init.d] 55-check-if-jetson: exited 0. [cont-init.d] 60-ffmpeg-path: executing... ****************** Getting FFmpeg path ******************* FFmpeg path: /home/abc/bin/ffmpeg *********************** Done ***************************** [cont-init.d] 60-ffmpeg-path: exited 0. [cont-init.d] 70-gstreamer-path: executing... ***************** Getting GStreamer path ***************** GStreamer path: /usr/bin/gst-launch-1.0 *********************** Done ***************************** [cont-init.d] 70-gstreamer-path: exited 0. [cont-init.d] done. [services.d] starting services [services.d] done. [ WARN:[email protected]] global /tmp/opencv/modules/core/src/utils/filesystem.cpp (489) getCacheDirectory Using world accessible cache directory. This may be not secure: /var/tmp/ [2023-01-02 09:35:33] [ERROR ] [viseron.components.nvr.nvr.camera_1] - Failed to retrieve result for object_detector, message repeated 4 times VA-API not working often boils down to permission issues. Does it work if you run with PUID=0 and PGID=0 and/or privileged? What do you mean by recordings are stored with random names? Could you show an example? They should be stored in a separate folder per camera/date with a timestamped file. The error in your log is simply the object detector which takes some time to initialize the first time, nothing to worry about!
May 17, 20233 yr @roflcoopter can you assist in connecting to a laview camera? Does this support rstp streams? This is what one of my streams looks like, rtsp://user:[email protected]:554/streaming/channels/1 I have tried editing the config several ways but none of them seem to connect. Thanks, *** Edit I was able to figure it out, had to add more parameters such height, width, fps. here is an example for anyone else looking. ffmpeg: # <-- component camera: # <-- domain camera_one: # <-- camera identifier name: Camera 1 width: 1920 height: 1080 fps: 5 host: 10.0.0.73 port: 554 username: user password: password path: /streaming/channels/1 Edited May 17, 20233 yr by parish99
May 25, 20233 yr @roflcoopter I installed a Coral usb accelerator, but it doesnt seem be using it? Should there be something in the logs showing anything? I am passing this through the extra parameters. --device=/dev/bus/usb The Coral is showing up, but the name seems wrong? Bus 002 Device 002 Port 2-10 ID 1a6e:089a Global Unichip Corp. ** edit after a reboot its coming up correct as Bus 002 Device 002 Port 2-10 ID 18d1:9302 Google Inc. Syslog lists it as this. May 24 19:41:40 uServer kernel: usb 2-10: new SuperSpeed USB device number 2 using xhci_hcd I dont see any errors in the logs, but CPU usage did not drop at all after plugging in the coral. Do I need to load anything into the Coral, or just plug it in and it should work? ** Also I believe the icon for docker container needs to be a link to .png verses the current .svg Edited May 25, 20233 yr by parish99
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.