MIP SDK - SVQR feed

Hello,

We have a customer who is about to install the onboard cameras on trains. Those cameras would be configured with a “closed” feed and will use SQVR (Scalable Video Quality Recording) feature.

I searched and read about it, and understood that such cameras do not keep the connection always open to the server. It opens the connection per request (if someone wants to see live or recorded video) and then closes the feed once the camera was closed by the user.

We are using MIP SDK to show the video. Do we need to develop something compared to other cameras?

For me the flow looks like this:

1. Check if the camera is SVQR;

2. If so, then request the connection to open;

3. Once the connection is open and the video is available, show the video;

4. Once completed, close the feed.

I could not find anything about SVQR and cameras with a “closed” feed in dev documentation, so my questions are:

1. How to understand in the SDK if the camera is SVQR or not, where this info is stored?

2. All steps 1-4, do I need to develop them or it is built-in in the SDK?

Is it enough to send Play message to start playing and stop to stop it?

Play:

EnvironmentManager.Instance.SendMessage(new VideoOS.Platform.Messaging.Message(
MessageId.SmartClient.PlaybackCommand,
new PlaybackCommandData()
{
 Command = PlaybackData.Play,
 Speed = _speed
}), _playbackControllerFqid);

Stop:

EnvironmentManager.Instance.SendMessage(new VideoOS.Platform.Messaging.Message(
MessageId.SmartClient.PlaybackCommand,
new PlaybackCommandData() { Command = PlaybackData.PlayStop }), _playbackControllerFqid);

3. How to understand by code the stream status (is it available, failed to open, etc)?

Thank you,

Vadym

Hi Vadym,

I don’t believe you need to ask the recording server to start the stream - if the stream is configured with the “WhenNeeded” LiveMode, then any time a client requests live video (smart client, mobile client, or SDK/api client), the recording server will request the feed from the camera and pass it on to you.

The SVQR feature is generally used for streaming and recording a low quality feed to the recording server normally, and then allowing the user, or a rule, to pull the higher quality video from the edge storage. Once that higher quality footage is pulled into the recording server’s media database, you would then have access to the HD video in the client.

If you want to submit a remote retrieval request from code, I think you would use the RetrievalTaskManager though I haven’t used it yet myself. It has a few Retrieve method overloads.

If you want to know what streams are available and their status, it is unrelated to SVQR but you can get them from the RecorderStatusService2 API using the GetVideoDeviceStatistics method.