Видео
Вывести списком видеоархив
Чтобы составить список видеоархивов, используйте следующий метод:
GET /videos/
Запрос содержит следующие QUERY-STRING PARAMETERS.
Название  | 
Схема JSON  | 
Описание  | 
|---|---|---|
  | 
массив из integer  | 
Выбрать видеоролики, относящиеся к нужным событиям.  | 
  | 
date-time  | 
Выбрать объекты с   | 
  | 
date-time  | 
Выбрать объекты со значением   | 
  | 
number  | 
Выбрать объекты со значением   | 
  | 
date-time  | 
Выбрать объекты со значением   | 
  | 
date-time  | 
Выбрать объекты со значением   | 
  | 
number  | 
Выбрать объекты со значением   | 
  | 
number  | 
Выбрать объекты со значением   | 
  | 
string  | 
Количество выводимых результатов.  | 
  | 
string  | 
Выбрать видеоролики с указанным именем.  | 
  | 
string  | 
Допустимые значения: id, created_date, name.  | 
  | 
string  | 
Положение курсора.  | 
  | 
string  | 
Выбрать видеоархивы с указанным значением поля   | 
Например, укажите произвольное значение для вывода результатов в поле limit.
CURL пример
curl -X GET "http://<findface-ip:port>/videos/?limit=2" \
 -H "Accept: application/json" \
 -H "Content-Language: ru" \
 -H "Accept-Language: ru" \
 -H "Authorization: Token <token>" \
В случае успешного ответа (OK: 200) возвращается объект со следующими параметрами. Пример.
Название  | 
Схема JSON  | 
|---|---|
  | 
string┃null  | 
  | 
string┃null  | 
  | 
массив  | 
results содержат массив со следующими параметрами:
Название  | 
Схема JSON  | 
Описание  | 
|---|---|---|
  | 
integer 🆁  | 
ID видеоархива.  | 
  | 
integer  | 
Группа камер.  | 
  | 
string┃null  | 
Название видеоархива. Максимум 256 символа.  | 
  | 
string┃null  | 
URL.  | 
  | 
integer┃null  | 
Камера.  | 
  | 
date-time 🆁  | 
Дата и время начала обработки видео.  | 
  | 
boolean 🆁  | 
Обработка видео активна.  | 
  | 
uri 🆁  | 
URL скриншота.  | 
  | 
{…}  | 
Сериализатор mixin, который вызывает ошибку проверки ValidationError, если представлены избыточные поля. Может использоваться во вложенных сериализаторах.  | 
  | 
number 🆁  | 
Длина источника в секундах.  | 
  | 
{…}  | 
Дополнительная информация о статусе.  | 
  | 
boolean 🆁  | 
  | 
  | 
boolean 🆁  | 
  | 
  | 
integer 🆁  | 
Количество созданных лиц.  | 
  | 
integer 🆁  | 
Размер видеофайла в архиве.  | 
  | 
date-time 🆁  | 
Дата создания объекта.  | 
  | 
integer 🆁  | 
Количество созданных силуэтов.  | 
  | 
integer 🆁  | 
Количество созданных автомобилей.  | 
  | 
integer┃null  | 
Происшествие.  | 
  | 
integer┃null 🆁  | 
Количество созданных из видео кластеров лиц.  | 
  | 
integer┃null 🆁  | 
Количество созданных из видео кластеров силуэтов.  | 
  | 
