How to Configure Teams RTMP Live Streaming Policies in PowerShell Using Set-CsTeamsMeetingPolicy

Modern organizations frequently produce all-hands meetings, product announcements, technical webinars, and virtual conferences using Microsoft Teams. While Teams natively supports internal webinars and town halls, marketing and communications teams often need to broadcast meetings directly to external public audiences across platforms such as YouTube Live, LinkedIn Live, Facebook Live, Twitch, or internal corporate media streaming networks. Microsoft Teams enables this functionality through Real-Time Messaging Protocol (RTMP and RTMPS) streaming.

However, permitting unrestricted RTMP streaming introduces substantial data loss prevention (DLP) and confidentiality risks. If unmanaged, any meeting organizer could broadcast proprietary corporate presentations, internal financial discussions, or confidential executive town halls to public streaming endpoints. Microsoft Teams administrators govern external streaming rights using Meeting Policies in PowerShell. With Set-CsTeamsMeetingPolicy and the LiveStreamingMode parameter, administrators can enable RTMP streaming strictly for authorized production staff while enforcing complete lockdown for general employees.

Understanding RTMP Streaming Controls in Teams Meeting Policies

In Microsoft Teams meeting architecture, external video streaming is governed by the LiveStreamingMode parameter within CsTeamsMeetingPolicy. This setting controls several key streaming capabilities:

  • Streaming Application Availability: When enabled, meeting organizers can add the native Custom Streaming app or third-party RTMP broadcast apps into scheduled meetings.
  • Ingest URL and Stream Key Entry: Organizers and co-organizers can input external RTMP server URLs (e.g. rtmp://a.rtmp.youtube.com/live2) and private streaming keys to initiate video output directly from the Microsoft cloud.
  • Cloud-Side Encoding: Microsoft Teams cloud media processors transcode active video, audio, and screen shares into standard H.264/AAC RTMP streams without placing hardware encoding strain on the organizer’s local workstation.

The LiveStreamingMode parameter accepts two values:

  • Disabled: RTMP streaming is completely blocked. Meeting organizers cannot add streaming apps or push video feeds to external broadcast endpoints. (Default setting in most Microsoft 365 enterprise tenants).
  • Enabled: Meeting organizers assigned to the policy can configure and broadcast RTMP feeds to external streaming services.

Connecting to Microsoft Teams PowerShell

To inspect and update streaming policies, open an elevated PowerShell console and sign in to the Microsoft Teams tenant:

# Import MicrosoftTeams module
Import-Module MicrosoftTeams

# Connect to tenant
Connect-MicrosoftTeams

Confirm the connection by retrieving provisioned meeting policies and filtering for live streaming attributes:

Get-CsTeamsMeetingPolicy | Select-Object Identity, Description, LiveStreamingMode | Format-Table -AutoSize

Inspecting Current Live Streaming Configurations

To view the streaming status on the tenant-wide default policy (Global), execute:

Get-CsTeamsMeetingPolicy -Identity Global | Select-Object Identity, LiveStreamingMode, AllowNDIStreaming, AllowRecordingStorageOutsidePolicy

A typical output confirms whether streaming is currently disabled org-wide:

Identity          : Global
LiveStreamingMode : Disabled

To check custom policies already assigned to specialized business units:

Get-CsTeamsMeetingPolicy -Identity "Marketing-Broadcasting-Policy" | Select-Object Identity, LiveStreamingMode

Creating a Dedicated Policy for RTMP Live Streaming

To maintain corporate security, enterprise administrators should leave the default Global policy set to Disabled, creating a specialized meeting policy specifically for marketing, media production, and executive communications staff.

Execute New-CsTeamsMeetingPolicy to create the dedicated streaming policy:

New-CsTeamsMeetingPolicy -Identity "Media-Production-LiveStreaming" -Description "Permits RTMP live streaming to external platforms for authorized media producers" -LiveStreamingMode "Enabled"

Confirm the newly instantiated policy attributes:

Get-CsTeamsMeetingPolicy -Identity "Media-Production-LiveStreaming" | Format-List Identity, Description, LiveStreamingMode

Modifying Existing Meeting Policies with Set-CsTeamsMeetingPolicy

If you need to enable or disable RTMP live streaming on an existing policy, use the Set-CsTeamsMeetingPolicy cmdlet.

To enable RTMP streaming on an existing custom policy:

Set-CsTeamsMeetingPolicy -Identity "Executive-Events-Policy" -LiveStreamingMode "Enabled"

If security compliance mandates an immediate total shutdown of external streaming capabilities across the tenant, enforce the lockdown on the Global policy:

Set-CsTeamsMeetingPolicy -Identity Global -LiveStreamingMode "Disabled"

Verify that the changes are stored in the Teams Admin Center repository:

Get-CsTeamsMeetingPolicy -Identity "Executive-Events-Policy" | Select-Object Identity, LiveStreamingMode

Assigning the Live Streaming Policy to Target Organizers

For the policy to take effect, it must be granted to the specific user accounts responsible for organizing public webinars or broadcasts.

Assigning to an Individual Broadcaster

Assign the policy to a specific user using Grant-CsTeamsMeetingPolicy:

Grant-CsTeamsMeetingPolicy -Identity "[email protected]" -PolicyName "Media-Production-LiveStreaming"

Verify that the policy has been assigned to the target user account:

Get-CsUserPolicyAssignment -Identity "[email protected]" -PolicyType TeamsMeetingPolicy

Assigning to a Security Group

To assign the policy across an entire event production team using an Entra ID (Azure AD) security group:

# Retrieve Entra ID group Object ID
$GroupId = (Get-AzureADGroup -SearchString "Corporate Media & Broadcast Team").ObjectId

# Assign policy to group with priority rank
New-CsGroupPolicyAssignment -GroupId $GroupId -PolicyType TeamsMeetingPolicy -PolicyName "Media-Production-LiveStreaming" -Rank 1

Validating Client Behaviour and External RTMP Broadcasts

After policy assignment, allow up to 2 to 4 hours for Microsoft 365 cloud edge services and client caches to replicate.

To validate the live streaming configuration:

  1. The authorized user creates a test meeting in the Microsoft Teams desktop client.
  2. Inside the meeting, click the Apps icon (represented by the plus sign) in the top toolbar.
  3. Search for and add the Custom Streaming app.
  4. Enter the target RTMP Server URL and Stream Key provided by YouTube Studio, LinkedIn Live, or your streaming provider.
  5. Click Start streaming. Verify on the destination streaming dashboard that the video and audio feeds are received cleanly with proper 1080p/720p synchronization.
  6. Verify that users assigned to the restricted Global policy cannot see or configure the Custom Streaming app inside their meetings.

To comply with organizational privacy mandates, ensure meeting attendees are notified via automated disclaimer banners that the active session is being broadcast externally.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.