← Cloudflare Stream / stream
WebRTC
Živé vysílání s podsekundovou latencí (pomocí WHIP) a přehrávání (pomocí WHEP) pro neomezený počet souběžných diváků.
WebRTC je ideální, když potřebujete přehrávat živé video téměř v reálném čase, například:
- Když je výsledek živé události časově citlivý (sportovní přenosy, finanční zpravodajství)
- Když diváci interagují s živým vysíláním (živé otázky a odpovědi, aukce apod.)
- Když chcete, aby vaši koncoví uživatelé mohli snadno spustit živé vysílání nebo vytvářet vlastní video obsah přímo z webového prohlížeče nebo nativní aplikace
Krok 1: Vytvořte live input
Vytvořte živý vstup pomocí jedné ze dvou možností:
-
Použijte Živé vstupy stránce v Cloudflare dashboard.
Přejděte na Živé vstupy ↗ -
Odešlete požadavek POST na
/live_inputskoncový bod API
{
"uid": "1a553f11a88915d093d45eda660d2f8c",
...
"webRTC": {
"url": "https://customer-<CODE>.cloudflarestream.com/<SECRET>/webRTC/publish"
},
"webRTCPlayback": {
"url": "https://customer-<CODE>.cloudflarestream.com/<INPUT_UID>/webRTC/play"
},
...
}Krok 2: Spusťte živé vysílání pomocí WHIP
Každý živý vstup má jedinečnou URL adresu, na kterou může vysílat jeden tvůrce. Tato URL adresa by měla pouze be shared with the creator, anyone with this URL has the ability to stream live video to this live input.
Zkopírujte URL adresu, a to buď z:
-
Živé vstupy stránce v Cloudflare dashboard.
Přejděte na Živé vstupy ↗ -
webRTCklíč v odpovědi API (viz výše).
Vložte tuto URL adresu do ukázkového kódu.
// Add a <video> element to the HTML page this code runs in:
// <video id="input-video" autoplay muted></video>
import WHIPClient from "./WHIPClient.js";
const url = "<WEBRTC_URL_FROM_YOUR_LIVE_INPUT>"; // add the webRTC URL from your live input here
const videoElement = document.getElementById("input-video");
const client = new WHIPClient(url, videoElement);Jakmile tvůrce udělí oprávnění ke kameře a mikrofonu, začne se živé video a zvuk automaticky streamovat do Cloudflare pomocí WebRTC.
Tuto adresu URL můžete použít i s libovolným klientem, který podporuje WebRTC-HTTP ingestion protocol (WHIP) ↗. Viz podporovaní klienti WHIP se seznamem klientů, u kterých jsme otestovali a potvrdili kompatibilitu s Cloudflare Stream.
Krok 3: Přehrajte živé video pomocí WHEP
Zkopírujte URL adresu, a to buď z:
-
Živé vstupy stránce v Cloudflare dashboard.
Přejděte na Živé vstupy ↗ -
webRTCPlaybackklíč v odpovědi API (viz výše)
Počet souběžně sledujících diváků není nijak omezen.
Vložte tuto URL adresu do ukázkového kódu.
// Add a <video> element to the HTML page this code runs in:
// <video id="output-video" autoplay muted></video>
import WHEPClient from "./WHEPClient.js";
const url = "<WEBRTC_URL_FROM_YOUR_LIVE_INPUT>"; // add the webRTCPlayback URL from your live input here
const videoElement = document.getElementById("output-video");
const client = new WHEPClient(url, videoElement);Dokud tvůrce aktivně vysílá, diváci by měli vidět jeho vysílání ve svém prohlížeči s latencí kratší než 1 sekunda.
Tuto adresu URL můžete použít i s libovolným klientem, který podporuje WebRTC-HTTP egress protocol (WHEP) ↗. Viz podporovaní klienti WHEP se seznamem klientů, u kterých jsme otestovali a potvrdili kompatibilitu s Cloudflare Stream.
Použití WebRTC v nativních aplikacích
Pokud vytváříte nativní aplikaci, výše uvedený ukázkový kód lze spustit v WkWebView (iOS) ↗, WebView (Android) ↗ nebo pomocí react-native-webrtc ↗. Pokud potřebujete použít WebRTC bez webview, můžete použít nativní knihovny Google pro Javu a Objective-C implementace rozhraní WebRTC API ↗.
Ladění WebRTC
- Chrome: Přejděte na
chrome://webrtc-internalsk zobrazení podrobných protokolů a grafů. - Firefox: Přejděte na
about:webrtck zobrazení informací o relacích WebRTC, podobně jako v Chromu. - Safari: Chcete-li povolit protokoly WebRTC, otevřete v inspektoru kartu nastavení (ikona ozubeného kolečka) a v rozbalovací nabídce nastavte WebRTC logging na "Verbose".
Podporovaní klienti WHIP a WHEP
Kromě ukázkového klienta WHIP a ukázkového klienta WHEP použitých v předchozích příkladech jsme testováním potvrdili kompatibilitu následujících klientů s Cloudflare Stream:
WHIP
- OBS (Open Broadcaster Software) ↗
- @eyevinn/whip-web-client ↗ (TypeScript)
- whip-go ↗ (Go)
- gst-plugins-rs ↗ (zásuvné moduly pro Gstreamer napsané v jazyce Rust)
- Larix Broadcaster ↗ (bezplatné aplikace pro iOS a Android s WebRTC založené na Pion, k dispozici je SDK)
WHEP
- @eyevinn/webrtc-player ↗ (TypeScript)
- @eyevinn/wrtc-egress ↗ (TypeScript)
- gst-plugins-rs ↗ (zásuvné moduly pro Gstreamer napsané v jazyce Rust)
S přibývajícími klienty WHIP a WHEP se zavazujeme je podporovat a plně dodržovat oba protokoly.
Podporované kodeky
- VP9 ↗ (doporučeno pro nejvyšší kvalitu)
- VP8 ↗
- h264 ↗ (Constrained Baseline Profile Level 3.1, označovaný jako
42e01fv nabídce SDP, konkrétně vprofile-level-idparametr.)
Soulad se specifikacemi WHIP a WHEP
Cloudflare Stream plně podporuje všechny aspekty WHIP ↗ a WHEP ↗ specifikace, včetně:
Konkrétní použitou verzi WHIP a WHEP zjistíte v protocol-version hlavičku v odpovědích WHIP a WHEP API. Hodnota této hlavičky odkazuje na slug návrhu IETF (IETF draft) pro daný protokol. Stream v současnosti používá draft-ietf-wish-whip-06 (očekává se, že půjde o finální revizi návrhu WHIP) a draft-murillo-whep-01 (nejaktuálnější návrh WHEP).
Omezení během beta verze
- Nahrávání zatím není podporováno (již brzy)
- Simulcasting (restreaming) zatím není podporováno (již brzy)
- Počty živých diváků zatím nejsou podporovány (již brzy)
- Analytics zatím nejsou podporovány (již brzy)
- WHIP and WHEP must be used together, we do not yet support streaming using RTMP/SRT and playing using WHEP, or streaming using WHIP and playing using HLS or DASH. (coming soon)
- Jakmile bude streamování přes WebRTC obecně dostupné, bude se cenově řídit stejně jako zbytek Cloudflare Stream, tedy podle minut uložení a minut doručeného videa.