Jitsi C#

broken image


While Windows may no longer be the default platform it was a decade ago it still has a huge and active community. More than 400 million devices support Windows 10 and there are many millions of .NET and Visual Studio users out there. In fact, I made my first WebRTC application in .NET using XSockets years ago.

Jitsi-separator: Choose a character with which to separate the jitsi-sesionname parameters. Jitsi-channellastcam: With this parameter you can define the maximum number of cameras that users can see. If you set it to -1 there will be no limit but if for example you set it to 2, only the 2 cameras of the last two users that have been active in. Embedding the Jitsi Meet API into your site or app enables you to host and provide secure video meetings with your colleagues, teams, and stakeholders. The Meet API provides a full complement of comprehensive meeting features. Learn more about Jitsi, a free open-source video conferencing software for web & mobile. Make a call, launch on your own servers, integrate into your app, and more.

Jitsi will run on anything in the $5.00/month size or higher. For a production system with a lot of usage however, you may want to bump this up to a higher tier.

In addition to the couple 3rd party WebRTC libraries for WebRTC, Edge & Skype support for WebRTC/ORTC, Microsoft's has had a few other less known and non-public WebRTC projects in the works. Last week they publicly launched WebRTC for Universal Windows Platform (UWP), providing WebRTC support for another huge chunk of the world's developers.
I asked, James Cadd, Microsoft's Program Manager in the Windows Developer Platform Group in charge of the project to share some details.

Imaged modified from Window in Seattle airport by Flickr user Robert Scoble (CC BY-2.0)

Jitsi
Q: Tell us about this new WebRTC project for Windows.
A: Over the past 5 years WebRTC has had a huge impact on the development of applications, which now reach over 1 Billion users. At Microsoft we needed a WebRTC solution that enables developers to create applications for all of our Windows 10 platforms including Desktop, Mobile, Xbox, HoloLens/VR and IoT. And we wanted to give developers bit for bit compatibility with the Google codebase, with the same APIs, languages and frameworks they're already using. To that end, we launched a project to port the WebRTC codebase to Universal Windows Platform and optimize it to run more efficiently on resource and power constrained devices.
Last week we made the WebRTC for UWP Library available as a NuGet package, as well as an open source project on GitHub. Developers can use this library in a number of applications including HTML/JS apps on Xbox, C++ Unity projects for HoloLens and C# Xamarin apps that run cross platform. WebRTC for UWP is a WinRT library which means that it not only runs on all Windows 10 platforms, but it's also accessible via many language projections and frameworks including C++, C#, JavaScript, React Native and TypeScript.
Q: Does this look like standard WebRTC 1.0 or is it ORTC?
A: This library is standard WebRTC withpeerConnection. There is a separate library called ORTC Lib that provides ORTC API support for UWP.
Let's take a look at a code sample in C#. These APIs should look familiar to developers used to working with WebRTC on other platforms. Notice that the event registration and asynchronous code use standard C# mechanisms.
WebRTC via C#
='' {='' sendmessage(iceevent.candidate);='' };='' media='' media='Media.CreateMedia();' mediastream='' mediastream='await' media.getusermedia(new='' rtcmediastreamconstraints='' {='' audioenabled='true,' videoenabled='true' });=''>
2
4
6
8
10
12
14
16
18
20
22
24
variceServers=newIceServer[]{newIceServer{Url='stun:stun.l.google.com:19302'}};
varconfig=newRTCConfiguration()
BundlePolicy=RTCBundlePolicy.Balanced,
IceServers=iceServers
peerConnection.OnIceCandidate=(iceEvent)=>
SendMessage(iceEvent.Candidate);
MediaStream mediaStream=awaitmedia.GetUserMedia(newRTCMediaStreamConstraints
AudioEnabled=true,
});
peerConnection.AddStream(mediaStream);

Q: How does the WebRTC UWP project relate to the functionality in Edge? What codecs are supported?

A: Edge supports ORTC, and as of this writing it supports WebRTC 1.0 for Insider Preview releases. The distinction to make is that Edge supports WebRTC and ORTC on Desktop only, where UWP libraries run on all Windows 10 platforms. In addition, the WebRTC UWP library (and ORTC Lib) support DataChannel & SCTP on all platforms today, while DataChannel is currently under consideration for Edge. The UWP libraries support H.264 (hardware accelerated), VP8, VP9, Opus, G.711 and G.722 codecs as well as comfort noise and DTMF.

Q: Wow- this has a lot of differences from the Edge implementation. Is it derived from the same source?

A: No. At the time of this project's inception over 2 years ago, WebRTC was not available in Edge (even in Insider Preview releases) so it was developed independently. It was also developed with the intent of open sourcing the project, which is not a goal for Edge.

SupportEdgeUWP
EnvironmentsDesktop browserNative apps: mobile, desktop,
IoT, Xbox, HoloLens
peerConnectionMostYes (WebRTC for UWP, ORTC Lib via shim)
ORTCYesYes*
DataChannelNoYes
Video CodecsH.264/AVCH.264/AVC
H.264/UC
VP8VP8 with simulcast and temporal scalability
VP9 with temporal scalability
Audio codecsOpus (no internal FEC)Opus with internal FEC
G.711G.711
G.722G.722
SILK
DTMFDTMF
CNCN
ResilienceRTXRTX
REDRED
ulpfec
ulpfecuc
*Not provided by Microsoft but supported in the ortclib.org community project.

