REST API: Эндпоинты видеостриминга и WebRTC WHEP
API видеостриминга обеспечивает доставку видео, звука и метаданных через WebRTC WHEP, WebSocket WebCodecs и Low-Latency HLS.
1. Сигнализация WebRTC WHEP (POST /stream/webrtc/whep/:id)
Инициализация воспроизведения видео со сверхнизкой задержкой (< 500 мс) по стандарту IETF WHEP.
- Заголовки запроса:
Content-Type:application/sdpAuthorization:Bearer <TOKEN>(или query-параметр?token=...приtoken_auth: true)
- Тело запроса: Строка SDP Offer из браузерного
RTCPeerConnection.createOffer()
bash
curl -X POST "http://localhost:8080/stream/webrtc/whep/cam-01" \
-H "Content-Type: application/sdp" \
--data-binary @client_offer.sdp- Ответ (
201 Created):- Content-Type:
application/sdp - Тело: Строка SDP Answer от движка Pion WebRTC.
- Content-Type:
2. Бинарный WebSocket для WebCodecs (GET /stream/ws/:id)
Низколатентный стриминг видеокадров напрямую в браузерный API WebCodecs:
http
GET /stream/ws/cam-01?token=<STREAM_TOKEN>
Upgrade: websocket
Connection: UpgradeПротокол бинарных пакетов:
0x01(Пакет конфигурации кодека): Байт0x01, за которым следуют VPS/SPS/PPS дляVideoDecoder.configure().0x02(Пакет полезной нагрузки кадра): Байт0x02, за которым следует 8-байтный таймштамп и сырые NALU-данные.
3. Эндпоинты HTTP Live Streaming (HLS)
3.1 Главный Master-манифест (GET /stream/hls/:id/index.m3u8)
Возвращает multi-variant манифест с привязкой видео и субтитров ИИ:
text
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="AI Detections",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="en",URI="subs.m3u8"
#EXT-X-STREAM-INF:BANDWIDTH=4000000,SUBTITLES="subs"
stream.m3u83.2 Плейлист видео (GET /stream/hls/:id/stream.m3u8)
Скользящий плейлист виртуальных сегментов MPEG-TS в памяти:
bash
curl "http://localhost:8080/stream/hls/cam-01/stream.m3u8"3.3 Субтитры WebVTT с метаданными ИИ (GET /stream/hls/:id/subs.m3u8)
Передает синхронизированные WebVTT-метки с JSON-координатами рамок детекций.
3.4 Сегмент видео (GET /stream/hls/:id/:segment)
Скачивание сегмента видео MPEG-TS из оперативной памяти.