WebRTC/WHEP
Alta доставляет живое видео с малой задержкой по WebRTC с помощью WHEP (WebRTC-HTTP Egress Protocol). Плеер отправляет SDP offer HTTP-запросом, а Alta отвечает видеопотоком.
Требования
Заголовок раздела «Требования»- Вариант канала использует ресивер с источником
rtsp://. Для других источников WHEP недоступен. - Поток содержит видеодорожку с кодеком H.264 или H.265. Поддержка H.265 зависит от браузера.
- Зритель может напрямую подключиться к серверу Alta: Alta не использует серверы STUN или TURN.
- Запросы отправляются на OTT Server, а не на API Server. Подробнее в разделе HTTP-сервер.
WHEP URL
Заголовок раздела «WHEP URL»http://<server-address>:<ott-port>/whep/<channel-path>/<variant>- channel-path: путь канала.
- variant: название варианта канала, например
hd.
Протокол
Заголовок раздела «Протокол»POST <whep-url>с SDP offer в теле запроса. Alta отвечает201 Createdс SDP answer в теле и URL сессии в заголовкеLocation:/whep/<channel-path>/<variant>/session/<id>.DELETE <session-url>завершает сессию.- На
OPTIONS <whep-url>Alta отвечает204 No Contentи заголовками CORS. Alta разрешает любой origin для WHEP-запросов.
Trickle ICE не поддерживается. Отправляйте offer после завершения сбора ICE.
Если у канала есть Authorizer, он проверяется для запросов POST и DELETE. Отклонённый запрос получает 403 Forbidden.
Минимальный браузерный плеер:
const pc = new RTCPeerConnection()pc.addTransceiver('video', { direction: 'recvonly' })pc.ontrack = (event) => { document.querySelector('video').srcObject = event.streams[0]}
await pc.setLocalDescription(await pc.createOffer())if (pc.iceGatheringState !== 'complete') { await new Promise((resolve) => { pc.addEventListener('icegatheringstatechange', () => { if (pc.iceGatheringState === 'complete') resolve() }) })}
const response = await fetch('http://alta.example.com:8101/whep/discovery/hd', { method: 'POST', headers: { 'Content-Type': 'application/sdp' }, body: pc.localDescription.sdp,})await pc.setRemoteDescription({ type: 'answer', sdp: await response.text() })Добавьте <video autoplay muted playsinline></video> на страницу, чтобы воспроизвести поток.
Устранение неполадок
Заголовок раздела «Устранение неполадок»- 404 Not Found: канал или вариант не существует, либо его источник не является URL
rtsp://. - 403 Forbidden: авторизатор канала отклонил запрос.
- 500 Internal Server Error: у варианта пока нет видеодорожки с поддерживаемым кодеком, либо SDP offer некорректен.