Knowledge Base > Streaming > WHIP Streaming Guide

WHIP Streaming Guide

General Overview

WHIP is a new protocol that enables broadcasting via WebRTC. WebRTC is a Free/IETF Standard for real-time communication. WebRTC was originally used for conferencing, but is now common in security cameras, robots and other situations that need sub-second latency and have dynamic conditions.

Why WHIP?

  • Interactive latency - Easier to interact with audience with only 100ms of delay.
  • Co-Hosting - Add co-hosts from web browser or anywhere WebRTC is available.
  • P2P - OBS can connect directly to a browser across networks, no servers needed.
  • E2E Encryption - When configured servers can't access/modify video. No ad insertion.
  • Mobile Streaming - WebRTC supports network switching. Move between Wifi/Cellular without disconnects.
  • Simpler Servers - WebRTC handles publishing and playback. Less code to run when hosting servers.
  • Codec Flexibility - AV1, H265 and Opus available. Custom codecs are possible.
  • More Platforms - With WebRTC broadcast or watch from Web, Mobile, microcontrollers and more.
  • Multi-track - Clients can send multiple feeds. Multi-lingual broadcasts or multiple video angles.

To learn more about WebRTC the protocol WebRTC for the Curious is a Free/Open Source book
on how it works. The WHIP standard is here.


Where can I use WHIP?


How to use WHIP with OBS Studio

Obtain a URL and Bearer Token that you will use for your WHIP Session. A Bearer Token is just the WHIP name for 'Stream Key'.

Go to Settings -> Stream and set the following values.

Service: WHIP
Server: Server from WHIP Provider
Bearer Token: Bearer Token from WHIP Provider

Your settings page should look like this:

Advanced Settings

If you want lower latency and higher quality you can tune your encoder settings. Go to Settings -> Output and set Output Mode to Advanced. This settings apply to all most codecs and encoders, but this example is specific to x264.

  • Keyframe Interval - 1s
  • Profile - Baseline
  • Tune - zerolatency

Your settings page should look like this:


Simulcast

Simulcast allows OBS to send multiple quality levels of video. Simulcast is used for the following reasons.

  • Generation Loss - Transcoding causes generational loss. Encoding once is higher quality.
  • More control - Users control the exact encoding settings.
  • Lower Latency - No trancode reduces latency.
  • Simpler Servers - Transcoding is CPU intensive making it hard to manage.

OBS allows for between 1 and 4 layers to be sent. Each layers bitrate/resolution is
taken as a percentage of the global setting.

  • Total Layers 1
    • 100% Resolution and Bitrate
  • Total Layers 2
    • 100% Resolution and Bitrate
    • 50% Resolution and Bitrate
  • Total Layers 3
    • 100% Resolution and Bitrate
    • 66% Resolution and Bitrate
    • 33% Resolution and Bitrate
  • Total Layers 4
    • 100% Resolution and Bitrate
    • 75% Resolution and Bitrate
    • 50% Resolution and Bitrate
    • 25% Resolution and Bitrate

Simulcast is configured on the Settings -> Stream page. Below is a session that is configured to send 3 layers.