Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion public/__redirects
Original file line number Diff line number Diff line change
Expand Up @@ -1932,7 +1932,8 @@
/stream/viewing-videos/using-the-player-api/ /stream/viewing-videos/using-the-stream-player/using-the-player-api/ 301
/stream/platform/changelog/ /stream/changelog/ 301
/stream/platform/changelog/index.xml /stream/changelog/index.xml 301
/stream/platform/webrtc-beta/ /stream/webrtc-beta/ 301
/stream/platform/webrtc-beta/ /stream/webrtc/ 301
/stream/webrtc-beta/ /stream/webrtc/ 301
/stream/reference/faq/ /stream/faq/ 301
/stream/platform/ /stream/changelog/ 301
/stream/reference/ /stream/faq/ 301
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ description: >
date: 2025-04-11
---

Cloudflare [Stream](/stream/) has completed an infrastructure upgrade for our [Live WebRTC beta](/stream/webrtc-beta/) support which brings increased scalability and improved playback performance to all customers. WebRTC allows broadcasting directly from a browser (or supported WHIP client) with ultra-low latency to tens of thousands of concurrent viewers across the globe.
Cloudflare [Stream](/stream/) has completed an infrastructure upgrade for our [Live WebRTC beta](/stream/webrtc/) support which brings increased scalability and improved playback performance to all customers. WebRTC allows broadcasting directly from a browser (or supported WHIP client) with ultra-low latency to tens of thousands of concurrent viewers across the globe.

Additionally, as part of this upgrade, the WebRTC beta now supports Signed URLs to protect playback, just like our standard live stream options (HLS/DASH).

For more information, learn about the [Stream Live WebRTC beta](/stream/webrtc-beta/).
For more information, learn about the [Stream Live WebRTC beta](/stream/webrtc/).
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@ description: Go live to thousands in milliseconds without separate broadcast sof
products:
- stream
date: 2026-10-15
# For review:
publish_future_dated_entry: true
---

