Streaming sub-frames using Protocol Integration

Hello,

I am trying to stream historical video from the Image Server using Protocol Integration. From reading the MIPSDK, it appears that I need to use the “Goto” and “Next” requests to retrieve individual frames from the server. In my case I am requesting the raw video feed as opposed to the transcoded jpeg frames.

The problem that I am encountering is that I am getting around 1 frame per second (FPS) instead of the 8 FPS that is configured on the camera in the Management Client. If I stream using the “Live” request, I receive the expected 8 FPS in the native format.

My understanding of the protocol is that after first sending a “Connect” request, I then need to send a single “Goto” request for the first frame. For each subsequent frame I need to send a “Next” request. To build up a video stream I therefore need to send 8 “Next” requests per second for an 8 FPS video stream.

Here are the requests that I am sending to the Image Server

==== Connect ====

<?xml version="1.0" encoding="UTF-8"?>

1

IRRELEVANT

IRRELEVANT

connect

7a5d0046-6268-4612-89a9-2aa16df32c7f

no

id=7a5d0046-6268-4612-89a9-2aa16df32c7f&streamid=44d8dd96-d449-48e3-99db-78925b08c651&connectiontoken=TOKEN#a0307807-6c2d-4a53-8d9e-47e63fb8a3ea#xprotectmaster//ServerConnector#

<privacymask>no</privacymask>

<multipartdata>yes</multipartdata>

<datarestriction>no</datarestriction>
<allframes>yes</allframes>

<keepaspectratio>yes</keepaspectratio>

<allowupsizing>no</allowupsizing>

==== Goto ====

<?xml version="1.0" encoding="UTF-8"?>

3

goto

1522148021638

no

==== Next ====

<?xml version="1.0" encoding="UTF-8"?>

4

next

Any advice that you can offer about where I may have gone wrong would be greatly appreciated.

Conversely if you can advise me of a more efficient means of streaming historical video that would also help me to solve my issue.

Kind Regards

When retrieving frames in playback - you retrieve an entire GOP at a time. The default length of a GOP is 1 second. So you need to split the individual frames upon reception.

Please check the GenericByteData header for flags and sizes.

Thanks Anders.

That was exactly the problem and I have found the missing frames.