Skip to content

Стриминг HLS и трансляции с низкой задержкой ​

RUSEON Core оснащен встроенным in-memory трансмуксером HLS, упаковывающим входящие кадры RTSP в сегменты MPEG-TS на лету без обращения к диску.


1. Спецификация эндпоинтов HLS ​

ЭндпоинтМетодТип ответаОписание
/stream/hls/{id}/index.m3u8GETapplication/vnd.apple.mpegurlMulti-variant мастер-плейлист с привязкой субтитров ИИ
/stream/hls/{id}/stream.m3u8GETapplication/vnd.apple.mpegurlПлейлист видеопотока со скользящим окном сегментов в RAM
/stream/hls/{id}/subs.m3u8GETapplication/vnd.apple.mpegurlДорожка субтитров WebVTT с метаданными детекций ИИ
/stream/hls/{id}/{segment}GETvideo/MP2TВиртуальный сегмент MPEG-TS из оперативной памяти

2. Пример интеграции плеера (Hls.js) ​

html
<!DOCTYPE html>
<html>
<head>
  <title>RUSEON HLS Live Stream</title>
  <script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
</head>
<body>
  <video id="video" controls autoplay muted style="width: 100%; max-width: 960px;"></video>

  <script>
    const video = document.getElementById('video');
    const videoSrc = 'http://localhost:8080/stream/hls/cam-01/index.m3u8';

    if (Hls.isSupported()) {
      const hls = new Hls({
        liveSyncDurationCount: 3,
        maxBufferLength: 10
      });
      hls.loadSource(videoSrc);
      hls.attachMedia(video);
    } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
      // Нативная поддержка Safari
      video.src = videoSrc;
    }
  </script>
</body>
</html>

3. Конфигурация в config.yaml ​

yaml
server:
  hls:
    live_segments_in_memory: 3  # Количество сегментов в RAM (по умолчанию: 3)

cameras:
  - id: "cam-01"
    url: "rtsp://admin:pass@192.168.1.100:554/live"
    lazy_hls: true             # Формировать HLS только при наличии зрителей

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

Released under the MIT License.