Introduction
Introduction to MIP SDK 2023 R3
Discontinuation Announcements
-
The 2023 R3 XProtect release will be the last release of the
MilestoneSystems.VideoOS.Platform.SDK.Debug
NuGet package. -
As previously announced, the 2023 R3 XProtect release will be the last release to include clients, documentation and APIs for C++ integrations. This includes the
MilestoneSystems.VideoOS.Platform.SDK-CPP
andMilestoneSystems.VideoOS.Platform.SDK-CPP.Debug
NuGet packages, the ServerCommandServiceClient DLL and all C++ Toolkit APIs. -
The 2023 R3 XProtect VMS release is the last release to include the Video Processing Service Toolkit sample. Existing VPS solutions will continue to work even after the sample is discontinued as there are no changes to existing APIs. New solutions should instead be built on the Milestone AI Bridge.
MIPSDK General
-
ItemPickerWpfWindow
andItemPickerWpfUserControl
have been added as alternatives toItemPickerForm
andItemPickerUserControl
respectively.
The new controls provides improved functionality, such as possibility to search/filter, improved programmability, and compliance with the Milestone XProtect design system.
The introduction of the new controls also means that the old ones will eventually be deprecated, so all new development should use the new controls. -
A new class named
AudioPlayer
exposes the same functionality as the existingAudioPlayerControl
, but without requiring it to be included in the user interface (or even a user interface to be present).
Just as the old control, the new class is supported in Smart Client and standalone environments. -
A large set of WPF controls are now available in the namespace
VideoOS.Platform.UI.Controls
, for plug-in and standalone integrations to facilitate 3rd party development with a visual expression identical to that of XProtect client applications.
Component integrations
-
A new property
EnvironmentProperties.KeepLoginServerUriScheme
is introduced.
The property is used when adding a server to the list of servers available for the application. It forces SDK to keep the URI scheme of the input server address unchanged, as opposed to the default behavior where HTTPS connection is always attempted first.
An example use case for setting the property totrue
is to improve login time for systems configured to run without encryption. -
Calling
EnvironmentManager.Instance.Log
with error set to false will no longer cause a log to be written. This behavior can be changed by settingEnvironmentManager.Instance.DebugLoggingEnabled
to true, or by placing aMIPSettings.xml
file in the application folder and make the file contain this:<?xml version="1.0" encoding="utf-8"?> <Settings> <DebugLogging>True</DebugLogging> </Settings>
Driver framework
- Firmware upgrade is now supported for third-party device drivers in the Management Client and Configuration API.
Configuration API
-
Support for configuring Matrix has been added.
-
Support for mounting and unmounting an archive storage has been added.
-
Support for configuring fisheye lens settings for cameras has been added.
-
Support for deleting a recording server has been added.
Event and alarm APIs
-
New: Events and States WebSocket API
Use the Event and States WebSocket API to subscribe to events in the VMS. When using this API events will be pushed to the recipient through the established WebSocket connection.
-
RESTful Events API (beta)
Added support for filtering events by source.
Added support for events with an arbitrary JSON payload.
This API is in beta and future releases of this API might break backwards compatibility.
-
RESTful Alarms API (beta)
Added support for filtering alarms by source.
This API is in beta and future releases of this API might break backwards compatibility.
-
New: WebSockets Messages API (beta)
Use the WebSockets Messages API to publish and subscribe to JSON messages in real time between Smart Client, Management Client, Event Server and standalone services.
This API is in beta and future releases of this API might break backwards compatibility.
WebRTC
-
Support has been added for selecting a specific stream from a camera when creating a WebRTC session.
-
Multiple STUN and TURN servers can now be specified in the configuration file for the API Gateway, and similarly these can also be specified during signaling when creating a WebRTC session.
-
(BETA) Support has been added for specifying playback time, speed and whether gaps should be skipped when creating a WebRTC session. To be considered beta for this release.
-
A default STUN server is no longer set in the API Gateway configuration.
Samples
The following samples have been changed:
VideoWallController
sample updated to demonstrate how to change mode between live and playback.AudioDemo
,ImageViewerClient
,VideoViewer2Playback
, andVideoViewer2WayAudio
component samples, and theSCIndependentPlayback
,SCWorksSpace
, andVideoPreview
plug-in samples have been updated to use the newAudioPlayer
class.DemoDriver
has been updated to demonstrate how to implement firmware upgrade support.WebRTC
sample has been updated to demonstrate how to provide stream ID, playback time, speed, skip gaps as well as STUN and TURN servers when creating a WebRTC session.Multiple samples have been updated to utilize WPF controls instead of WinForms controls and also to demonstrate the use of the Milestone Product Experience controls.
The following samples have been added:
ChatWithWebsockets
protocol and plugin samples added to demonstrate how to use the WebSockets Messages API.RESTful Alarms API
protocol sample added to demonstrate how to use RESTful Alarms API.EventAndStateViewer
component sample demonstrates how to subscribe to events and state, how to monitor the connection state, how to track and display the current state, and how to display events.EventsAndStateWebSocketAPIPython
protocol sample demonstrates how to access the Events and State web socket API through the API Gateway from a Python application.
The following samples have been removed:
PlatformFileView
as it did not demonstrate any MIP functionality not already covered by other samples.Surveillance Cloud
as it was outdated. Instead we have introduced the following document UsingMilestoneSystems.VideoOS.Platform.SDK
NuGet package in IIS
Fixed issues
In the Event Server Environment, the port of Management Server is now 443 (https) when the Server Certificate Group is enabled. Otherwise, 80 (http). Previously, the port was always 80 and the scheme http. This fix impacts the following elements in the Event Server environment: VideoOS.Platform.EnvironmentManager.CurrentSite, VideoOS.Platform.EnvironmentManager.MasterSite, VideoOS.Platform.LoginSettings.Uri, VideoOS.Platform.LoginSettings.CorporateUri and VideoOS.Platform.Configuration.ServerFQID.
An issue was found in ImageViewerWpfControl and ImageViewerControl, which could cause it to throw unhandled System.InvalidOperationException if two or more controls were used in different threads.
An issue that caused the timeline of the PlaybackWpfUserControl not to be populated correctly has been solved.
Using the MultiWindowCommand.SetViewInWindow message in Smart Client, the change happened on the current window even when the command was sent to the main window.
Firmware version was missing in the Management Client for drivers made using the Driver Framework.
The GetDevicePresets task in the REST API did not return the correct result.
If the MultiUserEnvironment was not initialized, or UnInitialize was called twice you could get a NullReferenceException during MultiUserEnvironment.UnItialize.
Bug-fix maintenance release 23.3.2
There is a new release 23.3.2 of the MilestoneSystems.VideoOS.Platform
NuGet package. This release includes the following bug fixes:
Fixed an issue where
AlarmCommandClient.GetAlarmLines
would cause an exception if used on a setup without secure communication using encryption.
There is a new release 23.3.2 of the MilestoneSystems.VideoOS.Platform.SDK
, MilestoneSystems.VideoOS.Platform.SDK.Debug
, MilestoneSystems.VideoOS.Platform.SDK-CPP
, and MilestoneSystems.VideoOS.Platform.SDK-CPP.Debug
NuGet packages. This release includes the following bug fixes:
Fixed a
STATUS_STACK_BUFFER_OVERRUN
inCoreToolkit.dll
.