integer┃null 🆁  | 
Количество созданных из видео кластеров автомобилей.  | 
Примечание
Происшествия не поддерживаются в FindFace Multi 2.1.3 и хранятся только в API.
Пример ответа
{
 "next_page": null,
 "prev_page": null,
 "results": [
   {
     "id": 2,
     "camera_group": 1,
     "name": "file.mp4",
     "url": null,
     "camera": null,
     "processing_start_date": null,
     "active": false,
     "screenshot": "http://<findface-ip:port>/videos/2/screenshot/",
     "stream_settings": {
       "detectors": {
         "face": {
           "filter_max_size": 8192,
           "filter_min_quality": 0.45,
           "filter_min_size": 60,
           "fullframe_crop_rot": false,
           "fullframe_use_png": false,
           "jpeg_quality": 95,
           "overall_only": true,
           "post_best_track_frame": true,
           "post_best_track_normalize": true,
           "post_first_track_frame": false,
           "post_last_track_frame": false,
           "realtime_post_every_interval": false,
           "realtime_post_first_immediately": false,
           "realtime_post_interval": 1,
           "roi": "",
           "track_interpolate_bboxes": true,
           "track_max_duration_frames": 0,
           "track_miss_interval": 1,
           "track_overlap_threshold": 0.25,
           "track_send_history": false,
           "tracker_type": "simple_iou",
           "track_deep_sort_matching_threshold": 0.65,
           "track_deep_sort_filter_unconfirmed_tracks": true
         },
         "body": null,
         "car": null
       },
       "disable_drops": true,
       "ffmpeg_format": "",
       "ffmpeg_params": [],
       "imotion_threshold": 0,
       "play_speed": -1,
       "rot": "",
       "router_timeout_ms": 15000,
       "router_verify_ssl": true,
       "start_stream_timestamp": 0,
       "stream_data_filter": "",
       "use_stream_timestamp": false,
       "video_transform": "",
       "enable_recorder": false,
       "enable_liveness": false
     },
     "source_len": null,
     "health_status": {
       "enabled": false,
       "status": "DISABLED",
       "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,
         "job_starts": 0
       },
       "code": "gray",
       "code_desc": "Обработка видео не запущена"
     },
     "finished": false,
     "queued": false,
     "face_count": 0,
     "file_size": 2259950,
     "created_date": "2023-01-12T08:57:36.811305Z",
     "body_count": 0,
     "car_count": 0,
     "case": null,
     "face_cluster_count": 0,
     "body_cluster_count": 0,
     "car_cluster_count": 0
   }
 ]
}
Добавить новый видеоархив
Чтобы добавить новый видеоархив, используйте следующий метод:
POST /videos/
Тело запроса содержит application/json объект со следующими параметрами:
Название  | 
Схема JSON  | 
Описание  | 
|---|---|---|
  | 
integer  | 
Значение ID группы камер.  | 
  | 
string┃null  | 
Название видеоархива (от 1 до 256 знаков).  | 
  | 
string┃null  | 
Минимум 1 символ.  | 
  | 
integer┃null  | 
Камера.  | 
  | 
{…}  | 
Сериализатор mixin, который вызывает ошибку проверки ValidationError, если представлены избыточные поля. Может использоваться во вложенных сериализаторах.  | 
  | 
