WebRTC/WHEP
Alta entrega video en vivo con baja latencia mediante WebRTC usando WHEP (WebRTC-HTTP Egress Protocol). Un reproductor envía una oferta SDP con una solicitud HTTP y Alta responde con la transmisión de video.
Requisitos
Sección titulada «Requisitos»- La variante del canal usa un receptor con un origen
rtsp://. WHEP no está disponible para otros orígenes. - La transmisión tiene una pista de video con códec H.264 o H.265. La compatibilidad del navegador con H.265 depende del navegador.
- El espectador puede acceder directamente al servidor de Alta: Alta no usa servidores STUN ni TURN.
- Las solicitudes se envían al OTT Server, no al API Server. Más información en Servidor HTTP.
URL de WHEP
Sección titulada «URL de WHEP»http://<server-address>:<ott-port>/whep/<channel-path>/<variant>- channel-path: Ruta del canal.
- variant: Nombre de la variante del canal, por ejemplo
hd.
Protocolo
Sección titulada «Protocolo»POST <whep-url>con la oferta SDP en el cuerpo de la solicitud. Alta responde201 Createdcon la respuesta SDP en el cuerpo y la URL de la sesión en el encabezadoLocation:/whep/<channel-path>/<variant>/session/<id>.DELETE <session-url>finaliza la sesión.OPTIONS <whep-url>se responde con204 No Contenty encabezados CORS. Alta permite cualquier origen para las solicitudes WHEP.
Trickle ICE no es compatible. Envíe la oferta cuando la recopilación de ICE haya finalizado.
Si el canal tiene un autorizador, se comprueba en las solicitudes POST y DELETE. Una solicitud denegada recibe 403 Forbidden.
Ejemplo
Sección titulada «Ejemplo»Un reproductor de navegador mínimo:
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() })Agregue <video autoplay muted playsinline></video> a la página para reproducir la transmisión.
Solución de problemas
Sección titulada «Solución de problemas»- 404 Not Found: El canal o la variante no existe, o su origen no es una URL
rtsp://. - 403 Forbidden: El autorizador del canal denegó la solicitud.
- 500 Internal Server Error: La variante aún no tiene una pista de video con un códec compatible, o la oferta SDP no es válida.