Видео
Вывести списком видеоархив
Чтобы составить список видеоархивов, используйте следующий метод:
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 и хранятся только в 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 и хранятся только в 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/