integer┃null  | 
Происшествие.  | 
Примечание
Происшествия не поддерживаются в FindFace Multi 2.1.3 и хранятся только в API.
Пример запроса
Совет
Этот пример приведен только для ознакомления, подставьте свои значения в соответствующие поля. Вы можете заполнить только обязательные поля, а остальные будут по умолчанию.
{
 "camera_group": 0,
 "name": "A",
 "url": "A",
 "camera": 0,
 "stream_settings": {
   "detectors": {
     "face": {
       "filter_max_size": 0,
       "filter_min_quality": 0,
       "filter_min_size": 0,
       "fullframe_crop_rot": false,
       "fullframe_use_png": false,
       "jpeg_quality": 0,
       "overall_only": false,
       "post_best_track_frame": false,
       "post_best_track_normalize": false,
       "post_first_track_frame": false,
       "post_last_track_frame": false,
       "realtime_post_every_interval": false,
       "realtime_post_first_immediately": false,
       "realtime_post_interval": 0,
       "roi": "string",
       "track_interpolate_bboxes": false,
       "track_max_duration_frames": 0,
       "track_miss_interval": 0,
       "track_overlap_threshold": 0,
       "track_send_history": false,
       "tracker_type": "string",
       "track_deep_sort_matching_threshold": 0,
       "track_deep_sort_filter_unconfirmed_tracks": false
     },
     "body": {
       "filter_max_size": 0,
       "filter_min_quality": 0,
       "filter_min_size": 0,
       "fullframe_crop_rot": false,
       "fullframe_use_png": false,
       "jpeg_quality": 0,
       "overall_only": false,
       "post_best_track_frame": false,
       "post_best_track_normalize": false,
       "post_first_track_frame": false,
       "post_last_track_frame": false,
       "realtime_post_every_interval": false,
       "realtime_post_first_immediately": false,
       "realtime_post_interval": 0,
       "roi": "string",
       "track_interpolate_bboxes": false,
       "track_max_duration_frames": 0,
       "track_miss_interval": 0,
       "track_overlap_threshold": 0,
       "track_send_history": false,
       "tracker_type": "string",
       "track_deep_sort_matching_threshold": 0,
       "track_deep_sort_filter_unconfirmed_tracks": false
     },
     "car": {
       "filter_max_size": 0,
       "filter_min_quality": 0,
       "filter_min_size": 0,
       "fullframe_crop_rot": false,
       "fullframe_use_png": false,
       "jpeg_quality": 0,
       "overall_only": false,
       "post_best_track_frame": false,
       "post_best_track_normalize": false,
       "post_first_track_frame": false,
       "post_last_track_frame": false,
       "realtime_post_every_interval": false,
       "realtime_post_first_immediately": false,
       "realtime_post_interval": 0,
       "roi": "string",
       "track_interpolate_bboxes": false,
       "track_max_duration_frames": 0,
       "track_miss_interval": 0,
       "track_overlap_threshold": 0,
       "track_send_history": false,
       "tracker_type": "string",
       "track_deep_sort_matching_threshold": 0,
       "track_deep_sort_filter_unconfirmed_tracks": false
     }
   },
   "disable_drops": false,
   "ffmpeg_format": "string",
   "ffmpeg_params": [
     "A"
   ],
   "imotion_threshold": 0,
   "play_speed": 0,
   "rot": "string",
   "router_timeout_ms": 0,
   "router_verify_ssl": false,
   "start_stream_timestamp": 0,
   "stream_data_filter": "string",
   "use_stream_timestamp": false,
   "video_transform": "string",
   "enable_recorder": false,
   "enable_liveness": false
 },
 "case": 0
}
Вы можете отправить в запросе следующие параметры.
{
 "camera_group": 1,
 "name": "Pitt&Jolie"
}
CURL пример
curl -X POST "http://<findface-ip:port>/videos/" \
  -H "Accept: application/json" \
  -H "Content-Language: ru" \
  -H "Accept-Language: ru" \
  -H "Authorization: Token <token>" \
  -H "Content-Type: application/json" \
  -d '{"camera_group":1,"name":"Pitt&Jolie"}' \
