LibVNC

From ZoneMinder Wiki
Jump to navigationJump to search

Zoneminder can not only record cameras, but can also do screen recording of Windows/Linux/Mac or any computer that uses VNC. LibVNC in 1.36 is a way to record VNC sessions. Any VNC server should be able to be used, but this guide has tested only TightVNC with Windows. LibVNC works well in ZM, and I would recommend that people consider it, if they have such a use case.

Setup

LibVNCServer Installation

On Debian

apt install libvncclient1

Using TightVNC on Windows

1. Install TightVNC. https://www.tightvnc.com/download.html

2. Setup a view only user with a password. Disable the primary user and also disable the java client. There is also the Access Control page where you can optionally put firewall rules in to only allow access to the ZM server.

Libvnc1.png

My settings in Zoneminder look something like this. Note that I've specified to record only 2 FPS. For LibVNC, you should specify a max FPS. 2 is enough for my use case. Also note that there is no username, and instead just a password is used. The resolution may be any value that you want to record at. I have not tested how it affects performance, but have had success with both 1600x600 and also at say 320x240. Use even numbers in case you are encoding (see notes below).

Note that if you use low resolutions, the screen text will be unreadable, which may or may not be desirable.

NOTE: on the firewall page, the proper syntax for blocking all ips is:

allow ip low  ip high
block 0.0.0.0 255.255.255.255

In that order. You can't simply put block 0.0.0.0, you must put the whole range there.

Settings

Libvnc2.png

Libvnc3.png

The frame rate should be set to a limit, otherwise LibVNC may run at 200+fps. LibVNC also is unable to use h264 passthrough, as it doesn't use FFMPEG, therefore you must save JPEGs or encode. Because of this, if you don't set an FPS limit, you will run into swapping/high CPU usage. So, beware.

If everything goes right, you should have the computer screen recording in Zoneminder. Note: There has been a bug where the computers, if shut down then the recording will freeze in ZM. This can be avoided by restarting the monitor or ZM service after the computer is shut off (e.g. overnight).

Libvnc4.png

Tips/Troubleshooting

Library Link Missing for LibVNCClient

In ZM 1.36 on Debian 11, you will have to manually add a symbolic link from /usr/lib/x86-64-linux-gnu/libvncclient.so.1 to libvncclient.so. ZM looks for the library without the .1 appended to it. This may also apply to other Debian releases.

Frame Rate Too High

Be sure to do the following:

  • Set a limit for Maximum FPS, Alarm Maximum FPS, and Analysis FPS. Generally under 4, maybe 1 or 2. Watch the CPU usage.
  • Set the resolution to be the same as the monitors. This way you will be able to read the screen.

Multiple Monitors Resolution

For multiple monitors, you will want to use the combined width, with the highest height. It doesn't have to be exact. Multiple monitors are somewhat less desirable for LibVNC if you can avoid it.

Height and Width should be Divisible by Two

If you set LibVNC to do encoding, but no MP4s are made, check that the resolution is divisible by 2. If it is not, ffmpeg will error out.

Sync Issues

I have found LibVNC sync issues where the computer can get a frozen screen, so I recommend restarting ZM at the beginning of each workday. todo: write an API call here to restart only the VNC monitor in crontab.

Recommended Way to Watch Videos

I personally use this script to make a daily MP4 of all recordings, and I can say that it does a much better job than watching through the web browser interface. More efficient. Highly recommended.

Conclusion

All the above taken into consideration, with careful configuration LibVNC works in ZM, and it does a good job. It is a powerful tool, if you want to keep tabs on an organization: you can monitor activities of your employees and get a deeper insight into a business' workings. Or if you have kids, you can monitor their screen usage. Any place you have computers, you can get a daily video summary of what occurred, with the script above. LibVNC is a good addition to ZM.

See Also