Is there some up-to-date documentation somewhere? I find it very confusing to setup my config.yaml.
First it comes with the suggestion to use a top-level cameras: configuration. If I look at the components they tell me to use toplevel ffmpeg: - if I do that I get an exception that this is not allowed.
Same for the whole Google Coral Edge TPU topic - very hard to figure out how to configure.
Also on my NUC it says neither my Google Coral Edge TPU USB is found nor VAAPI is found - guess I need to do some digging. Regarding VAAPI: in frigate I was using h264_qsv which worked great for my onboard Intel GPU - is there a way I can use this instead?
For EdgeTPU it says:
viseron | Coral Vendor IDs:
viseron | "1a6e",ATTRS{idProduct}=="089a"
viseron | "18d1",ATTRS{idProduct}=="9302"
viseron | No EdgeTPU USB device was found
And if I add the:
object_detection:
type: edgetpu
it fails and kills the app.
What would be great is an up-to-date example config.yaml
Otherwise it looks very promising - I’m hoping to replace Frigate with it because its simply too unreliable and very confusing with all the clips it creates.
The confusion stems from the fact that Viseron v2 is soon to be released, aiming to do it this weekend.
The docs page is completely new for v2 and reflects v2, but the Docker commands point to the latest tag which is still v1. The documentation for v1 was in the README entirely.
The version do not have compatible config formats.
So if you change your docker command to pull roflcoopter/viseron:2.0.0b3 the doc page over at https://viseron.netlify.app/ are correct.
Regarding your other issues, what does your docker command look like?
What an amazing software, thanks for creating and sharing it.
I believe the most impressive part is the overall server load and the automation in the setup you did through ffprobe, I loved the fact that I didn’t have to specify stream height/width for example. I attached 10+ cameras and while I had to decrease stream resolution for a few of those, the server load is within reason (I’m sure I can optimize more).
I also think highly of frigate but whatever I did I couldn’t make it use a reasonable amount of resources.
Coral TPU & CUDA also worked well out of the box. I’m now trying to use face recognition, using compreface but getting this error:
viseron | [2023-04-23] [ERROR ] [viseron.components.compreface.face_recognition.cam_1] - Error calling compreface: ‘FaceRecognition’ object has no attribute ‘_recognition’
viseron | Traceback (most recent call last):
viseron | File “/src/viseron/components/compreface/face_recognition.py”, line 96, in face_recognition
viseron | detections = self._recognition.recognize(
viseron | AttributeError: ‘FaceRecognition’ object has no attribute ‘_recognition’
This feels like an error but wanted to check, does it feel like config file error? Here is the relevant config part:
compreface:
face_recognition:
host: 192.168.X.X
port: 8000
recognition_api_key: !secret compreface_api_key
train: false
face_plugins: age,gender
cameras:
cam_1: # Run NVR for camera_1
...
labels:
- person
Thanks again for a great software.
PS:
Your “Donations” link in the main interface is a broken link. It now is:
thanks for looking into it. I managed to make it work now, it was actually due to an error on the compreface side. For anyone else running into similar issues - what was a massive help was to add the following to the config.yaml
logger:
default_level: info
logs:
viseron.components.compreface: debug
Thank you for your prompt reply. The configuration is now working, I’d incorrectly set the camera id in the nvr component.
I was struggling to set up a second rtsp stream for a hikvision like the one in the example until i realised you must set up a motion detector. I must have missed it in the docs.
Now Im trying to set up a reolink e1 pro with an rtsp stream. I set it up with ffmpeg and i get a lot of artifacts and a ‘rolling image’ . i.e frames dropping from top to botttom and … like an old tv with no reception dont know how else to describe it.
I then set it up with gstream and it’s better but doesn’t record. I wonder if anyone has set up one of these reolinks e1 pro with viseron.
Thank you. I imported the reolink e1 pro into the reolink nvr, configured it with FLV like the POE ones and problem solved. It’s coming into Viseron without problem.
I’m now working to setup masks. started with basic masking of timestamp.
How do we add more than one mask per camera detector?
Thank you very much. Is there a way to pull camera into homeassistant directly from viseron? I know the “live view” is the substream.
I’d like to pull the main stream.
Not yet sadly, I am currently working on 24/7 recordings, after that i will work on implementing go2rtc which will allow restreaming from Viseron to other sources
Good evening everyone!
I’ve been trying for several days to run the viseron on the jetsonnano without success. I need help please.
I am using the command below and it is producing this output.
user@jetsonnano:~$ docker run --rm -v /media/user/VIS/cam_rec/recordings:/recordings -v /home/user/Viseron/config:/config -v /etc/localtime:/etc/localtime:ro -p 8888:8888 --name viseron -e PUID=1000 -e PGID=1000 --runtime=nvidia --privileged roflcoopter/jetson-nano-viseron:latest
[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: 1000
User gid: 1000
************************** 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 cannot be used
VA-API cannot be used
CUDA is available!
*********************** 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 ******
Running on a Jetson Nano
*********************** Done *****************************
[cont-init.d] 55-check-if-jetson: exited 0.
[cont-init.d] 60-ffmpeg-path: executing…
****************** Getting FFmpeg path *******************
FFmpeg path: /usr/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.
[2023-06-06 22:40:59] [INFO ] [viseron.core] - -------------------------------------------
[2023-06-06 22:40:59] [INFO ] [viseron.core] - Initializing Viseron
[2023-06-06 22:40:59] [INFO ] [viseron.components] - Setting up component logger
[2023-06-06 22:40:59] [INFO ] [viseron.components] - Setup of component logger took 0.0 seconds
[2023-06-06 22:40:59] [INFO ] [viseron.components] - Setting up component data_stream
[2023-06-06 22:40:59] [DEBUG ] [viseron.watchdog] - Registering <RestartableThread(data_stream, initial daemon)> in the watchdog
[2023-06-06 22:40:59] [INFO ] [viseron.components] - Setup of component data_stream took 0.0 seconds
[2023-06-06 22:40:59] [INFO ] [viseron.components] - Setting up component webserver
[2023-06-06 22:40:59] [DEBUG ] [asyncio] - Using selector: EpollSelector
[2023-06-06 22:40:59] [DEBUG ] [viseron.components.data_stream] - Subscribing to data topic event/domain/registered/camera, <bound method Webserver.camera_registered of <Webserver(Tornado Webserver, initial daemon)>>
[2023-06-06 22:40:59] [DEBUG ] [viseron.components.data_stream] - Subscribing to data topic event/domain/setup/domain_failed/camera/*, <bound method Webserver.camera_registered of <Webserver(Tornado Webserver, initial daemon)>>
[2023-06-06 22:40:59] [DEBUG ] [viseron.components.data_stream] - Subscribing to data topic viseron/signal/shutdown, <bound method Webserver.stop of <Webserver(Tornado Webserver, initial daemon)>>
[2023-06-06 22:40:59] [INFO ] [viseron.components] - Setup of component webserver took 0.0 seconds
[2023-06-06 22:40:59] [INFO ] [viseron.components] - Setting up component nvr
[2023-06-06 22:40:59] [INFO ] [viseron.components] - Setting up component gstreamer
[2023-06-06 22:40:59] [INFO ] [viseron.components] - Setup of component nvr took 0.0 seconds
[2023-06-06 22:40:59] [INFO ] [viseron.components] - Setting up component recorder
[2023-06-06 22:40:59] [ERROR ] [viseron.components] - Failed to load component recorder: No module named ‘viseron.components.recorder’
[2023-06-06 22:40:59] [INFO ] [viseron.components] - Setup of component gstreamer took 0.0 seconds
[2023-06-06 22:41:00] [DEBUG ] [viseron.components.webserver.auth] - Loading users
[2023-06-06 22:41:00] [DEBUG ] [viseron.components.webserver.auth] - Loading data from auth store
[2023-06-06 22:41:00] [DEBUG ] [viseron.components.webserver.websocket_api] - WebSocket opened
[2023-06-06 22:41:00] [INFO ] [viseron.components] - Setting up domain camera for component gstreamer with identifier viseron_cam_03
[2023-06-06 22:41:00] [INFO ] [viseron.components] - Setting up domain nvr for component nvr with identifier viseron_cam_03
[2023-06-06 22:41:00] [DEBUG ] [viseron.components] - Domain nvr for component nvr with identifier viseron_cam_03 will wait for dependencies [‘domain: camera, identifier: viseron_cam_03’]
[2023-06-06 22:41:00] [DEBUG ] [viseron.components.webserver.api.handlers] - Routing to AuthAPIHandler.auth_token(*args=[], **kwargs={}, request_arguments={})
[2023-06-06 22:41:00] [DEBUG ] [viseron.helpers.storage] - Writing data to /config/.viseron/auth
[2023-06-06 22:41:00] [ERROR ] [viseron.components] - Error validating config for domain camera and component gstreamer: extra keys not allowed @ data[‘viseron_cam_03’][‘publish_image’]. Got None
Traceback (most recent call last):
File “/src/viseron/components/init.py”, line 242, in validate_domain_config
return domain_module.CONFIG_SCHEMA(config), None # type: ignore
File “/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py”, line 272, in call
return self._compiled([], data)
File “/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py”, line 594, in validate_dict
return base_validate(path, iteritems(data), out)
File “/usr/local/lib/python3.8/site-packages/voluptuous/schema_builder.py”, line 432, in validate_mapping
raise er.MultipleInvalid(errors)
voluptuous.error.MultipleInvalid: extra keys not allowed @ data[‘viseron_cam_03’][‘publish_image’]
[2023-06-06 22:41:00] [ERROR ] [viseron.components] - Setup of domain camera for component gstreamer with identifier viseron_cam_03 failed
[2023-06-06 22:41:00] [ERROR ] [viseron.components] - Unable to setup dependencies for domain nvr for component nvr. Failed dependencies: [‘domain: camera, identifier: viseron_cam_03’]
Below the command I will leave my configuration file.