На странице:

Общие сведения

Экспорт описан в proto-файлах ExportService.proto и Export.proto.

Для работы с экспортом используется 6 методов:

  1. ListSessions – используется для получения списка всех операций экспорта.
  2. StartSession – для запуска новой операции экспорта.
  3. GetSessionState – для получения статуса конкретной операции.
  4. StopSession – для остановки операции. 
  5. DestroySession – для удаления операции вместе с результатами экспорта.
  6. DownloadFile – для скачивания результатов экспорта.

Задачи по экспорту выполняет не gRPC-канал, а агент экспорта. В данный момент создать агент экспорт через gRPC API нельзя, только вручную в Клиенте.

После того как будет создан хотя бы один агент экспорта, его можно использовать для выполнения операций. Если агентов экспорта несколько и в методе StartSession он явно не задается, то будет использоваться агент с индексом 1.

Операция экспорта запускается на узле, на котором находится камера. Если запускается экспорт по нескольким видеокамерам, то используется первый узел. При этом не требуется подключения к каждому узлу – задачи ретранслируются на них автоматически.

Результаты экспорта формируются на локальном Сервере Интеллект X и могут быть переданы путем выгрузки файлов с помощью метода DownloadFile, который поддерживает загрузку с произвольного места файла.

Метод StartSession

В методе передаются опции экспорта, которые описываются в сообщении Options.

message Options
{
 oneof mode
 {
  LiveMode live = 1;
  ArchiveMode archive = 2;
 }
 oneof output_type
 {
  SnapshotType snapshot = 3;
  StreamType stream = 4;
 }
 repeated CommonSetting settings = 5;
 // Maximum size of output file.
 // New file will be created on reaching this value.
 uint64 max_file_size = 6;
 string export_agent_access_point = 100;
}

где,

  • oneof подразумевает выбор одного свойства, которые могут быть заданы в данной операции.
  • export_agent_access_point – id агента экспорта.

С помощью комбинаций mode и output_type получаются 4 типа экспорта:

  1. LiveMode + SnapshotType – экспорт кадра из режима реального времени.

  2. LiveMode + StreamType – экспорт видео из режима реального времени.

  3. ArchiveMode + SnapshotType – экспорт кадра из архива.

  4. ArchiveMode + StreamType – экспорт видео из архива.

В сообщениях LiveMode, ArchiveMode, SnapshotType и StreamType передаются параметры данного типа экспорта. Сообщение CommonSetting используется для передачи общих настроек операции экспорта.

Список основных параметров экспорта:

ПараметрРежим экспортаОписание
Options max_file_sizeЭкспорт видеоМаксимальный размер файла (см. Настройка параметров экспорта).
Options export_agent_access_pointВсеId агента экспорта.
StreamType formatЭкспорт видеоФормат выходного файла.
SnapshotType formatЭкспорт кадраФормат выходного файла.
ArchiveMode/LiveMode Source originВсеИсточник видео (см. Получение списка видеокамер и их параметров через gRPC API (DomainService)).
ArchiveMode Source storagesЭкспорт из архиваАрхив (см. Получение информации об архивах через gRPC API (DomainService)).
ArchiveMode start_timestampЭкспорт из архиваВременная метка начала интервала экспорта.
ArchiveMode end_timestampЭкспорт из архиваВременная метка конца интервала экспорта.
CommonSetting commentВсеКомментарий.
CommonSetting timestamp_formatВсеФормат временной метки.
CommonSetting text_placeВсеОбласть для комментария.
CommonSetting text_colorВсеЦвет текста комментария.
CommonSetting burn_subtitleВсеНаложение текста (да или нет).
CommonSetting apply_maskВсеНаложение маски (да или нет).
StreamSetting video_qualityЭкспорт видеоКачество видеопотока.
StreamSetting video_codecЭкспорт видеоВидеокодек.
StreamSetting audio_qualityЭкспорт видеоКачество аудиопотока.
StreamSetting audio_codecЭкспорт видеоАудиокодек.
StreamSetting frame_frequencyЭкспорт видеоЧастота кадров.
SnapshotSetting pdf_layoutЭкспорт кадраОриентация PDF файла.
SnapshotSetting snapshot_placeЭкспорт кадраРасположение кадра в PDF файле.
SnapshotSetting comment_placeЭкспорт кадраРасположение комментария в PDF файле.
SnapshotSetting timestamp_placeЭкспорт кадраРасположение времени кадра в PDF файле.
SourceSetting crop_areaВсеОбласть экспорта (см. Задание области экспорта и масок).
SourceSetting mask_spaceВсеМаска.
SourceSetting text_placeВсеОбласть для комментария.
SourceSetting text_colorВсеЦвет текста комментария.

Для каждого типа экспорта существуют таймауты, по истечение которого операция прерывается, если к ней не обращался метод GetSessionState.

Таймаут отсчитывается с момента запуска операции экспорта и/или с момента последнего выполнения метода GetSessionState.

Для экспорта видео из режима реального времени таймаут 5 минут, для всех остальных типов экспорта – 30 минут. 

В ответ на метод будет получен id операции экспорта.

Метод ListSessions

В ответе на метод будет получено сообщение SessionInfo для каждой операции экспорта. Если все операции в одном ответе не поместились, то также будет передан next_page_token для следующей страницы.

В сообщении SessionInfo содержится:

  1. id операции экспорта и его свойства.
  2. Статус экспорта.

    enum EState
    {
     S_NONE  = 0;
     S_RUNNING = 1;
     S_COMPLETED = 2;
     S_REMOVED = 3;
    }

    где статус S_COMPLETED не гарантирует того, что экспорт завершился успешно.

  3. Если для операции экспорта есть результаты, то будет получено сообщение Result.

    message Result
    {
     message File
     {
      string path = 1;
      uint64 size = 2;
      string min_timestamp = 3;
      string max_timestamp = 4;
      string mime_type = 5;
     }
     repeated File files = 1;
     bool succeeded = 2;
    }

    где,

    1. succeeded – признак успешного завершения;

    2. сообщение File – описывает список готовых для скачивания файлов, в том числе условный путь path для применения в методе DownloadFile и размер size.

После перехода операции экспорта в статус S_COMPLETED есть 1 час для скачивания файлов с Сервера. При этом таймаут обнуляется после методов GetSessionState и DownloadFile.

Если таймаут будет превышен, то файлы будут удалены с Сервера.

Метод GetSessionState

В методе передается id операции экспорта. 

В ответ на метод будет получен его статус EState.

Если для операции экспорта есть результаты, то будет получено сообщение Result.

Метод StopSession

В методе передается id операции экспорта. 

В ответ на метод будет получен его обновленный статус EState.

Метод DownloadFile

Метод возможен только после завершения операции экспорта.

В методе передается:

  1. id операции экспорта;
  2. path – путь к файлу;
  3. chunk_size_kb – размер блока данных;
  4. start_from_chunk_index – порядковый номер блока данных.

В ответ на метод будут получены сообщения FileChunk с блоками данных файла, которые будут приходить пока весь файл не будет скачан.

Метод DestroySession

В методе передается id операции экспорта. 

  • No labels