Stream RTMP and SRT in and out of Teams Meetings with the Teams Broadcast Development Kit

By Tom Arbuthnot

image

I reported a few weeks ago that RTMP streaming was coming for Microsoft Teams, and now we have it in the form of an open-source Teams Broadcast Development Kit (BDK) that runs on an Azure VM.

The Teams Broadcast Development Kit allows

  • Audio/video in and out via SRT
    (Secure Reliable Transport)
  • Audio/video in and out via RTMP
    (Real-Time Messaging Protocol)
  • Sample web portal to manage the feeds
  • Sample meeting extension to manage the feeds as a line-of-business app
  • Only one video and audio can be injected into the meeting at a time
  • The current implementation supports one meeting per VM, and only one VM so can only deal with one active meeting per install
  • It includes a sample Web UI, developed as a single page application (SPA) in React and TypeScript
  • This project uses the application-hosted media bot SDKs and APIs, which are still in BETA.

Microsoft recommends using the SRT protocols whenever possible, and just use RTMP (and RTMPS) if the system receiving/sending the feed does not support SRT.

It requires a bunch of Azure infrastructure to be set up including a Windows 10 VM

  • Standard_F4s_v2 – 4 vcpus, 8 GiB memory. recommended for testing purposes.
  • Standard_F8s_v2 – 8 vcpus, 16 GiB memory. Recommended for Production environments.

So not only can you take the streams from a teams meeting, you can actually stream into a teams meeting too. The solution works by adding a media bot to the meeting where you want to use this solution and using that media bot to capture the streams from the meeting and injecting new streams into it.

The sources that can be used for extraction are:

  • A participant: any participant that has their camera on can be extracted as an individual media stream.
  • The primary speaker: this is a media stream that automatically switches to the participant that is speaking at that time in the call. This allows switching between participants automatically during a conversation. Only one participant is captured at a time.
  • The screen share: If a participant is sharing their screen, that feed can also be extracted as an individual stream too.

You can learn more at the following GitHub projects, complete with robust documentation here:

image