/sipsorcery-media

The SIPSorcery library for WebRTC infrastructure and Windows audio and video capture.

Primary LanguageC++

Build status

Update: As of Sep 2020 this library has been replaced by a combination of new C# features in the main SIPSorcery library and Windows audio and video device access plus VP8 codec hooks in a new SIPSorceryMedia.Windows library. It is not envisaged that this library will continue to be updated or maintained.

This repository contains a companion .Net Core 3.1 compatible library to the SIPSorcery SIP and WebRTC library. This library provides wrappers and integrations for a number of open source libraries and the functions to facilitate WebRTC communications:

  • OpenSSL - the DTLS handshake to negotiate the SRTP keying material.
  • libsrtp - for the Secure Realtime Transport Protocol.
  • libvpx - for VPX codecs (currently only VP8 is wired up).
  • ffmpeg - for some image conversion functions.

In addition Microsoft's Media Foundation Win32 API is used to provide access to Windows audio and video capture devices.

Building

Use vcpkg to install the dependencies.

  • Clone vcpkg from the github repository and install as per the instructions in the main README.md.
  • Install the required packages:
PS >.\vcpkg install --triplet x64-windows openssl libvpx ffmpeg libsrtp

Open src\SIPSorceryMedia.sln with Visual Studio and build or use the Native Tools Command Prompt for Visual Studio:

msbuild /m src\SIPSorceryMedia.sln /p:Configuration=Release /p:Platform=x64 /t:clean,build

Installing

This library can be used by .Net Core 3.1 applications on Windows. The library can either be built from source as described above or it can be installed via nuget using:

Install-Package SIPSorceryMedia -pre
dotnet add package SIPSorceryMedia --version "4.0.58-pre"

Getting Started

There are a number of sample applications available in the main SIPSorcery library repository.

WebRTCTestPatternServer: The simplest example. This program serves up a test pattern video stream to a WebRTC peer.

WebRTCServer: This example extends the test pattern example and can act as a media source for a peer. It has two source options:

  • An mp4 file.
  • Capture devices (webcam and microphone). The example includes an html file which runs in a Browser and will connect to a sample program running on the same machine.

WebRTCReceiver: A receive only example. It attempts to connect to a WebRTC peer and display the video stream that it receives.