The Vonage Video API Windows SDK lets you use Vonage Video API-powered video sessions in Windows apps.
This version adds new methods to monitor the network statistics of a sender in video sessions, giving receivers insight into the sender’s available bandwidth and connection performance. For more information, see this documentation. This is a beta feature.
This version adds new methods to configure the preferred video codecs for publishers, which gives you fine-grained control over how video codecs are prioritized during session negotiation. For more information, see this documentation.
This version fixes an error where apps crashed due to publishers stop publishing as part of session disconnect callbacks.
This version fixes an issue where, in some cases, sessions could not connect due to wrong credentials.
This version fixes an issue where, in some cases, sessions could not connect due to expired certificates.
This version adds full support for the VP9 codec with Scalable Video Coding (SVC) in routed sessions (which was previously in beta).
This version adds full support for session migration (which was previously in beta). See the Session.Builder.SessionMigration property. For more information, see this documentation.
This version adds new methods to configure video bitrate settings for publishers. For more information, see this documentation.
This version adds new moderation methods for forcing clients to disconnect. For more information, see our documentation for Moderation.
This version adds new publisher settings to control audio capture while muted so the publisher receives audio level updates when not publishing audio. This is useful for implemeting features such as speaking while muted. For more information, see this documentation.
In this version we are enabling support for automatic reconnections by default for all customers. For more information, see the Automatic reconnection documentation.
This version fixes CVE-2025-5283, a security vulnerability in the libvpx library, part of WebRTC. It is recommended that customers update to incorporate this fix.
In this version we are deprecating the Session.SaveRtcStatsReport() method. This method will be removed in future minor releases. For more information, see the reference documentation.
This version fixes an issue where, in some cases, sessions could not connect.
This version fixes an issue where, in some cases, publishers could not publish due to a problem during audio capturing initialization.
This version adds quality improvements for the background blur and background replacement APIs.
This version adds VP9 codec support for end-to-end encryption.
This version adds support for session migration. See the Session.Builder.SessionMigration property. For more information, see this documentation. This is a beta feature.
This version fixes an issue where sessions could not connect, in some cases, because of network connectivity problems.
This version fixes an issue where sessions could not connect when using the IP Proxy feature through HTTP proxy servers that require the server name the client is attempting to connect to during handshaking.
This version fixes an issue where an error was not returned when sending signals with a publisher-only token.
This version of the SDK uses an updated version of WebRTC 121, which includes improvements in performance, stability and security. The update also leverages WebRTC upgrade optimizations, including bug fixes, performance enhancements of audio and video media codecs, better network adaptation and improved browser compatibility.
This version adds performance improvements for Single Peer Connection.
This version fixes an issue where, in some cases, toggling audio or video immediately after publishing would prevent video from being displayed.
This version fixes an issue where VideoCapturer.Init() may fail silently in computers with multiple cameras.
This version adds support for the VP9 codec with Scalable Video Coding (SVC) in routed sessions. This is a beta feature.
This version fixes an issue where, in some cases, the audio level stayed the same when the publisher was muted.
This version fixes an issue where custom audio devices could potentially cause a crash.
This version fixes an issue where, in some cases, audio from web client SDK users was garbled.
This version fixes an issue where video was briefly stuttering after connecting to another user.
This version fixes an issue where the video resolution was not updating when devices were rotated.
This version adds support for Single Peer Connection. When enabled, it reduces OS resource consumption, improves rate control, and in the case of mobile native devices, supports large sessions. See the documentation for Session.SinglePeerConnection.
This version adds support for VideoFrame.IsMirrored, which returns true when the video frame is mirrored. This was previously a beta feature.
This version adds support for advanced noise suppression. This uses the Vonage Media Library to provide enhanced noise cancellation. See the documentation for the Publisher.AudioTransformers property. This was previously a beta feature.
This version adds support for advanced audio controls. See the documentation for Publisher.AudioBitrate, Publisher.AutoGainControl, Publisher.NoiseSuppression, Publisher.EchoCancellation, and Publisher.DisableAudioProcessing. This was previously a beta feature.
This version fixes an issue where, in some cases, the publisher was destroyed when video was muted.
This version adds support for VideoFrame.IsMirrored, which returns true when the video frame is mirrored. This is a beta feature.
This version adds support for advanced noise suppression. This uses the Vonage Media Library to provide enhanced noise cancellation. See the documentation for the Publisher.AudioTransformers property. This is a beta feature.
This version adds support for advanced audio controls. See the documentation for Publisher.AudioBitrate, Publisher.AutoGainControl, Publisher.NoiseSuppression, Publisher.EchoCancellation, and Publisher.DisableAudioProcessing. This is a beta feature.
This version reduces the size of the SDK by removing the Vonage Media Library code. In order to use methods that use the Vonage Media Library, you must load the Vonage Media Library separately from the Vonage Video Windows SDK. These include the VideoTransformer(string name, string properties) and AudioTransformer(string name, string properties) constructors. For more information, see Vonage Media Library integration.
This version fixes an issue where, in some cases, the local publisher was not mirrored.
This version fixes a crash.
This version fixes a bug where CanSubscribe returned incorrect information in Session.Capabilities.
This version fixes an issue where an exception error was occurring when IVideoCapturer.SetVideoContentHint() was called before IVideoCapturer.Init() was invoked.
This version fixes an issue where the state of captions was not properly updated for subscribers under certain circumstances.
This version fixes a crash.
This version adds support for the
Vonage Media Processor library
and custom media transformers. See the documentation for the Publisher.AudioTransformers and Publisher.VideoTransformers
properties. This was previously a beta feature.
This version adds support for publisher audio fallback. This was previously a beta feature. See the Publisher audio fallback documentation.
This version adds support for the VP9 codec in relayed sessions. For more information, see the Video Codecs documentation.
This version adds support for end-to-end encryption. You can enable end-to end-encryption using the Session.SetEncryptionSecret() method. For more information, see the End-to-End Encryption documentation.
This version adds support for adaptive media routing. For more information, see the Adaptive Media Routing documentation.
This version adds some memory management improvements.
This version fixes an issue where certain events were being dropped.
This version adds support for publisher audio fallback. This is a beta feature. See the Publisher audio fallback documentation.
This version improves software-only performance for Vonage Media Processor filters.
This version fixes a rare issue where a crash occurred when closing an application.
This version fixes an issue where, in some cases, users were unable to connect to sessions with both custom TURN servers and IP Proxies enabled.
This version fixes an issue where, in some cases, using custom audio devices was causing publishing failures.
This version fixes some memory leaks.
This version fixes an issue where it sometimes took longer than expected to disconnect from a session.
This version fixes an issue where, in some cases, setting the microphone to mute was causing a crash.
Important: Windows SDK 2.26.0 was published as version 2.26.0-release. We are looking into the issue.
This version adds support for Live Captions. See the docs for Publisher.PublishCaptions and Subscriber.SubscribeToCaptions. This was previously a beta feature.
This version adds support for more
Vonage Media Processor filters. The
background blur filter now accepts a custom radius option. And there is a new background replacement
filter. See the documentation for the Publisher.VideoTransformers property. These are beta features.
This version adds support for the
Vonage Media Processor library
and custom media transformers. See the documentation for the Publisher.AudioTransformers and Publisher.VideoTransformers
properties. NVIDIA GPUs are recommended for optimal performance. This is a beta feature.
This version fixes an issue where captions were enabled by default.
This version fixes some memory leaks.
This version fixes an issue where occasionally the app would crash if it was publishing for a very long time.
This version adds support for Live Captions. See the docs for
Publisher.PublishCaptions and Subscriber.SubscribeToCaptions. This is beta feature.
This version of the SDK uses an updated version of WebRTC 99, which includes improvements in performance and stability.
Added a OpenTok.IAudioDeviceExtension interface. You can use this to set up
a custom audio device with methods for enumerating devices, selecting a specific
device, or subscribing to notifications, which can be wired internally to the custom
audio device implementation instead of the default static one. Additionally, the new
The MMAudioDevice class, included in the SDK, implements this interface using the
Windows mmdeviceapi.h interface.
This version fixes an intermittent crash that may occur when publishing and unpublishing rapidly.
This version fixes an issue where starting a session with muted video would disable scalable video.
This version fixes an issue where audio would remain muted for users under certain circumstances.
This version fixes an issue where proxies were not working.
This version fixes an issue where audio device changes could cause the application to crash.
This version fixes an issue where, in some cases, using a proxy server would cause the application to crash.
This version fixes an issue where publishing failures were occurring using certain USB cameras.
This version of the SDK uses WebRTC 99, which includes improvements in performance and stability.
This version adds support for accessing audio data for individual subscribed streams. This was previously
a beta feature. See the docs for the Subscriber.AudioData event.
This version adds support for an audio output device selection. This was previously a beta feature.
See the docs for the AudioDevice.SetOutputAudioDevice() method.
This version adds support for integration with Windows OS audio settings. See the documentation for
the OpenTok.AudioDevice.Notifications class. This was previously a beta feature.
This version fixes an issue in which applications could not connect to a session when IP Proxy was enabled.
This version fixes an issue when the publisher image was frozen when turning video off.
This version fixes an issue when AES-256 was enabled and applications could not connect to clients using on Safari 15.3 and below.
This version adds support for integration with Windows OS audio settings.
See the documentation for the OpenTok.AudioDevice.Notifications class.
This is a beta feature.
This version fixes an issue that caused excessive bandwidth usage by streams in relayed sessions.
This version fixes an issue where an app may crash when connected to a headset.
This version adds support for accessing audio data for individual subscribed streams. This is a beta feature.
See the docs for the Subscriber.AudioData event.
This version adds support for an audio output device selection. This is a beta feature. See the docs for the
AudioDevice.SetOutputAudioDevice() method.
This version adds support for the Custom Dispatcher API. See the reference documentation for the Context class.
In this version, scalable video in H.264 routed sessions is no longer hardcoded.
Adding support for Full High Definition (1920x1080-pixel) resolution. You can specify High1080p as the
resolution value you pass into the OpenTok.VideoCapturer.VideoDevice.CreateVideoCapturer() method.
This was previously a beta feature.
This version adds support for Universal Windows Platform in desktop applications. This was previously a beta feature.
This version adds the ability to enable per-subscriber audio levels. This was previously a beta feature.
See the docs for the Subscriber.AudioVolume property.
This version implements scalable video support for screen sharing.
This was previously a beta feature. See the Publisher.Builder.ScalableScreenshare property.
This version fixes an issue where publishers of 1080p or 720p streams to routed sessions published two scalable video layers instead of three.
This version fixes an issue where the camera LED was not turned off when the video was muted.
This version fixes an issue where UTF8 strings in signals were garbled.
This version fixes an issue where VideoCapturer.EnumerateDevices() does not list all the physical USB cameras.
Adding support for Full High Definition (1920x1080-pixel) resolution. You can specify High1080p as the
resolution value you pass into the OpenTok.VideoCapturer.VideoDevice.CreateVideoCapturer() method.
This is a private beta feature. Please contact Vonage if you would like to enable this feature for
your Video API project.
This version adds support for Universal Windows Platform in desktop applications. This is a beta feature.
This version adds the ability to stream video with an Open Broadcast Software camera.
This version adds the ability to enable per-subscriber audio levels. This is a beta feature.
See the docs for the Subscriber.AudioVolume property.
This version implements scalable video support for screen sharing.
This is a beta feature. See the Publisher.Builder.ScalableScreenshare property.
This version adds the ability to enable Opus DTX.
Enabling Opus DTX can reduce bandwidth usage in streams that have long periods of silence.
This was previously a beta feature. See the docs for the Publisher.Builder.OpusDtx
property.
This version fixes an issue where signals may be received out-of-order when an unmanaged DLL fails to load.
This version removes support for cipher TLS_RSA_WITH_3DES_EDE_CBC_SHA.
This version fixes the following issues:
The application may crash when publishing multiple times.
H.264 streams in relayed sessions did not adapt to network conditions.
This version adds the ability to enable Opus DTX.
Enabling Opus DTX can reduce bandwidth usage in streams that have long periods of silence.
This is a beta feature. See the docs for the Publisher.Builder.OpusDtx
property.
This version fixes an issue where video published in H.264 sessions may have low frame rates.
This version adds the ability to dynamically change how published video streams are optimized.
This can improve video performance for some screen-sharing streams and in other conditions.
See the docs for the IVideoCapturer.GetVideoContentHint() and IVideoCapturer.SetVideoContentHint()
methods.
This version adds the ability for moderators to mute participants. This was previously a beta
feature. See the docs for the Session.ForceMuteAll(), Session.ForceMuteStream(), and
Session.DisableForceMute() methods. Note that the Session.ForceMuteAll() and Session.ForceMuteStream()
methods no longer include an options parameter, like they did in the beta version.
This version fixes an issue where video from some models of the Surface Pro could not be published.
This version fixes an issue where apps using some camera models would crash.
This version fixes an issue where apps may crash when gathering audio and video statistics for a subscriber.
This version adds the ability for moderators to mute participants. This is a beta
feature. See the docs for the Session.ForceMuteAll() and Session.ForceMuteStream() methods.
This version fixes an issue where the Session.Unpublish() method may fail if called immediately after publishing.
This version of the SDK uses WebRTC 84, which includes improvements in performance and stability.
This version adds support for RTC audio and video statistics for publishers and subscribers.
See the docs for the Publisher.GetRtcStatsReport() and Subscriber.GetRtcStatsReport()
methods.
This version fixes an issue where the audio bitrate value set for publishers was handled incorrectly internally.
This version fixes an issue where audio streaming was not working for relayed sessions.
Intermediate Certificates store.Trusted Root Certification Authorities
of the local Windows machine so that it can use them as valid root certificates when
connecting to OpenTok services.This version fixes the following issue:
The GetPlaneWidth, GetPlaneHeight, GetPlaneSize, GetPlaneStride, GetPlane methods of the VideoFrame class returning incorrect values.
Attaching an instance of an EventHandler object to either Publisher.AudioLevelArgs and Subscriber.AudioLevelArgs was not working.
This version fixes the following issues:
The Publisher.Error event was not being sent in all scenarios where publishing failed.
The SDK was not proxying all communications correctly when the IP Proxy feature was being used.
This version adds support for the IP Proxy feature.
From this version on, HD resolution will be used for streams that use the scalable video feature, if the device supports it.
From this version on, RGBA video frames are supported in custom video capturers.
This version improves documentation for some methods in the AudioDevice class.
This version fixes an issue in which a publisher property was not logged correctly causing information to be misrepresented in Inspector.
This version adds support for six-channel audio devices.
This version adds support for custom TURN servers.
This version leverages the builder pattern for initializing
Session, Publisher, and Subscriber objects. See the documentation for the new
Session.Builder, Publisher.Builder, and Subscriber.Builder classes.
These Builder classes replace the Session(), Publisher(), and Subscriber()
constructor methods, which are deprecated.
This version fixes the following issues:
Some URLs in the code were preventing apps from receiving FirstNet certification. We have removed these URLs.
The MFCapturer DLL library in the SDK was not being versioned.
Video Capturing was not working on Microsoft Surface devices.
This version fixes the following issues:
The SDK was not proxying all HTTP requests when the IP Proxy feature was being used.
The SDK was reporting incorrect values for the publisher's stream properties after the stream properties had changed.
This version fixes the following issue:
ErrorCode property set to
OpenTok.ErrorCode.PublisherWebRTCError.This version fixes the following issue:
The assemblies are now "strong-named," which means they contain a hash to validate that they haven't been modified. This allows you to install OpenTok in the Global Assembly Cache (GAC).
This version fixes the following issues:
The SDK used a temporary cacert.pem file to store certificates.
The apiUrl parameter of the Session() constructor did not work.
This version fixes the following issues:
The Session.StreamHasVideoChanged event is not sent and
the HasVideo property of a Subscriber object's Stream property is not
updated when the stream's publisher starts or stops publishing video.
The Session.StreamHasAudioChanged event is not sent and
the HasAudio property of a Subscriber object's Stream property is not
updated when the stream's publisher starts or stops publishing audio.
An app could crash with an access violation 0xC0000005 exception when you initialize a Publisher.
Installing a published app can result in a DllNotFoundException.
Data for published streams is not showing up in OpenTokInspector.
The Nuget package for the OpenTok Windows SDK was not signed.
This version fixes the following issues:
Apps receiving a Session.Signal event sent using the
OpenTok REST API
would crash.
Reconnecting to sessions would occasionally fail.
This version fixes the following issues:
Sending a signal to a specific client would result in an error.
Apps would crash when running in Unity.
This version adds the following new features:
You can easily change the audio input source (microphone) used by publishers.
Call the static AudioDevice.EnumerateInputAudioDevices() method to get a list of
AudioDevice.InputAudioDevice objects, representing available input devices.
Call the AudioDevice.SetInputAudioDevice(audioInput) method to set the
audio input device used by publishers.
You can implement a custom audio driver to read and write audio data for subscribers
and publishers. Create an implementation the IAudioDevice interface and its methods.
The IAudioDevice.InitAudio(AudioDevice.AudioBus audioBus) method is called when the
AudioDevice is initialized. Use the AudioBus object to read write audio data.
The Publisher() constructor now includes a stereo parameter, to support publishing
stereo audio from stereo microphones.
The Publisher.AudioLevel and Subscriber.AudioLevel events provide dynamic
audio level data for publishers and subscribers.
The Subscriber.PreferredFramerate and Subscriber.PreferredResolution properties
let you set the preferred frame rate and resolution for a subscriber’s stream.
This setting only applies to subscribers in a
routed session.
The Publisher.AudioStatsUpdated and Publisher.VideoStatsUpdated events are beta features
providing dynamic audio and video statistics for a publisher.
Partners that have the allowed IP add-on feature enabled
for an OpenTok project should set the new ipWhitelist parameter of the
Session() constructor to true when instantiating a Session object.
This version fixes the following issue:
This version adds a VideoFrame.Metadata property, which lets you set
and get metadata for a video frame when implementing custom video capturers
and renderers.
This version fixes the following issues:
The PacketsLost property of the OpenTok.Subscriber.VideoNetworkStatsEventArgs
object (sent with the Subscriber VideoStatsUpdated event) was always set to 0.
Session errors had incorrect code values.
Connecting to sessions was delayed up to 10 seconds on systems with automatic proxy detection. We have improved this on connections after the first attempt.
This version includes the following API changes:
The Subscriber class includes new AudioStatsUpdated and VideoStatsUpdated
events.
The name of the signal parameter changed to data in the
Session.sendSignal() method.
This version adds support for .NET version 4.0.
This version fixes the following issues:
Exception thrown if the application tries to reconnect to a session after it was forced to disconnect.
Unable to publish video after the network disconnected.
Incorrect exception thrown if the application tries to access to the publisher's stream before the publisher joins the session.
Publishers and subscribers do not create the default video renderer object if none was provided when the publisher or subscriber was created.
Disconnecting from a session may take longer than expected. We are working on a fix for this issue.
In some instances, signals can be sent out of order. We are looking into the issue now.
In some cases, the SDK may not detect proxy settings. We are looking into the issue.
Devices without NVIDIA GPUs may experience poor performance when using Vonage Media Processors. We are looking into the issue.