WHEP
WHEP (WebRTC-HTTP Egress Protocol) — обратный к WHIP. Плеер получает WebRTC-поток от сервера через один HTTP POST с SDP. Sub-second latency для зрителя. IETF draft, поддерживается индустрией.
Flow (зеркало WHIP)
1. Плеер создаёт RTCPeerConnection, offerToReceive.
2. POST /whep/live/stream1 с телом = SDP offer
→ 201 Created, Location: /whep/session/42
→ SDP answer в теле
3. Медиа течёт от сервера к плееру через SRTP.
4. DELETE /whep/session/42 для остановки.
Пример JS
const pc = new RTCPeerConnection();
pc.addTransceiver('video', {direction: 'recvonly'});
pc.addTransceiver('audio', {direction: 'recvonly'});
pc.ontrack = e => video.srcObject = e.streams[0];
const offer = await pc.createOffer();
await pc.setLocalDescription(offer);
const res = await fetch('/whep/live/stream1', {
method: 'POST',
headers: {'Content-Type': 'application/sdp'},
body: offer.sdp
});
const answer = await res.text();
await pc.setRemoteDescription({type: 'answer', sdp: answer});
WHEP vs HLS/DASH
| WHEP | HLS/DASH | |
|---|---|---|
| Latency | 100-500мс | 2-30с |
| ABR | simulcast/SVC | множественные renditions |
| CDN scale | сложнее (stateful) | простой HTTP |
| Оффлайн-запись | сложно | просто (файлы .ts) |
| Firewall | UDP → часто дырка | чистый HTTP |
Гибрид
Многие: первому зрителю — WHEP (мгновенный старт), масштаб — HLS (кеш CDN). Или WHEP + LL-HLS fallback.
Применение
- Cloud gaming
- Аукционы (bidding real-time)
- Онлайн-казино, ставки
- Интерактивные шоу
- Cloudflare Stream, LiveKit, Millicast
ABR через simulcast
WebRTC-simulcast: сервер получает N потоков разного качества, шлёт зрителю тот что подходит по каналу. Всё в одной WHEP-сессии.