Page 1 of 1
off loading processing to the GPU.
Posted: Sat Feb 15, 2014 8:58 pm
by odror
I am new to zoneminder. I am testing it with a 1080p IP camera.
On i7-4770 machine I get CPU values (using top) of 25% for zma and zmc.
Is there a way to offload some of the processing to my NVIDIA gtx 660 card.
If I will have 3-4 cameras this is really going to be a problem.
Thanks
Re: off loading processing to the GPU.
Posted: Mon Feb 17, 2014 9:49 pm
by knight-of-ni
Yep, that's the well known side effect to using ffmpeg to transcode a high resolution H.264 stream into jpeg's.
And no, there is no way to offload that to the GPU because no one has written that code yet. <- hint: we welcome volunteers.
The next release will have a "libvlc" method, which should be a drop in replacemet for ffmpeg, but I'm not sure it will do much better for your application.
The only other thing I can say is we currently have a video branch in Alpha, which will record video streams to disk in mp4 container format. That will be much more efficient, but it is not very user friendly at the moment.
Re: off loading processing to the GPU.
Posted: Mon Feb 17, 2014 10:08 pm
by odror
Thank
VLC has hardware acceleration support. Would'nt that help?? I'll wait for the next version.
Re: off loading processing to the GPU.
Posted: Mon Feb 17, 2014 10:47 pm
by knight-of-ni
libvlc might be more efficient, and I'd be interested to see your results. I would not expect a significant improvement, however. Transcoding H.264 is expensive no matter how you do it.
Re: off loading processing to the GPU.
Posted: Fri Feb 21, 2014 3:01 pm
by mabene
odror wrote:I am new to zoneminder. I am testing it with a 1080p IP camera.
On i7-4770 machine I get CPU values (using top) of 25% for zma and zmc.
Is there a way to offload some of the processing to my NVIDIA gtx 660 card.
If I will have 3-4 cameras this is really going to be a problem.
Thanks
I've got a couple of 1080p cameras active on my own system (i5-3570K), Running at 5fps using mjpeg - that seems to be a much better fit for zonemindesr architecture that h.264 streams. each zmc (image capture) process shows in top at ~ 5%-6%. Motion detection (zma) is much more expensive at about 13% (percentage of single core).
Depending on camera capability, there are some things you culd try:
if the camera has onboard motion detection that actually works reasonably well (most cameras I've tried so far don't), activate motion detection on the camera, configure the cameras in "nodect" mode and have the cameras trigger alarm events. I've used http trigger on the camera to call a php script on the zm server that passes the alert to zoneminder using zmtrigger.pl interface.
If the camera offers alternate streams at reduced bandwith/resolution, you could set up two monitors for each camera:
Cam-detect: Access secondary stream, low fps/low resolution (possibly greyscale). configure motion detection on this monitor.
Cam-HD - Full HD, "Nodect" Mode, cam-detect as linked monitor.
This will run the moniton detection against a much smaller picture at lower processing cost and trigger recording of the hires images in case an alarm is triggered.