.. _video-methods: Video Object Detection API Methods ---------------------------------- .. rubric:: In this section: .. contents:: :local: Create Job ^^^^^^^^^^^^^^^^^^^^ .. code:: POST /job/:id This method creates a video processing task (job) for the ``video-worker`` component. .. rubric:: Parameters in path segments ``:id``: job id. .. rubric:: Parameters in request body: * ``enabled``: job enabled state. * ``stream_url``: URL/address of a video stream/file to process. * ``labels``: key-value labels, that will be used by the router component (for example ``facerouter``) to find processing directives for objects detected in this video stream. * ``single_pass``: if true, disable restarting video processing upon error (by default, false). * ``router_url``: URL/address of the router component (for example, ``facerouter``) to receive detected objects from the ``video-worker`` component for processing. * ``router_events_url``: URL/address of the router component (for example, ``facerouter``), that uses events extraction. * ``stream_settings``: stream processing common settings and detector parameters. * ``stream_settings_gpu``: deprecated video stream settings. Not recommended for use. Only for compatibility. .. note:: Other video stream parameters that differ from common video stream parameters are specified in the ``video-manager`` configuration file (see :ref:`video-config` section) or in the service defaults. .. rubric:: Returns: A ``job`` object: all parameters from the request, as well as some read-only attributes. .. rubric:: Example .. rubric:: Request .. code:: curl -s 'http://localhost:18810/job/myid-123' --data '{"stream_url":"http://1.2.3.4/stream.mp4", "labels": {"district": "SVAO"}}' | jq .. rubric:: Response .. code:: { "id": "myid-123", "enabled": true, "stream_url": "http://1.2.3.4/stream.mp4", "labels": { "district": "SVAO" }, "router_url": "http://127.0.0.1:7777/mocks/events/records", "router_events_url": "http://127.0.0.1:7777/mocks/actions/records", "single_pass": false, "stream_settings": { "play_speed": -1, "disable_drops": false, "imotion_threshold": 0, "router_timeout_ms": 15000, "router_verify_ssl": true, "router_headers": [], "router_body": [], "ffmpeg_params": [], "ffmpeg_format": "", "use_stream_timestamp": false, "start_stream_timestamp": 0, "rot": "", "stream_data_filter": "", "video_transform": "", "enable_recorder": false, "enable_liveness": false, "record_audio": false, "detectors": { "face": { "filter_min_quality": 0.45, "filter_min_size": 1, "filter_max_size": 8192, "roi": "", "fullframe_crop_rot": false, "fullframe_use_png": false, "jpeg_quality": 95, "overall_only": false, "realtime_post_first_immediately": false, "realtime_post_interval": 1, "realtime_post_every_interval": false, "track_interpolate_bboxes": true, "track_miss_interval": 1, "track_overlap_threshold": 0.25, "track_max_duration_frames": 0, "track_send_history": false, "post_best_track_frame": true, "post_best_track_normalize": true, "post_first_track_frame": false, "post_last_track_frame": false, "tracker_type": "simple_iou", "track_deep_sort_matching_threshold": 0.65, "track_deep_sort_filter_unconfirmed_tracks": true, "track_object_is_principal": false, "track_history_active_track_miss_interval": 0, "filter_track_min_duration_frames": 1, "extractors_track_triggers": {} } } }, "stream_settings_gpu": { "play_speed": -1, "filter_min_quality": 0.45, "filter_min_face_size": 1, "filter_max_face_size": 8192, "normalized_only": false, "jpeg_quality": 95, "overall_only": false, "use_stream_timestamp": false, "ffmpeg_params": [], "router_timeout_ms": 15000, "router_verify_ssl": true, "router_headers": [], "router_body": [], "start_stream_timestamp": 0, "imotion_threshold": 0, "rot": "", "roi": "", "realtime_post_interval": 1, "realtime_post_every_interval": false, "ffmpeg_format": "", "disable_drops": false, "router_full_frame_png": false, "router_disable_normalized": false, "crop_fullframe_rot": false, "realtime_post_first_immediately": false, "post_first_track_frame": false, "post_last_track_frame": false, "track_max_duration_frames": 0, "send_track_history": false, "stream_data_filter": "", "video_transform": "" }, "status": "AWAITING", "status_msg": "", "statistic": { "processed_duration": 0, "faces_posted": 0, "faces_failed": 0, "faces_not_posted": 0, "processing_fps": 0, "frames_dropped": 0, "frames_processed": 0, "frames_imotion_skipped": 0, "decoding_soft_errors": 0, "frame_width": 0, "frame_height": 0, "last_stream_timestamp": 0, "objects": null, "extractors": null, "job_starts": 0 }, "restream_url": "", "restream_direct_url": "", "shots_url": "", "worker_id": "", "version": "" } List Existing Jobs ^^^^^^^^^^^^^^^^^^^^^^^^ .. code:: GET /jobs This method returns the list of all existing jobs. .. rubric:: Parameters: This method doesn't accept any parameters. .. rubric:: Returns: JSON representation with the list of all jobs. .. rubric:: Example .. rubric:: Request .. code:: curl -s 'http://localhost:18810/jobs' | jq .. rubric:: Response .. code:: [ { "id": "myid-123", "enabled": true, "stream_url": "http://1.2.3.4/stream.mp4", "labels": { "district": "SVAO" }, "router_url": "http://127.0.0.1:7777/mocks/events/records", "router_events_url": "http://127.0.0.1:7777/mocks/actions/records", "single_pass": false, "stream_settings": { "play_speed": -1, "disable_drops": false, "imotion_threshold": 0, "router_timeout_ms": 15000, "router_verify_ssl": true, "router_headers": [], "router_body": [], "ffmpeg_params": [], "ffmpeg_format": "", "use_stream_timestamp": false, "start_stream_timestamp": 0, "rot": "", "stream_data_filter": "", "video_transform": "", "enable_recorder": false, "enable_liveness": false, "record_audio": false, "detectors": { "face": { "filter_min_quality": 0.45, "filter_min_size": 1, "filter_max_size": 8192, "roi": "", "fullframe_crop_rot": false, "fullframe_use_png": false, "jpeg_quality": 95, "overall_only": false, "realtime_post_first_immediately": false, "realtime_post_interval": 1, "realtime_post_every_interval": false, "track_interpolate_bboxes": true, "track_miss_interval": 1, "track_overlap_threshold": 0.25, "track_max_duration_frames": 0, "track_send_history": false, "post_best_track_frame": true, "post_best_track_normalize": true, "post_first_track_frame": false, "post_last_track_frame": false, "tracker_type": "simple_iou", "track_deep_sort_matching_threshold": 0.65, "track_deep_sort_filter_unconfirmed_tracks": true, "track_object_is_principal": false, "track_history_active_track_miss_interval": 0, "filter_track_min_duration_frames": 1, "extractors_track_triggers": {} } } }, "stream_settings_gpu": { "play_speed": -1, "filter_min_quality": 0.45, "filter_min_face_size": 1, "filter_max_face_size": 8192, "normalized_only": false, "jpeg_quality": 95, "overall_only": false, "use_stream_timestamp": false, "ffmpeg_params": [], "router_timeout_ms": 15000, "router_verify_ssl": true, "router_headers": [], "router_body": [], "start_stream_timestamp": 0, "imotion_threshold": 0, "rot": "", "roi": "", "realtime_post_interval": 1, "realtime_post_every_interval": false, "ffmpeg_format": "", "disable_drops": false, "router_full_frame_png": false, "router_disable_normalized": false, "crop_fullframe_rot": false, "realtime_post_first_immediately": false, "post_first_track_frame": false, "post_last_track_frame": false, "track_max_duration_frames": 0, "send_track_history": false, "stream_data_filter": "", "video_transform": "" }, "status": "STARTING", "status_msg": "", "statistic": { "processed_duration": 0, "faces_posted": 0, "faces_failed": 0, "faces_not_posted": 0, "processing_fps": 0, "frames_dropped": 0, "frames_processed": 0, "frames_imotion_skipped": 0, "decoding_soft_errors": 0, "frame_width": 0, "frame_height": 0, "last_stream_timestamp": 0, "objects": {}, "extractors": {}, "job_starts": 0 }, "restream_url": "ws://127.0.0.1:9999/stream/myid-123", "restream_direct_url": "ws://127.0.0.1:9999/directstream/myid-123", "shots_url": "http://127.0.0.1:9999/shot/myid-123", "worker_id": "ntechlab_cpu_bed698ede98011e0311d7669f7ff0b18", "version": "cpa3slouvrb8u0vir3j0" } ] Existing Jobs Count ^^^^^^^^^^^^^^^^^^^^^^^^ .. code:: GET /jobs-count This method returns a set of counters for all jobs statuses. Counters with no jobs will not be shown. .. rubric:: Parameters: This method doesn't accept any parameters. .. rubric:: Returns: JSON representation with information about the count of jobs. .. rubric:: Example .. rubric:: Request .. code:: curl -s 'http://localhost:18810/jobs-count' | jq .. rubric:: Response .. code:: { "ALL": 10, "AWAITING": 1, "COMPLETED": 1, "DISABLED": 1, "DISCONNECTED": 1, "INPROGRESS": 1, "INTERRUPTED": 1, "MISCONFIGURED": 1, "NOT_STARTED": 1, "STARTING": 1, "TOO_MANY_CAMERAS": 1 } Retrieve Job Parameters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code:: GET /job/:id This method retrieves a job parameters by id. .. rubric:: Parameters in path segments: ``id``: job id. .. rubric:: Returns: JSON representation of the job object. .. rubric:: Example .. rubric:: Request .. code:: curl -s 'http://localhost:18810/job/myid-123' | jq .. rubric:: Response .. code:: { "id": "myid-123", "enabled": true, "stream_url": "http://1.2.3.4/stream.mp4", "labels": { "district": "SVAO" }, "router_url": "http://127.0.0.1:7777/mocks/events/records", "router_events_url": "http://127.0.0.1:7777/mocks/actions/records", "single_pass": false, "stream_settings": { "play_speed": -1, "disable_drops": false, "imotion_threshold": 0, "router_timeout_ms": 15000, "router_verify_ssl": true, "router_headers": [], "router_body": [], "ffmpeg_params": [], "ffmpeg_format": "", "use_stream_timestamp": false, "start_stream_timestamp": 0, "rot": "", "stream_data_filter": "", "video_transform": "", "enable_recorder": false, "enable_liveness": false, "record_audio": false, "detectors": { "face": { "filter_min_quality": 0.45, "filter_min_size": 1, "filter_max_size": 8192, "roi": "", "fullframe_crop_rot": false, "fullframe_use_png": false, "jpeg_quality": 95, "overall_only": false, "realtime_post_first_immediately": false, "realtime_post_interval": 1, "realtime_post_every_interval": false, "track_interpolate_bboxes": true, "track_miss_interval": 1, "track_overlap_threshold": 0.25, "track_max_duration_frames": 0, "track_send_history": false, "post_best_track_frame": true, "post_best_track_normalize": true, "post_first_track_frame": false, "post_last_track_frame": false, "tracker_type": "simple_iou", "track_deep_sort_matching_threshold": 0.65, "track_deep_sort_filter_unconfirmed_tracks": true, "track_object_is_principal": false, "track_history_active_track_miss_interval": 0, "filter_track_min_duration_frames": 1, "extractors_track_triggers": {} } } }, "stream_settings_gpu": { "play_speed": -1, "filter_min_quality": 0.45, "filter_min_face_size": 1, "filter_max_face_size": 8192, "normalized_only": false, "jpeg_quality": 95, "overall_only": false, "use_stream_timestamp": false, "ffmpeg_params": [], "router_timeout_ms": 15000, "router_verify_ssl": true, "router_headers": [], "router_body": [], "start_stream_timestamp": 0, "imotion_threshold": 0, "rot": "", "roi": "", "realtime_post_interval": 1, "realtime_post_every_interval": false, "ffmpeg_format": "", "disable_drops": false, "router_full_frame_png": false, "router_disable_normalized": false, "crop_fullframe_rot": false, "realtime_post_first_immediately": false, "post_first_track_frame": false, "post_last_track_frame": false, "track_max_duration_frames": 0, "send_track_history": false, "stream_data_filter": "", "video_transform": "" }, "status": "STARTING", "status_msg": "", "statistic": { "processed_duration": 0, "faces_posted": 0, "faces_failed": 0, "faces_not_posted": 0, "processing_fps": 0, "frames_dropped": 0, "frames_processed": 0, "frames_imotion_skipped": 0, "decoding_soft_errors": 0, "frame_width": 0, "frame_height": 0, "last_stream_timestamp": 0, "objects": {}, "extractors": {}, "job_starts": 0 }, "restream_url": "ws://127.0.0.1:9999/stream/myid-123", "restream_direct_url": "ws://127.0.0.1:9999/directstream/myid-123", "shots_url": "http://127.0.0.1:9999/shot/myid-123", "worker_id": "ntechlab_cpu_bed698ede98011e0311d7669f7ff0b18", "version": "cpa3slouvrb8u0vir3j0" } Delete Job ^^^^^^^^^^^^^^^^ .. code:: DELETE /job/:id This method deletes a job by id. .. rubric:: Parameters in path segments: ``id``: job id. .. rubric:: Returns: JSON representation of the deleted job object. .. rubric:: Example .. rubric:: Request .. code:: curl -s 'http://localhost:18810/job/myid-123' -X DELETE | jq .. rubric:: Response .. code:: { "id": "myid-123", "enabled": true, "stream_url": "http://1.2.3.4/stream.mp4", "labels": { "district": "SVAO" }, "router_url": "http://127.0.0.1:7777/mocks/events/records", "router_events_url": "http://127.0.0.1:7777/mocks/actions/records", "single_pass": false, "stream_settings": { "play_speed": -1, "disable_drops": false, "imotion_threshold": 0, "router_timeout_ms": 15000, "router_verify_ssl": true, "router_headers": [], "router_body": [], "ffmpeg_params": [], "ffmpeg_format": "", "use_stream_timestamp": false, "start_stream_timestamp": 0, "rot": "", "stream_data_filter": "", "video_transform": "", "enable_recorder": false, "enable_liveness": false, "record_audio": false, "detectors": { "face": { "filter_min_quality": 0.45, "filter_min_size": 1, "filter_max_size": 8192, "roi": "", "fullframe_crop_rot": false, "fullframe_use_png": false, "jpeg_quality": 95, "overall_only": false, "realtime_post_first_immediately": false, "realtime_post_interval": 1, "realtime_post_every_interval": false, "track_interpolate_bboxes": true, "track_miss_interval": 1, "track_overlap_threshold": 0.25, "track_max_duration_frames": 0, "track_send_history": false, "post_best_track_frame": true, "post_best_track_normalize": true, "post_first_track_frame": false, "post_last_track_frame": false, "tracker_type": "simple_iou", "track_deep_sort_matching_threshold": 0.65, "track_deep_sort_filter_unconfirmed_tracks": true, "track_object_is_principal": false, "track_history_active_track_miss_interval": 0, "filter_track_min_duration_frames": 1, "extractors_track_triggers": {} } } }, "stream_settings_gpu": { "play_speed": -1, "filter_min_quality": 0.45, "filter_min_face_size": 1, "filter_max_face_size": 8192, "normalized_only": false, "jpeg_quality": 95, "overall_only": false, "use_stream_timestamp": false, "ffmpeg_params": [], "router_timeout_ms": 15000, "router_verify_ssl": true, "router_headers": [], "router_body": [], "start_stream_timestamp": 0, "imotion_threshold": 0, "rot": "", "roi": "", "realtime_post_interval": 1, "realtime_post_every_interval": false, "ffmpeg_format": "", "disable_drops": false, "router_full_frame_png": false, "router_disable_normalized": false, "crop_fullframe_rot": false, "realtime_post_first_immediately": false, "post_first_track_frame": false, "post_last_track_frame": false, "track_max_duration_frames": 0, "send_track_history": false, "stream_data_filter": "", "video_transform": "" }, "status": "DELETED", "status_msg": "", "statistic": { "processed_duration": 0, "faces_posted": 0, "faces_failed": 0, "faces_not_posted": 0, "processing_fps": 0, "frames_dropped": 0, "frames_processed": 0, "frames_imotion_skipped": 0, "decoding_soft_errors": 0, "frame_width": 0, "frame_height": 0, "last_stream_timestamp": 0, "objects": null, "extractors": null, "job_starts": 0 }, "restream_url": "ws://127.0.0.1:9999/stream/myid-123", "restream_direct_url": "ws://127.0.0.1:9999/directstream/myid-123", "shots_url": "http://127.0.0.1:9999/shot/myid-123", "worker_id": "ntechlab_cpu_bed698ede98011e0311d7669f7ff0b18", "version": "cpa3slouvrb8u0vir3j0" } Update Job ^^^^^^^^^^^^^^^ .. code:: PATCH /job/:id The method updates job parameters by id. .. rubric:: Parameters in path segments: ``id``: job id. .. rubric:: Parameters in request body: * ``enabled``: job enabled state. * ``stream_url``: URL/address of a video stream/file to process. * ``labels``: key-value labels, that will be used by the router component (for example, ``facerouter``) to find processing directives for objects detected in this video stream. * ``single_pass``: if true, disable restarting video processing upon error (by default, false). * ``router_url``: URL/address of the router component (for example, ``facerouter``) to receive detected objects from the ``video-worker`` component for processing. * ``router_events_url``: URL/address of the router component (for example, ``facerouter``), that uses events extraction. * ``stream_settings``: stream processing common settings and detector parameters. * ``stream_settings_gpu``: deprecated video stream settings. Not recommended for use. Only for compatibility. .. rubric:: Returns: JSON representation of the updated job object. .. rubric:: Non-editable fields in response: * ``id``: job id. * ``status``: job status. * ``status_msg``: additional job status info. * ``statistic``: job progress statistics (progress duration, number of posted and not posted objects, processing fps, the number of processed and dropped frames, job start time, etc.). * ``restream_url``: websocket URL where processing stream with detected objects streams live time. * ``restream_direct_url``: websocket URL where original stream with input quality streams live time. * ``shots_url``: HTTP URL where actual stream screenshot can be downloaded. * ``worker_id``: unique id of the ``video worker`` instance with a processing job. * ``version``: job version. .. rubric:: Simple example .. rubric:: Request .. code:: curl -s 'http://localhost:18810/job/myid-123' -X PATCH --data '{"router_url":"http://myrouter"}' | jq .. code:: { "id": "myid-123", "enabled": true, "stream_url": "http://1.2.3.4/stream.mp4", "labels": { "district": "SVAO" }, "router_url": "http://myrouter", "router_events_url": "http://127.0.0.1:7777/mocks/actions/records", "single_pass": false, "stream_settings": { "play_speed": -1, "disable_drops": false, "imotion_threshold": 0, "router_timeout_ms": 15000, "router_verify_ssl": true, "router_headers": [], "router_body": [], "ffmpeg_params": [], "ffmpeg_format": "", "use_stream_timestamp": false, "start_stream_timestamp": 0, "rot": "", "stream_data_filter": "", "video_transform": "", "enable_recorder": false, "enable_liveness": false, "record_audio": false, "detectors": { "face": { "filter_min_quality": 0.45, "filter_min_size": 1, "filter_max_size": 8192, "roi": "", "fullframe_crop_rot": false, "fullframe_use_png": false, "jpeg_quality": 95, "overall_only": false, "realtime_post_first_immediately": false, "realtime_post_interval": 1, "realtime_post_every_interval": false, "track_interpolate_bboxes": true, "track_miss_interval": 1, "track_overlap_threshold": 0.25, "track_max_duration_frames": 0, "track_send_history": false, "post_best_track_frame": true, "post_best_track_normalize": true, "post_first_track_frame": false, "post_last_track_frame": false, "tracker_type": "simple_iou", "track_deep_sort_matching_threshold": 0.65, "track_deep_sort_filter_unconfirmed_tracks": true, "track_object_is_principal": false, "track_history_active_track_miss_interval": 0, "filter_track_min_duration_frames": 1, "extractors_track_triggers": {} } } }, "stream_settings_gpu": { "play_speed": -1, "filter_min_quality": 0.45, "filter_min_face_size": 1, "filter_max_face_size": 8192, "normalized_only": false, "jpeg_quality": 95, "overall_only": false, "use_stream_timestamp": false, "ffmpeg_params": [], "router_timeout_ms": 15000, "router_verify_ssl": true, "router_headers": [], "router_body": [], "start_stream_timestamp": 0, "imotion_threshold": 0, "rot": "", "roi": "", "realtime_post_interval": 1, "realtime_post_every_interval": false, "ffmpeg_format": "", "disable_drops": false, "router_full_frame_png": false, "router_disable_normalized": false, "crop_fullframe_rot": false, "realtime_post_first_immediately": false, "post_first_track_frame": false, "post_last_track_frame": false, "track_max_duration_frames": 0, "send_track_history": false, "stream_data_filter": "", "video_transform": "" }, "status": "STARTING", "status_msg": "", "statistic": { "processed_duration": 0, "faces_posted": 0, "faces_failed": 0, "faces_not_posted": 0, "processing_fps": 0, "frames_dropped": 0, "frames_processed": 0, "frames_imotion_skipped": 0, "decoding_soft_errors": 0, "frame_width": 0, "frame_height": 0, "last_stream_timestamp": 0, "objects": null, "extractors": null, "job_starts": 0 }, "restream_url": "ws://127.0.0.1:9999/stream/myid-123", "restream_direct_url": "ws://127.0.0.1:9999/directstream/myid-123", "shots_url": "http://127.0.0.1:9999/shot/myid-123", "worker_id": "ntechlab_cpu_bed698ede98011e0311d7669f7ff0b18", "version": "cpa5ob0uvrb8u0vir3mg" } .. rubric:: Disable detector example .. rubric:: Request .. code:: $ curl -s 'http://localhost:18810/job/myid-123' -X PATCH --data '{"stream_settings":{"detectors":{"face":null}}}' | jq .. code:: { "id": "myid-123", "enabled": true, "stream_url": "http://1.2.3.4/stream.mp4", "labels": { "district": "SVAO" }, "router_url": "http://myrouter", "router_events_url": "http://127.0.0.1:7777/mocks/actions/records", "single_pass": false, "stream_settings": { "play_speed": -1, "disable_drops": false, "imotion_threshold": 0, "router_timeout_ms": 15000, "router_verify_ssl": true, "router_headers": [], "router_body": [], "ffmpeg_params": [], "ffmpeg_format": "", "use_stream_timestamp": false, "start_stream_timestamp": 0, "rot": "", "stream_data_filter": "", "video_transform": "", "enable_recorder": false, "enable_liveness": false, "record_audio": false, "detectors": {} }, "stream_settings_gpu": { "play_speed": -1, "filter_min_quality": 0.45, "filter_min_face_size": 1, "filter_max_face_size": 8192, "normalized_only": false, "jpeg_quality": 95, "overall_only": false, "use_stream_timestamp": false, "ffmpeg_params": [], "router_timeout_ms": 15000, "router_verify_ssl": true, "router_headers": [], "router_body": [], "start_stream_timestamp": 0, "imotion_threshold": 0, "rot": "", "roi": "", "realtime_post_interval": 1, "realtime_post_every_interval": false, "ffmpeg_format": "", "disable_drops": false, "router_full_frame_png": false, "router_disable_normalized": false, "crop_fullframe_rot": false, "realtime_post_first_immediately": false, "post_first_track_frame": false, "post_last_track_frame": false, "track_max_duration_frames": 0, "send_track_history": false, "stream_data_filter": "", "video_transform": "" }, "status": "STARTING", "status_msg": "", "statistic": { "processed_duration": 0, "faces_posted": 0, "faces_failed": 0, "faces_not_posted": 0, "processing_fps": 0, "frames_dropped": 0, "frames_processed": 0, "frames_imotion_skipped": 0, "decoding_soft_errors": 0, "frame_width": 0, "frame_height": 0, "last_stream_timestamp": 0, "objects": {}, "extractors": {}, "job_starts": 0 }, "restream_url": "ws://127.0.0.1:9999/stream/myid-123", "restream_direct_url": "ws://127.0.0.1:9999/directstream/myid-123", "shots_url": "http://127.0.0.1:9999/shot/myid-123", "worker_id": "ntechlab_cpu_bed698ede98011e0311d7669f7ff0b18", "version": "cpa5ob0uvrb8u0vir3mg" } Restart Job ^^^^^^^^^^^^^^^^^^ .. code:: RESTART /job/:id POST /job/:id/restart This method restarts a job by ID. .. rubric:: Parameters in path segments: ``id``: job id. .. rubric:: Returns: ``HTTP/1.1 200 OK`` on success. .. rubric:: Example .. rubric:: Request .. code:: curl -s -D - -X RESTART http://localhost:18810/job/1 .. rubric:: Response .. code:: HTTP/1.1 200 OK Content-Type: application/json X-Request-Id: VM:n267l1VQ Date: Mon, 27 May 2024 08:12:19 GMT Content-Length: 0 Get Actual Stream Settings as JSON-schema ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code:: GET /schemas/stream_settings This method gets actual stream settings parameters as JSON schema. .. rubric:: Parameters: This method doesn't accept any parameters. .. rubric:: Returns: JSON representation, free form of JSON schema. .. rubric:: Example .. rubric:: Request .. code:: curl -s 'http://localhost:18810/schemas/stream_settings' | jq .. rubric:: Response .. code:: { "$schema": "http://json-schema.org/draft/2020-12/schema", "$id": "https://my/videomanager-api/my/stream-settings", "$ref": "#/$defs/StreamSettings", "$defs": { "Detector": { "properties": { "filter_min_quality": { "type": "number" }, "filter_min_size": { "type": "integer" }, "filter_max_size": { "type": "integer" }, "roi": { "type": "string" }, "fullframe_crop_rot": { "type": "boolean" }, "fullframe_use_png": { "type": "boolean" }, "jpeg_quality": { "type": "integer" }, "overall_only": { "type": "boolean" }, "realtime_post_first_immediately": { "type": "boolean" }, "realtime_post_interval": { "type": "number" }, "realtime_post_every_interval": { "type": "boolean" }, "track_interpolate_bboxes": { "type": "boolean" }, "track_miss_interval": { "type": "number" }, "track_overlap_threshold": { "type": "number" }, "track_max_duration_frames": { "type": "integer" }, "track_send_history": { "type": "boolean" }, "post_best_track_frame": { "type": "boolean" }, "post_best_track_normalize": { "type": "boolean" }, "post_first_track_frame": { "type": "boolean" }, "post_last_track_frame": { "type": "boolean" }, "tracker_type": { "type": "string" }, "track_deep_sort_matching_threshold": { "type": "number" }, "track_deep_sort_filter_unconfirmed_tracks": { "type": "boolean" }, "track_object_is_principal": { "type": "boolean" }, "track_history_active_track_miss_interval": { "type": "number" }, "filter_track_min_duration_frames": { "type": "integer" }, "extractors_track_triggers": { "patternProperties": { ".*": { "$ref": "#/$defs/ExtractorTrackTriggers" } }, "type": "object" } }, "additionalProperties": false, "type": "object" }, "ExtractorTrackTriggers": { "properties": { "run_on_start": { "type": "boolean" }, "run_on_end": { "type": "boolean" }, "run_interval": { "type": "number" }, "post_frame": { "type": "boolean" } }, "additionalProperties": false, "type": "object" }, "StreamSettings": { "properties": { "play_speed": { "type": "number" }, "disable_drops": { "type": "boolean" }, "imotion_threshold": { "type": "number" }, "router_timeout_ms": { "type": "integer" }, "router_verify_ssl": { "type": "boolean" }, "router_headers": { "items": { "type": "string" }, "type": "array" }, "router_body": { "items": { "type": "string" }, "type": "array" }, "ffmpeg_params": { "items": { "type": "string" }, "type": "array" }, "ffmpeg_format": { "type": "string" }, "use_stream_timestamp": { "type": "boolean" }, "start_stream_timestamp": { "type": "integer" }, "rot": { "type": "string" }, "stream_data_filter": { "type": "string" }, "video_transform": { "type": "string" }, "enable_recorder": { "type": "boolean" }, "enable_liveness": { "type": "boolean" }, "record_audio": { "type": "boolean" }, "detectors": { "patternProperties": { ".*": { "$ref": "#/$defs/Detector" } }, "type": "object" } }, "additionalProperties": false, "type": "object" } } } Get Actual GPU Stream Settings as JSON-schema ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code:: GET /schemas/stream_settings_gpu This method gets actual GPU stream settings (outdated format of the stream settings) parameters as JSON schema. .. rubric:: Parameters: This method doesn't accept any parameters. .. rubric:: Returns: JSON representation, free form of JSON schema. .. rubric:: Example .. rubric:: Request .. code:: curl -s 'http://localhost:18810/schemas/stream_settings_gpu' | jq .. rubric:: Response .. code:: { "$schema": "http://json-schema.org/draft/2020-12/schema", "$id": "https://my/videomanager-api/my/stream-settings-gpu", "$ref": "#/$defs/StreamSettingsGpu", "$defs": { "StreamSettingsGpu": { "properties": { "play_speed": { "type": "number" }, "filter_min_quality": { "type": "number" }, "filter_min_face_size": { "type": "integer" }, "filter_max_face_size": { "type": "integer" }, "normalized_only": { "type": "boolean" }, "jpeg_quality": { "type": "integer" }, "overall_only": { "type": "boolean" }, "use_stream_timestamp": { "type": "boolean" }, "ffmpeg_params": { "items": { "type": "string" }, "type": "array" }, "router_timeout_ms": { "type": "integer" }, "router_verify_ssl": { "type": "boolean" }, "router_headers": { "items": { "type": "string" }, "type": "array" }, "router_body": { "items": { "type": "string" }, "type": "array" }, "start_stream_timestamp": { "type": "integer" }, "imotion_threshold": { "type": "number" }, "rot": { "type": "string" }, "roi": { "type": "string" }, "realtime_post_interval": { "type": "number" }, "realtime_post_every_interval": { "type": "boolean" }, "ffmpeg_format": { "type": "string" }, "disable_drops": { "type": "boolean" }, "router_full_frame_png": { "type": "boolean" }, "router_disable_normalized": { "type": "boolean" }, "crop_fullframe_rot": { "type": "boolean" }, "realtime_post_first_immediately": { "type": "boolean" }, "post_first_track_frame": { "type": "boolean" }, "post_last_track_frame": { "type": "boolean" }, "track_max_duration_frames": { "type": "integer" }, "send_track_history": { "type": "boolean" }, "stream_data_filter": { "type": "string" }, "video_transform": { "type": "string" } }, "additionalProperties": false, "type": "object" } } }