Если ответ успешен (Created: 201), то возвращается объект, который содержит следующие параметры. Пример.
Пример ответа
{
 "id": 6,
 "camera_group": 1,
 "name": "Pitt&Jolie",
 "url": null,
 "camera": null,
 "processing_start_date": null,
 "active": false,
 "screenshot": "http://<findface-ip:port>/videos/6/screenshot/",
 "stream_settings": {
   "detectors": {
     "face": {
       "filter_max_size": 8192,
       "filter_min_quality": 0.45,
       "filter_min_size": 60,
       "fullframe_crop_rot": false,
       "fullframe_use_png": false,
       "jpeg_quality": 95,
       "overall_only": true,
       "post_best_track_frame": true,
       "post_best_track_normalize": true,
       "post_first_track_frame": false,
       "post_last_track_frame": false,
       "realtime_post_every_interval": false,
       "realtime_post_first_immediately": false,
       "realtime_post_interval": 1,
       "roi": "",
       "track_interpolate_bboxes": true,
       "track_max_duration_frames": 0,
       "track_miss_interval": 1,
       "track_overlap_threshold": 0.25,
       "track_send_history": false,
       "tracker_type": "simple_iou",
       "track_deep_sort_matching_threshold": 0.65,
       "track_deep_sort_filter_unconfirmed_tracks": true
     },
     "body": {
       "filter_max_size": 8192,
       "filter_min_quality": 0.6,
       "filter_min_size": 70,
       "fullframe_crop_rot": false,
       "fullframe_use_png": false,
       "jpeg_quality": 95,
       "overall_only": true,
       "post_best_track_frame": true,
       "post_best_track_normalize": true,
       "post_first_track_frame": false,
       "post_last_track_frame": false,
       "realtime_post_every_interval": false,
       "realtime_post_first_immediately": false,
       "realtime_post_interval": 1,
       "roi": "",
       "track_interpolate_bboxes": true,
       "track_max_duration_frames": 0,
       "track_miss_interval": 1,
       "track_overlap_threshold": 0.25,
       "track_send_history": false,
       "tracker_type": "simple_iou",
       "track_deep_sort_matching_threshold": 0.65,
       "track_deep_sort_filter_unconfirmed_tracks": true
     },
     "car": {
       "filter_max_size": 8192,
       "filter_min_quality": 0.73,
       "filter_min_size": 100,
       "fullframe_crop_rot": false,
       "fullframe_use_png": false,
       "jpeg_quality": 95,
       "overall_only": true,
       "post_best_track_frame": true,
       "post_best_track_normalize": true,
       "post_first_track_frame": false,
       "post_last_track_frame": false,
       "realtime_post_every_interval": false,
       "realtime_post_first_immediately": false,
       "realtime_post_interval": 1,
       "roi": "",
       "track_interpolate_bboxes": true,
       "track_max_duration_frames": 0,
       "track_miss_interval": 1,
       "track_overlap_threshold": 0.25,
       "track_send_history": false,
       "tracker_type": "simple_iou",
       "track_deep_sort_matching_threshold": 0.65,
       "track_deep_sort_filter_unconfirmed_tracks": true
     }
   }
 },
 "source_len": null,
 "health_status": {
   "enabled": false,
   "status": "WAITING_FOR_SYNC",
   "msg": "",
   "statistic": {},
   "code": "red",
   "code_desc": "Отсутствует задача в видео менеджере. Дождитесь синхронизации."
 },
 "finished": false,
 "queued": false,
 "face_count": 0,
 "file_size": 0,
 "created_date": "2023-01-18T08:38:52.119129Z",
 "body_count": 0,
 "car_count": 0,
 "case": null,
 "face_cluster_count": 0,
 "body_cluster_count": 0,
 "car_cluster_count": 0
}
Далее укажите id , чтобы загрузить файл с помощью запроса PUT /videos/{id}/upload/source_file/.
Загрузить видеофайл
Чтобы загрузить видеофайл, используйте следующий метод:
PUT /videos/{id}/upload/source_file/
Запрос содержит PATH PARAMETERS:
Название  | 
Схема JSON  | 
Описание  | 
|---|---|---|
  | 
integer  | 
Уникальный идентификатор видео.  | 
Прикрепите в тело запроса исходный видеофайл, указав id видеоархива.
Возвращает:
Created: 201 – в случае успеха.
Not Found: 404 – в случае ошибки.
CURL пример
curl -X PUT "http://<findface-ip:port>/videos/6/upload/source_file/" \
 -H "Content-Language: ru" \
 -H "Accept-Language: ru" \
 -H "Authorization: Token <token>" \
 -H "Content-Type: video/mp4" \
 --data-binary @pittjolie.mp4 \
Запуск обработки видеоархива
Чтобы запустить обработку видеоархива, используйте следующий метод:
POST /videos/{id}/process/
Запрос содержит id в PATH PARAMETERS, обозначающий уникальный идентификатор видеоархива.
CURL пример
curl -X POST "http://<findface-ip:port>/videos/6/process/" \
 -H "Content-Language: ru" \
 -H "Accept-Language: ru" \
 -H "Authorization: Token <token>" \
Возвращает:
OK: 200 – в случае успеха.
Not Found: 404 – в случае ошибки.
Полезные API запросы
GET /videos/
POST /videos/
GET /videos/{id}/
PUT /videos/{id}/
DELETE /videos/{id}/
POST /videos/{id}/process/
GET /videos/{id}/screenshot/
POST /videos/{id}/screenshot/
POST /videos/{id}/stop/
PUT /videos/{id}/upload/source_file/
GET /videos/count/