/opentok-windows-sdk-samples

Sample applications illustrating best practices using OpenTok Windows SDK

Primary LanguageC#MIT LicenseMIT

OpenTok Windows SDK Samples

Tokbox is now known as Vonage

This repository provides sample applications for you to better understand the features of the OpenTok Windows SDK. Feel free to copy and modify the source code herein for your own projects. Please consider sharing your modifications with us, especially if they might benefit other developers using the OpenTok Windows SDK. See the License for more information.

Quick Start

  1. Get values for your OpenTok API key, session ID, and token.

    You can obtain these values from your TokBox account. Make sure that the token isn't expired.

    For testing, you can use a session ID and token generated at your TokBox account page. However, the final application should obtain these values using the OpenTok server SDKs. For more information, see the OpenTok developer guides on session creation and token creation.

  2. In Visual Studio, open the .sln solution file for the sample app you are using (CustomVideoRenderer/CustomVideoRenderer.sln, ScreenSharing/ScreenSharing.sln, or SimpleMultiparty/SimpleMultiparty.sln).

  3. Open the MainWindow.xaml.cs file for the app and edit the values for API_KEY, SESSION_ID, and TOKEN to match API key, session ID, and token data you obtained in step 1.

NuGet automatically installs the OpenTok SDK when you build the project.

Test on non-development machines: OpenTok SDK includes native code that depends on Visual C++ Redistributable for Visual Studio 2015. It's probably already installed on your development machine but not on test machines. Also, you may need 32-bit version even if all your code is AnyCPU running on a 64-bit OS.

What's Inside

BasicVideoChat

This app shows how to implement a simple video call.

BasicVideoChatWinForms

Similar to BasicVideoChat but using WinForms as the presentation framework.

BasicVideoChatUWP

Similar to BasicVideoChat but using UWP as the presentation framework. Keep in mind that this sample only works for a windows desktop UWP app. For a general UWP app that works on any UWP enabled platform (windows phone, hololens, XBOX, etc.), UWP SDK must be used instead (check nuget package Vonage.Client.Video.UWP).

SimpleMultiparty

This app shows how to implement a video call application with several clients.

CustomVideoRenderer

This app shows how to use a custom video renderer. Most applications work fine with the default renderer (VideoRenderer) included with the OpenTok Windows SDK. However, if you need to add custom effects, this sample application provides an understanding of how to implement a custom video renderer.

ScreenSharing

This app shows how to publish a screen-sharing stream to a session. This implements a custom video capturer to capturer to capture the screen as the video source for an OpenTok publisher.

FrameMetadata

This app shows how to add metadata to video frames in a published stream and how to read the metadata in a subscriber to the stream. It also shows to to use a very simple custom video capturer and custom video renderer.

AudioDeviceNotifications

This app shows more advanced management of audio devices with notifications capabilities that allow detecting when new devices are added, removed or the default selection is changed at windows OS level.

FileAudioSource

This sample implements the renderer subsystem of a custom audio device (IAudioDevice) to read audio from a file and use it as input for the audio stream of a publisher.

Transformers

This sample shows how to leverage the media processing API to apply transformations to the video and audio streams. The sample uses both custom transformers and standard transformers like blur and noise suppression provided by Vonage. For the latter, and additional package "Vonage.Client.Video.Transformers" is required.

AudioRecording

This sample uses the AudioData API to record the audio received by a subscriber and save it to a wav file.

CustomAudioFileCapturer

This sample implements the capturer subsystem of a custom audio device (IAudioDevice) to record received audio to a wav file.

Development and Contributing

Interested in contributing? We ❤️ pull requests! See the Contribution guidelines.

Getting Help

We love to hear from you so if you have questions, comments or find a bug in the project, let us know! You can either:

Further Reading