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.