Документация для версии Интеллект 4.10.4. Документация на другие версии также доступна.

Предыдущая страница Следующая страница


You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

В разделе:
 

Поток из видеоархива присылается в таком же формате, как и живое видео.

Важные поля видеофрейма при работе с архивом:

file.name – значениие этого поля нужно хранить для навигации внутри архива (покадровый просмотр, просмотр по записям и т.п.)

frm.total – сколько всего фреймов в записи

frm.id – id текущего фрейма в записи (начинается с нуля)

Информация о записях в архиве передаётся посредством Msg одним из следующих способов:

  1. Msg=start\n
    type=CAM\n
    id=1\n
    action=SET_INTERVALSREC\n
    intervals=14-05-08 14:06:25 14-05-08 14:06:26;14-05-08 14:06:30 14-05-08 14:06:31;\n
    Msg=end\n
  2. Msg=start\n
    type=CAM\n
    id=1\n
    action=SET_INTERVALSREC\n
    intervals=14:06:25 14:06:26;14:06:30 14:06:31;\n
    date=14-05-08
    Msg=end\n

В обоих случаях в сообщениях находится одна и та же информация, только по-разному отформатированная.

Информация о начале и конце записи разделены пробелом, информация о записях разделена ";"

день-месяц-год часы:минуты:секунды

14-05-08 14:06:25 14-05-08 14:06:26

Если значение параметра intervals пустое, значит за заданный день нет записей.

Имея в наличии список записей в архиве, file.name, file.id и набор команд ниже, можно организовать подобие плеера на клиенте (пауза, стоп, проигрывание вперёд-назад и т.п.).

Вход в архив - arc.enter

GET

http://example.com:[port][/somecontext]/secure/video/action.do?version=4.7.8.0&sessionid=29101F1&cam.id=5&command=arc.enter&intervals=true&date=15.05.10 09:51:07&login=XXX&password=YYY

command=arc.enter – команда входа в архив.

date – дата, архив за которую требуется получить.

intervals – присылать информацию о записях в архиве (начало и конец записи).

После входа в архив клиенту присылается сообщение с интервалами и 1 (один кадр).

Проигрывание одной записи архива - "arc.play"

GET

http://example.com:[port][/somecontext]/secure/video/action.do?version=4.7.8.0&sessionid=29101F1&cam.id=5&command=arc.play&file.name=C%3A%5CVIDEO%5C20-05-10%2016%5C0._01&frame.id=0&login=XXX&password=YYY

file.name берётся из пришедшего видеофрейма, frame.id - фрейм, с которого требуется проигрывать архив.

Присылается последовательность фреймов из данного отрезка записи, и на этом проигрывание обрывается (отследить это можно по frame.id).

Непрерывное проигрывание записей архива - "arc.playnonstop"

GET

http://example.com:[port][/somecontext]/secure/video/action.do?version=4.7.8.0&sessionid=29101F1&cam.id=5&command=arc.playnonstop&file.name=C%3A%5CVIDEO%5C20-05-10%2016%5C0._01&frame.id=0&login=XXX&password=YYY

Команда аналогична "arc.play", но проигрыватель не останавливается на одной записи, а продолжает проигрывать записи архива дальше. Не следует забывать обновлять fila.name и интегвалы, которые будут периодически меняться.

Проигрывание прекращается , когда все записи вплоть до конца архива проиграны.

Переход на один фрейм или на одну запись назад - "arc.prev"

GET

http://example.com:[port][/somecontext]/secure/video/action.do?version=4.7.8.0&sessionid=29101F1&cam.id=5&command=arc.prev&file.name=C%3A%5CVIDEO%5C20-05-10%2016%5C0._01&frame.id=0&login=XXX&password=YYY

Если указывается параметр frame.id, то система ищет предыдущий фрейм в архиве и присылает его. Если этот параметр не указан, то присылается первый фрейм предыдущей записи.

В ответ присылается только один фрейм.