[Stream WebRTC support](https://developers.cloudflare.com/stream/webrtc-beta/) lets you deliver high quality live video to thousands of concurrent viewers in milliseconds. WebRTC is compatible with native Web APIs and standard protocols, so creators can [go live from a browser](https://developers.cloudflare.com/stream/examples/browser-based-webrtc/) without needing a separate broadcast application. This powers platforms to build custom experiences with deep feature integration for creators as well as viewers. Here's how to get started with a Stream live input and a browser.
[Stream WebRTC support](https://developers.cloudflare.com/stream/webrtc/) lets you deliver high quality live video to thousands of concurrent viewers in milliseconds. WebRTC is compatible with native Web APIs and standard protocols, so creators can [go live from a browser](https://developers.cloudflare.com/stream/examples/browser-based-webrtc/) without needing a separate broadcast application. This powers platforms to build custom experiences with deep feature integration for creators as well as viewers. Here's how to get started with a Stream live input and a browser.

Usage-based billing for WebRTC begins today, October 15, 2026 and follows the standard rates for minutes of video delivered. Refer to [pricing](https://developers.cloudflare.com/stream/pricing/) for rates.

Expand Down Expand Up @@ -69,4 +67,4 @@ Finally, you can play using WHEP using Stream’s [built-in player](https://deve
await pc.setRemoteDescription({ type: "answer", sdp: answer });
```

Learn more in the [Stream WebRTC](https://developers.cloudflare.com/stream/webrtc-beta/) docs or [try the all-in-one tutorial](https://developers.cloudflare.com/stream/examples/browser-based-webrtc/) for yourself.
Learn more in the [Stream WebRTC](https://developers.cloudflare.com/stream/webrtc/) docs or [try the all-in-one tutorial](https://developers.cloudflare.com/stream/examples/browser-based-webrtc/) for yourself.
4 changes: 2 additions & 2 deletions src/content/directory/stream-web-rtc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ name: stream-web-rtc

entry:
title: WebRTC
url: /stream/webrtc-beta/
url: /stream/webrtc/
show: false

meta:
title: Cloudflare WebRTC docs
description: WebRTC provides sub-second latency live streaming using WHIP and playback using WHEP to unlimited concurrent viewers.
description: WebRTC provides ultra-low latency live streaming using WHIP and playback using WHEP to thousands of concurrent viewers.
author: "@cloudflare"
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ products:

import { DashButton } from "~/components";

This tutorial shows how to broadcast ultra-low latency live video from a browser to Cloudflare Stream using [WHIP](https://www.ietf.org/archive/id/draft-ietf-wish-whip-16.html) and play it back in a browser using [WHEP](https://www.ietf.org/archive/id/draft-murillo-whep-01.html). Both the broadcaster and the player use the browser's built-in [WebRTC](/stream/webrtc-beta/) APIs — there are no libraries to install and no external applications.
This tutorial shows how to broadcast ultra-low latency live video from a browser to Cloudflare Stream using [WHIP](https://www.ietf.org/archive/id/draft-ietf-wish-whip-16.html) and play it back in a browser using [WHEP](https://www.ietf.org/archive/id/draft-murillo-whep-01.html). Both the broadcaster and the player use the browser's built-in [WebRTC](/stream/webrtc/) APIs — there are no libraries to install and no external applications.

By the end, you will have a basic HTML page that captures your camera and microphone, streams it to a live input, and plays the same stream back with sub-second latency. You should be able to complete this walkthrough in less than 15 minutes.

Expand Down Expand Up @@ -123,7 +123,7 @@ async function startBroadcast() {
startBroadcast().catch(console.error);
```

Once you call `startBroadcast()` and grant camera and microphone permission, the browser negotiates a connection and begins sending live video and audio to Cloudflare over WebRTC. You do not need to select a codec — the browser will negotiate a [supported codec](/stream/webrtc-beta/#supported-codecs) automatically.
Once you call `startBroadcast()` and grant camera and microphone permission, the browser negotiates a connection and begins sending live video and audio to Cloudflare over WebRTC. You do not need to select a codec — the browser will negotiate a [supported codec](/stream/webrtc/#supported-codecs) automatically.

This script does not cover selecting between multiple camera or audio sources and will use the default provided by the browser.

Expand Down Expand Up @@ -296,6 +296,6 @@ Common issues:

## Next steps

- Review the [WebRTC reference](/stream/webrtc-beta/) for supported codecs, protocol conformance, and limitations.
- Broadcast from other software with the [OBS and FFmpeg instructions](/stream/webrtc-beta/#step-2-go-live-using-whip).
- Use a maintained [WHIP or WHEP client library](/stream/webrtc-beta/#supported-whip-and-whep-clients) instead of writing signaling yourself.
- Review the [WebRTC reference](/stream/webrtc/) for supported codecs, protocol conformance, and limitations.
- Broadcast from other software with the [OBS and FFmpeg instructions](/stream/webrtc/#step-2-go-live-using-whip).
- Use a maintained [WHIP or WHEP client library](/stream/webrtc/#supported-whip-and-whep-clients) instead of writing signaling yourself.
2 changes: 1 addition & 1 deletion src/content/docs/stream/pricing.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ Delivery is a post-paid, usage-based pricing dimension billed at $1 per 1,000 mi
Delivery is counted for the following uses:

- Playback using [Stream's built-in player](/stream/viewing-videos/using-the-stream-player/) or the [HLS or DASH manifests](/stream/viewing-videos/using-own-player/)
- [WebRTC (WHEP)](/stream/webrtc-beta/) playback
- [WebRTC (WHEP)](/stream/webrtc/) playback
- MP4 Downloads
- Simulcasting via SRT or RTMP live outputs

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,15 +71,15 @@ export default {

You can program your app to generate tokens in three ways:

- **Low-volume or testing: Use the `/token` endpoint to generate a short-lived signed token.** This is recommended for testing purposes or if you are generating less than 1,000 tokens per day. It requires making an API call to Cloudflare for each token, _which is subject to [rate limiting](/fundamentals/api/reference/limits/)._ The default result is valid for 1 hour. This method does not support [Live WebRTC](/stream/webrtc-beta/).
- **Low-volume or testing: Use the `/token` endpoint to generate a short-lived signed token.** This is recommended for testing purposes or if you are generating less than 1,000 tokens per day. It requires making an API call to Cloudflare for each token, _which is subject to [rate limiting](/fundamentals/api/reference/limits/)._ The default result is valid for 1 hour. This method does not support [Live WebRTC](/stream/webrtc/).

- **Recommended: Use a signing key to create tokens.** If you have thousands of daily users or need to generate a high volume of tokens, as with [Live WebRTC](/stream/webrtc-beta/), you can create tokens yourself using a signing key. This way, you do not need to call a Stream API each time you need to generate a token, and is therefore _not_ a rate-limited operation.
- **Recommended: Use a signing key to create tokens.** If you have thousands of daily users or need to generate a high volume of tokens, as with [Live WebRTC](/stream/webrtc/), you can create tokens yourself using a signing key. This way, you do not need to call a Stream API each time you need to generate a token, and is therefore _not_ a rate-limited operation.

- **Workers binding: Use the Stream binding to generate tokens.** If you are using Cloudflare Workers with the Stream binding, you can generate tokens directly without making a separate API call or managing signing keys. This is the simplest approach for Workers users. For advanced customization such as access rules or custom expiration, use a signing key instead.

## Option 1: Using the /token endpoint

You can call the `/token` endpoint for any video that is marked private to get a signed URL token which expires in one hour. This method does not support [Live WebRTC](/stream/webrtc-beta/).
You can call the `/token` endpoint for any video that is marked private to get a signed URL token which expires in one hour. This method does not support [Live WebRTC](/stream/webrtc/).

```bash
curl --request POST \
Expand Down Expand Up @@ -196,7 +196,7 @@ The token generated by the binding expires in one hour by default. If you need t

## Option 3: Using a signing key to create signed tokens

If you are generating a high-volume of tokens, using [Live WebRTC](/stream/webrtc-beta/), or need to customize the access rules, generate new tokens using a signing key so you do not need to call the Stream API each time.
If you are generating a high-volume of tokens, using [Live WebRTC](/stream/webrtc/), or need to customize the access rules, generate new tokens using a signing key so you do not need to call the Stream API each time.

### Step 1: Call the `/stream/key` endpoint _once_ to obtain a key

Expand Down
6 changes: 3 additions & 3 deletions src/content/release-notes/stream.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ entries:
description: |-
Stream Live WHIP/WHEP will be progressively migrated to a new implementation powered by Cloudflare Realtime (Calls) starting Thursday 2025-03-13. No API or integration changes will be required as part of this upgrade. Customers can expect an improved playback experience. Otherwise, this should be a transparent change, although some error handling cases and status reporting may have changed.

For more information review the [Stream Live WebRTC beta](/stream/webrtc-beta/) documentation.
For more information review the [Stream Live WebRTC beta](/stream/webrtc/) documentation.
- publish_date: "2025-02-10"
title: Stream Player ad support adjustments for Google Ad Exchange Verification
description: |-
Expand Down Expand Up @@ -127,13 +127,13 @@ entries:
title: VP9 support for WebRTC live streams (beta)
description:
Cloudflare Stream now supports [VP9](https://developers.google.com/media/vp9)
when streaming using [WebRTC (WHIP)](/stream/webrtc-beta/), currently in beta.
when streaming using [WebRTC (WHIP)](/stream/webrtc/), currently in beta.
- publish_date: "2022-11-08"
title: Reduced time to start WebRTC streaming and playback with Trickle ICE
description: |-
Cloudflare Stream's [WHIP](https://datatracker.ietf.org/doc/draft-ietf-wish-whip/) and [WHEP](https://www.ietf.org/archive/id/draft-murillo-whep-01.html) implementations now support [Trickle ICE](https://datatracker.ietf.org/doc/rfc8838/), reducing the time it takes to initialize WebRTC connections, and increasing compatibility with WHIP and WHEP clients.

For more, refer to [the docs](/stream/webrtc-beta/).
For more, refer to [the docs](/stream/webrtc/).
- publish_date: "2022-11-07"
title: Deprecating the 'per-video' Analytics API
description: |-
Expand Down
Loading