Skip to content

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/sdp
    • Authorization: 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.

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.m3u8

3.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 из оперативной памяти.

Связанная документация ​

Released under the MIT License.