Примечание.

Также могут приходить Msg.

Если достигнуто начало архива и больше нет записей, на которые можно было бы переходить, то присылается сообщение:

Msg=start\n
type=CAM\n
id=1\n
action=ARCH_ERROR\n
Msg=end\n
Переход на один фрейм или на одну запись вперёд - "arc.next"

GET

http://example.com:[port][/somecontext]/secure/video/action.do?version=4.7.8.0&sessionid=29101F1&cam.id=5&command=arc.next&file.name=C%3A%5CVIDEO%5C20-05-10%2016%5C0._01&frame.id=0&login=XXX&password=YYY

Если указывается параметр frame.id, то система ищет следующий фрейм в архиве и присылает его. Если этот параметр не указан, то присылается первый фрейм следующей записи.

В ответ присылается один фрейм.

Примечание.

Также могут приходить Msg.

Если достигнут конец архива и нет больше записей, на которые можно было бы переходить, то присылается сообщение:

Msg=start\n
type=CAM\n
id=1\n
action=ARCH_ERROR\n
Msg=end\n
Остановить проигрывание - "arc.stop"

GET

http://example.com:[port][/somecontext]/secure/video/action.do?version=4.7.8.0&sessionid=29101F1&cam.id=5&command=arc.stop&login=XXX&password=YYY

Получение списка записей

GET

http://example.com:[port][/somecontext]/secure/archive/CAM:2/[2011-12-30|2011-12][?splitTreshold=50]

splitTreshold – если разница между окончанием предыдущей записи и началом следующей меньше этого числа (в миллисекундах), то записи объединяются в одну. Чтобы никакие записи не объединялись, необходимо указать splitTreshold=0. Значение данного параметра по умолчанию равно 50.

Всё время интерпретируется как локальное для сервера.

Пример. Записи за день (30 декабря 2011 года):   

http://example.com:[port][/somecontext]/secure/archive/CAM:2/2011-12-30/

http://example.com:[port][/somecontext]/secure/archive/CAM:2/2011-12-01/

Пример ответа:

XML:

<?xml version="1.0" encoding="UTF-8"?>
<days>
    <day>
        <id>2011-09-01T00:00:00-05:00</id>
        <records>
            <from>2011-09-01T00:00:00-05:00</from>
            <to>2011-09-01T00:00:35-05:00</to>
        </records>
        <records>
            <from>2011-09-01T00:00:35-05:00</from>
            <to>2011-09-01T00:01:10-05:00</to>
        </records>
    </day>
</days>

JSON:

[ {
  "id" : "2011-09-01T00:00:00-0500",
  "records" : [ {
    "from" : "2011-09-01T00:00:00-0500",
    "to" : "2011-09-01T00:00:35-0500"
  }, {
    "from" : "2011-09-01T00:00:35-0500",
    "to" : "2011-09-01T00:01:10-0500"
  }, {
    "from" : "2011-09-01T01:26:24-0500",
    "to" : "2011-09-01T01:26:59-0500"
  } ]
} ]

Пример. Записи за месяц  (показывает, в какие дни сентября есть записи):

http://example.com:[port][/somecontext]/secure/archive/CAM:2/2011-12/

XML:

<?xml version="1.0" encoding="UTF-8"?>
<days>
    <day>
        <id>2011-09-02T00:00:00-05:00</id>
    </day>
    <day>
        <id>2011-09-03T00:00:00-05:00</id>
    </day>
    <day>
        <id>2011-09-05T00:00:00-05:00</id>
    </day>
</days>

JSON:

[ {
  "id" : "2011-09-01T00:00:00-0500",
  "records" : [ ]
}, {
  "id" : "2011-09-03T00:00:00-0500",
  "records" : [ ]
}, {
  "id" : "2011-09-01T00:00:00-0500",
  "records" : [ ]
} ]

Если записей нет, то присылается

XML:

<days/>

JSON:

[]
  • No labels