Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

В ответе приходит поток в виде:

 

HTTP/1.0 200 OK
Connection: close
Server: ITV-Intellect-Webserver/4.9.0.0
Cache-Control: no-store,no-cache,must-revalidate,max-age=0
Pragma: no-cache
Date: Mon, 13 Jan 2013 10:44:27 GMT
Content-Type: multipart/mixed;boundary=videoframe
 
--videoframe
Content-Type: text/xml
Content-Length: 138 
   
<video_in>
  <sessionid>FC126734</sessionid>
  <video_in>CAM:5</video_in>
  <newstate>started</newstate>
  <errcode>100</errcode>
</video_in
 --videoframe
Content-Type: image/jpeg
Content-Length: 23978
X-Width: 320
X-Height: 240
X-Time: 2013-03-15T10:51:44.314+04:00
X-Timestamp: 0.000
 
 <jpeg image>
--videoframe
Content-Type: image/jpeg
Content-Length: 23651
X-Width: 320
X-Height: 240
X-Time: 2013-03-15T10:51:44.314+04:00
X-Timestamp: 0.152
 
 <jpeg image>

 

Здесь:

  • X-Width - ширина изображения.
  • X-Height- высота изображения.
  • X-Time - абсолютное время формирования фрейма.
  • X-Timestamp - относительное время фрейма в секундах (относительно начала потока).

В случае завершения потока по вине сервера может прийти завершающий пакет:

 

--videoframe
Content-Type: text/xml
Content-Length: 106   
<video_in>
  <sessionid>FC126734</sessionid>
  <video_in>CAM:5</video_in>
  <newstate>closed</newstate>
  <errcode>103</errcode>
</video_in>

 

  • sessionid -  id сессии (тот же что и при старте).
  • video_in - идентификатор камеры.
  • errcode - код ошибки:
    • 100 – отсутствие ошибки.
    • 101 – слишком много подключенных пользователей.
    • 102 – неверный пароль (пароль, теоретически, могут поменять в любой момент работы).
    • 103 – видео недоступно.
    • 104 – старая версия клиента. Обновите версию

Поток состоит из фреймов и сообщений.

Все даты посылаются в 24-часовом формате:  dd.MM.yy kk:mm:ss. Например, 15.05.10 10:51:44 – 15 мая 2010 года 10 часов 51 минута 44 секунды

В ответе сразу после http заголовка присылаются три строчки:

sessionid=29101F1\n
errmsg=Error text message\n
errcode=100\n

 

Здесь:

  • sessionid – id сессии. Это зарезервированный параметр, не используется.
  • errmsg – сообщение об ошибке в текстовом виде;
  • errcode принимает следующие значения:
    • 100 – ошибок нет
    • 101 – слишком много подключенных пользователей
    • 102 – неверный пароль (теоретически пароль может быть изменен в любой момент работы)
    • 103 – видеосервер не доступен
    • 104 – старая версия клиента. Обновите версию.

 

После этих трёх строчек (если код errcode=100) будет получен видеофрейм или cообщение.

Формат видеофрейма:

Frame\n
size=23978\n
delay=5243\n
width=320\n
height=240\n
file.name=C:\VIDEO\13-05-10 19\1._01\n
color=1\n
frm.total=500\n
frm.id=100\n
frm.time=15.05.10 10:51:44\n
format=1\n
byte[size-4] jpegdata
byte[4]  jpegdataformat

Здесь:

  • В последних 4-х байтах должно содержаться название: либо JPEG, либо JPG1. Другие форматы не поддерживаются.
  • size – размер бинарного буфера с изображением
  • delay – задержка между кадрами в миллисекундах.
  • width – ширина в пикселях.
  • height – высота в пикселях.
  • file.name – имя файла архива. Используется при навигации по архиву.
  • color – 0-черно-белый, 1-цвет
  • frm.total – всего фреймов в файле архива (для живого видео этот параметр не важен)
  • frm.id – порядковый номер в файле архива (для живого видео этот параметр не важен)
  • frm.time – время возникновения фрейма
  • format – всегда 1;
  • jpegdata – буфер с фреймом JPEG;
  • jpegdataformat – 4 байта с JPEG или JPG1.

Формат сообщения:

Msg=start\n
type=CAM\n
id=1\n
action=DISABLED\n
paramname=paramvalue\n
Msg=end\n

 

Здесь:

  • Msg=start и Msg=end отмечают начало и конец сообщения соответственно.
  • type – тип объекта, от которого пришло сообщение.
  • id – идентификатор объекта.
  • action – действие.
  • paramname=paramvalue – набор параметров и их значений. Параметров может быть несколько и с разными названиями
    • .