Video Player Plug-In Development

The Keep By Feenics™ system offers an extensible architecture for Video Management System vendors to incorporate their video playback solutions within the native Windows desktop application. Using this extensible architecture the VMS integrator will be able to:

  • Record VMS serve

How the Native App discovers the plug-in

To make the plug-in available to the native application the assembly must be discoverable using the Microsoft Extensibility Framework, by implementing the IVideoPlayerPlugin interface of the Feenics.Keep.Windows.Contracts.VideoPlayer package. This package is available from the public Feenics nuget server at

In addition to implementing the IVideoPlayerPlugin interface, the plug-in assembly must be installed on the users workstation. Typically the 3rd developer creates an MSI installer to place the plug-in on the Feenics plug-in folder Environment.SpecialFolder.CommonApplicationData\Feenics\Plugins, and to register an COM components that may be required to work with the particular VMS.

Implement the IVideoPlayerPlugin Interface

Member Name Type Description
PluginName Property (String) The name to be used when displaying the plugin to the user
PluginType Property (Enum) The Windows system type (WinForms or WPF) that the plugin requires
ImportCamerasAsync Method Returns an Array of Camera objects, based on Login information from the user
SaveUserCredentials Event Commands the plug-host (the native windows app) to persist the user credentials
SetUserCredentials Method Provides the plug-in with the VMS specific credentials that were previously saved for the current user
ShowVideoPlayer Method Commands the plug in to render video in the provided video player container
SetCameraAsync Method Commands the plug-in to select a specific camera as the video source for playing
Live Method Commands the plug-in to begin rendering a live video stream in the assigned video container from the previously set Camera
Playback Method Commands the plug-in to begin playing video in the previously set Video Container from the previously set Camera beginning at the supplied Starting time and stopping at the supplied end time
PlaybackPosition Method Returns the current Time code when the plug-in is in playback mode
Seek Method Commands the plug-in to move the play position to the supplied DateTime for the previously set Camera
Play Method Commands the plug-in to begin playback of video from the previously specified camera
Pause Method Commands the plug-in to stop playback
Rewind Method Commands the plug-in to decrease playback speed. Multiple calls will eventually set the playback speed to a negative number meaning playback is in reverse.
Forward Method Commands the plug-in to increase playback speed. Multiple calls will eventually hit a maximum playback speed value.
VideoPlayerMouseUp Event Instructs the Plug-in that the user has selected it with a mouse click
TakeSnapshot Method returns a byte array image (jpg) of the current frame
ExportClip Method extracts the video based on the Playback values and saves to the filename provided
PanTilt Method Commands the plug-in to reposition the camera as per the supplied PanTilt value
Zoom Method Commands the plug-in to zoom the image (either optically, or digitally, depending on camera capability)