Q: Interesting, so then how does this implementation compare to the official Chromium WebRTC repo managed by Google ?

A: Google's WebRTC source supports iOS, Android, Win32 (Desktop) for native development. We actually started the WebRTC UWP project by modifying Google's Win32 codebase and adapting it for UWP. Along the way we removed the dependency on DirectX for rendering and moved to the Microsoft Media Foundation to improve performance and power consumption, and modified the audio pipeline to use WASAPI.

Q: Is the project open source?

A: This project is open source and available on GitHub here. It is also available on NuGet. We've tried to keep the license as free and open as Google's project.

Q: What samples are available?

A: There are several samples available, some of which are UWP ports of Google samples. UWP versions demonstrating PeerConnection, AppRTC and DataChannel are available here. Additionally, we shipped a full-featured Windows 10 VoIP sample called Chatterbox which is quite extensive. See the readme here for more details.

Q: Who is the target audience for this? Is it make for specific applications/use cases?

A: This library is intended for developers building native applications targeting the Universal Windows Platform on Windows 10 devices. This includes developers who work in C++, C#, F#, JavaScript, TypeScript, Python, or any other language accessible from WinRT.

Q: Can a developer use UWP WebRTC for free (or do they need to spend hundreds on a commercial VS license)?

A: Yes. The WebRTC UWP library is freely available on NuGet and as an Open Source GitHub project. Free tooling for developers is available as well, including Visual Studio Code and Visual Studio Community.

Q: What are the advantages of building a desktop UWP app with WebRTC or ORTC Lib vs. using Electron (with Chromium)?

A: UWP apps run on all Windows 10 devices including Xbox and HoloLens, while Win32 apps such as those built with Electron run only on the Desktop.

Q: How does this release compare to other WebRTC and ORTC packages on NuGet?

A: This release is the only UWP port of WebRTC available on NuGet here. Microsoft actively supports this project works to keep it current with the latest Chrome source. As of this writing, the latest NuGet package is based on the M54 source. Microsoft also engages with the Open Peer Foundation on the ORTC UWP NuGet package to lend our UWP expertise, but to be clear we do not own or provide support for that codebase.

Q: Are there any apps you can name that are using this?

A: Blackboard was an early supporter of this project and actively worked on the codebase with Microsoft. Their Windows Mobile app uses this project. In addition, Caw.Me ships their Slack calling plugin for Windows using this project as well.

Q: Is this project actively supported? Will someone respond to issues and pull requests?

A: Yes, the project is under active development. We periodically merge in the latest Chromium source to maintain browser compatibility – as of this writing the project is based on M54. We also respond to issues and PRs on GitHub and welcome anyone to join our Slack channel to communicate directly with the development team.

Q: Will there be on-going updates? If yes, do you have a roadmap or direction you can share?

A: Yes, development is ongoing. In the coming months we will perform an additional pull from the Chromium source (version TBD).

Q: What UWP platforms has this been tested on other than Win 10 Desktop? IoT core? Xbox? HoloLens?

Jitsi C#

A: The project has been tested on Windows 10 Desktop, Mobile, Xbox, HoloLens and IoT (for DataChannel) and we support all platforms.

Q: Outside of the core Visual Studio tools, what tools, libraries, and add-ons work with the new WebRTC UWP stack?

Jitsi Api C#

A: The WebRTC UWP library as well as ORTC Lib are standard NuGet packages and they work anywhere you can reference them, including the lightweight editor Visual Studio Code. Developers can use them in conjunction with any other frameworks they're used to, such as Xamarin, React Native and Electron.

Doing some test calls with James using the Chatterbox sample application.

Q: Are there any Xbox, HoloLens, or IoT projects you can talk about that use this?

Jitsi Meet Api C#

A: On Xbox, there are projects that stream media using the WebRTC UWP library as well as games that use the ORTC Lib audio and DataChannel for multiplayer scenarios. For HoloLens, remote assistance is a core scenario that many partners have built which enables a remote party to view the HoloLens user's environment and provide feedback via video and audio. On IoT there has been a lot of interest in using DataChannel to stream data from sensors connected to a Raspberry Pi to a remote peer.

Q: Where is the best place for our readers to go to get more information and to stay up-to-date on this project?

A: For the most up to date information keep an eye on GitHub and NuGet packages referenced above. Look for upcoming posts on the Developing Apps for Windows blog here. You can also follow me on Twitter for updates @jamescadd.

C# Jitsi Client

{
'Q&A':{
'interviewer': 'chad hart',
'interviewee': 'james cadd'
}
}

C# Jitsi Meet

Want to keep up on our latest posts? Please click here to subscribe to our mailing list if you have not already. 4pm est to utc. We only email post updates. You can also follow us on twitter at @webrtcHacks for blog updates.

Jitsi Meet Api C#

Related Posts





broken image