.. _cameras: *************************************** Camera Management and Video Recording *************************************** To configure video-based object monitoring, add cameras to FindFace Multi, grouping them subject to their location. .. note:: Privileges to create camera groups and cameras are managed in user's permissions (see :ref:`users`). .. rubric:: In this chapter: .. contents:: :local: .. _camera-group: Create Camera Group ============================ .. tip:: A default preconfigured camera group is available in the system. To create a group of cameras, do the following: #. Navigate to the :guilabel:`Preferences` tab. Click :guilabel:`Camera Groups`. #. Click :guilabel:`+`. |create_camera_group_en| .. |create_camera_group_en| image:: /_static/create_camera_group_en.png :scale: 60% .. |create_camera_group_ru| image:: /_static/create_camera_group_ru.png :scale: 60% #. On the :guilabel:`Information` tab, specify the group name. Add a comment if needed. |camera_group_en| .. |camera_group_en| image:: /_static/camera_group_en.png :scale: 80% .. |camera_group_ru| image:: /_static/camera_group_ru.png :scale: 80% #. If you want to allocate a certain ``findface-video-worker`` instance to process video streams from the group, create or select one or several allocation labels. .. note:: To complete the allocation, list the labels in the ``/etc/findface-video-worker-gpu.ini`` (``/etc/findface-video-worker-cpu.ini``) configuration file. See :ref:`video-allocation` for details. #. If you want to deduplicate events from cameras that belong to the same group, i. e. exclude coinciding events, check :guilabel:`Deduplicate Events` and specify the deduplication interval (interval between 2 consecutive checks for event uniqueness). .. warning:: Use deduplication with extreme caution. If cameras within a group observe different scenes, some objects may be skipped. See :ref:`deduplication` for details. #. By default, video from all camera groups is processed using the :ref:`generic confidence threshold `. To set an individual threshold for the camera group, check :guilabel:`Confidence Threshold` and specify the threshold value. .. include:: /_inclusions/threshold_important.rst #. Check :guilabel:`Active`. #. Click :guilabel:`Save`. #. On the :guilabel:`Permissions` tab, assign privileges on the camera group, specifying which user roles are allowed to change/view the camera group settings. |camera_group_permissions_en| .. |camera_group_permissions_en| image:: /_static/camera_group_permissions_en.png :scale: 80% .. |camera_group_permissions_ru| image:: /_static/camera_group_permissions_ru.png :scale: 80% #. Click :guilabel:`Save`. .. _add-camera: Add Camera ==================================== To add a camera, do the following: #. Navigate to the :guilabel:`Cameras` tab. #. Click :guilabel:`+`. |create_camera_en| .. |create_camera_en| image:: /_static/create_camera_en.png :scale: 60% .. |create_camera_ru| image:: /_static/create_camera_ru.png :scale: 60% #. On the :guilabel:`Settings` -> :guilabel:`Main` tab, enter the general camera information: |camera_en| .. |camera_en| image:: /_static/camera_en.png :scale: 80% .. |camera_ru| image:: /_static/camera_ru.png :scale: 80% * Specify the camera name. * Add the camera to a camera group. * Specify the camera URL (:guilabel:`Stream`). If the camera is :guilabel:`ONVIF`, select it from the list of detected devices to automatically load available settings and streams. .. note:: A camera object can also be used for integrating an edge device. :ref:`Learn more `. * If necessary, add a comment. * Check :guilabel:`Active`. #. On the :guilabel:`Settings` -> :guilabel:`Advanced` tab, fine-tune the camera: |camera_advanced_en| .. |camera_advanced_en| image:: /_static/camera_advanced_en.png :scale: 60% .. |camera_advanced_ru| image:: /_static/camera_advanced_ru.png :scale: 60% * Check detectors that you want to enable on this camera: faces, bodies, cars. * If needed, change the video orientation. .. important:: Be aware that the ``findface-security`` server rotates the video using post-processing tools. It can negatively affect performance. Rotate the video via the camera functionality wherever possible. * :guilabel:`Timeout in ms`: Specify the timeout in milliseconds for posting detected objects. * :guilabel:`Retrieve timestamps from stream`: Check to retrieve and post timestamps from the video stream. Uncheck the option to post the current date and time. * :guilabel:`Add to timestamps`: Add the specified number of seconds to timestamps from the stream. * :guilabel:`FFMPEG format`: Pass FFMPEG format (mxg, flv, etc.) if it cannot be detected automatically. * :guilabel:`FFMPEG parameters`: FFMPEG options for the video stream in the key-value format, for example, [“rtsp_transpotr=tcp”, “ss=00:20:00”]. * :guilabel:`Imotion threshold`: Minimum motion intensity to be detected by the motion detector. * :guilabel:`Verify SSL`: Check to enable verification of the server SSL certificate when the object tracker posts objects to the server over https. Uncheck the option if you use a self-signed certificate. #. (Optional) On the :guilabel:`GEO` tab, specify the camera geographical location. |camera_geo_en| .. |camera_geo_en| image:: /_static/camera_geo_en.png :scale: 80% .. |camera_geo_ru| image:: /_static/camera_geo_ru.png :scale: 80% #. On the :guilabel:`Analytics` tab, specify settings for each object type detector. |camera_analytics_en| .. |camera_analytics_en| image:: /_static/camera_analytics_en.png :scale: 80% .. |camera_analytics_ru| image:: /_static/camera_analytics_ru.png :scale: 80% * :guilabel:`Minimum object snapshot quality`: Minimum quality of an object image to detect. Do not change the default value without consulting with our technical experts (support@ntechlab.com). * :guilabel:`Minimum object size`: Minimum object size in pixels to post. * :guilabel:`Maximum object size`: Maximum object size in pixels to post. * :guilabel:`Compression quality`: Full frame compression quality. * :guilabel:`Offline mode`: Offline mode. Enable posting one snapshot of the best quality per entire track for each object. * :guilabel:`Time interval`: Time interval in seconds (integer or decimal) within which the object tracker picks up the best snapshot in the real-time mode. * :guilabel:`Post first object immediately`: Check to post the first object snapshot from a track immediately after it passes through the quality, size, and ROI filters, without waiting for the first ``Time interval`` to complete. The way the subsequent snapshots are posted will depend on the ``Post best snapshot`` value. Uncheck the option to post the first object snapshot only after the first ``Time interval`` completes. * :guilabel:`Post best snapshot`: Check to post the best snapshot obtained within each ``Time interval`` in the real-time mode, regardless of its quality. Uncheck the option to post the best snapshot only if its quality has improved compared to the previously posted snapshot. #. Click :guilabel:`Apply changes`. #. Specify the region of tracking within the camera field (:guilabel:`General` -> :guilabel:`Region of Tracking`) and detection zones (:guilabel:`Regions of Interest`) for each object type detector if necessary. Click :guilabel:`Apply changes`. |camera_tracking_en| .. |camera_tracking_en| image:: /_static/camera_tracking_en.png :scale: 70% .. |camera_tracking_ru| image:: /_static/camera_tracking_ru.png :scale: 70% |camera_zone_en| .. |camera_zone_en| image:: /_static/camera_zone_en.png :scale: 70% .. |camera_zone_ru| image:: /_static/camera_zone_ru.png :scale: 70% .. _monitor-camera: Monitor Camera Operation ============================ To monitor the operation of cameras, navigate to the :guilabel:`Cameras` tab. |monitor_cameras_en| .. |monitor_cameras_en| image:: /_static/monitor_cameras_en.png :scale: 55% .. |monitor_cameras_ru| image:: /_static/monitor_cameras_ru.png :scale: 55% Camera statuses: * Green: the video stream is being processed without errors. * Yellow: the video stream is being processed for less than 30 seconds, or one or more errors occurred when posting an object. * Red: the video stream cannot be processed. * Grey: camera disabled. .. tip:: You can configure the yellow and red statuses based on the portion of dropped frames and failed object postings. To do so, modify the following parameters in the ``/etc/findface-security/config.py`` configuration file: .. code:: sudo vi /etc/findface-security/config.py FFSECURITY = { ... # max camera frames_dropped percent 'MAX_CAMERA_DROPPED_FRAMES': {'yellow': 0.1, 'red': 0.3}, # max camera objects_failed percent 'MAX_CAMERA_FAILED_FACES': {'yellow': 0.1, 'red': 0.3}, ... } Each created camera is associated with a so called job, a video processing task that contains configuration settings and stream data and is assigned to ``findface-video-worker``. This task can be restarted. To restart a job, click |restart| in the :guilabel:`Action` column. In this case, the number of errors will be reset to ``0``. .. |restart| image:: /_static/restart_button.png :scale: 60% With a large number of cameras in the system, use the following filters: * :guilabel:`Camera groups`, * :guilabel:`Active`, * :guilabel:`Status`. For each camera, you will be provided with complete statistics such as current session duration, the number of successfully posted objects, the number of objects processed with errors after the last job restart, the number of frame drops, and other data. To consult these data, click the camera and go to the :guilabel:`Camera Info` tab. |camera_view_en| .. |camera_view_en| image:: /_static/camera_view_en.png :scale: 60% .. |camera_view_ru| image:: /_static/camera_view_ru.png :scale: 60% .. _vms-camera: Video Recorder ===================================== Enable Video Recording ------------------------- If Video Recorder is :ref:`deployed ` and :ref:`configured `, you will see the :guilabel:`Enable recording` checkbox appear in the main settings of cameras. Check it to enable recording video chunks from a camera and sending them over to Video Recorder for further processing. |camera_recording_en| .. |camera_recording_en| image:: /_static/camera_recording_en.png :scale: 60% .. |camera_recording_ru| image:: /_static/camera_recording_ru.png :scale: 60% .. _video-player: View Camera Video in Video Player ---------------------------------------- Under :ref:`specific settings `, clicking on camera preview opens up not a static frame, but a video player, streaming live video from the camera. |camera_player_click_en| .. |camera_player_click_en| image:: /_static/camera_player_click_en.png :scale: 60% .. |camera_player_click_ru| image:: /_static/camera_player_click_ru.png :scale: 60% |player_en| .. |player_en| image:: /_static/player_en.png :scale: 60% .. |player_ru| image:: /_static/player_ru.png :scale: 60% The video player has a highly intuitive design. It provides the following possibilities: #. Stream live video from the camera. #. Watch video chunks recorded from the camera. They will be marked in purple on the timeline. To quickly switch from archived video to the camera live stream, click the :guilabel:`Live` button. #. Visual indicating of moments corresponding to face or car events (if enabled) as colorful markers on the timeline. The unmatched events are marked in pink, while the matched ones are light green. .. note:: This feature is optional and must be pre-configured. See :ref:`configure-vms`. .. important:: The time on the timeline is displayed in the spectator's time zone. For example, if an event happened at 2 p.m. in Abu Dhabi, its marker would be at 12 p.m. for a spectator in Paris. #. Navigate to the past and future over the timeline, with the possibility of zooming it in and out. .. tip:: You can navigate along the timeline by using the :guilabel:`<` / :guilabel:`>` buttons, or by moving the cursor along the timeline with the right mouse button held down. .. tip:: To zoom in and out, use the :guilabel:`+` / :guilabel:`-` buttons, or the mouse wheel. #. Export selected clips. .. seealso:: * :ref:`video-allocation` * :ref:`deduplication` * :ref:`video-config` * :ref:`deploy-vms` * :ref:`configure-vms` * :ref:`vms-event`