RTSP-ті HLS-ке түрлендіру — MediaMTX, FFmpeg, SaaS

Браузерде (Chrome, Firefox, Safari, Edge) RTSP-ағын ашылмайды — тек HLS немесе WebRTC. Мына мақалада RTSP-ды HLS-ке түрлендірудің 3 әдісін салыстырамыз: MediaMTX (ашық код), FFmpeg (қолмен) және RTSP.KZ (SaaS).

Қысқаша

  • Браузер RTSP-ты түсінбейді → түрлендіру керек
  • 3 нұсқа: MediaMTX, FFmpeg, RTSP.KZ
  • Кідіріс: стандартты HLS 10-30 сек, LL-HLS 2-3 сек, WebRTC 0.2 сек
  • Ең қарапайымы — RTSP.KZ (5 минут ішінде дайын)

1. HLS дегеніміз не?

HLS (HTTP Live Streaming) — Apple 2009 жылы шығарған стандарт (RFC 8216). Идея: бейнені .ts-сегменттерге кесіп, .m3u8-манифест арқылы браузерге беру.

Файл құрылымы:

stream.m3u8 <- манифест (сегмент тізімі)
segment_0.ts <- 2-10 сек бейне
segment_1.ts
segment_2.ts
...

Артықшылықтары: барлық браузерде істейді (Safari нативтіде, Chrome/Firefox — hls.js кітапханасы арқылы), CDN арқылы масштабтауға болады, корпоративтік firewall-дардан өтеді.

2. Нұсқа A: MediaMTX (ашық код)

MediaMTX — Go тілінде жазылған ашық код, бір бинарлы файл. Docker-де де жұмыс істейді.

Іске қосу

  1. GitHub-тан бинарлы файлды жүктеу
  2. mediamtx.yml конфигін жасау:
paths:
  my_camera:
    source: rtsp://admin:pass@192.168.1.64:554/Streaming/Channels/101
    sourceProtocol: tcp
hlsSegmentCount: 3
hlsSegmentDuration: 2s
  1. Іске қосу: ./mediamtx
  2. HLS-сілтемесі: http://server:8888/my_camera/index.m3u8
Артықшылықтары: ашық код, конфигі қарапайым, RTSP + RTMP + WebRTC бір мезгілде береді. Кемшілік: сервер жалдау керек, тек Linux мықты жұмыс істейді.

3. Нұсқа B: FFmpeg (қолмен)

FFmpeg — эталондық бейне-құралы. Бір командамен HLS-конверсия жасайды.

Қарапайым команда

ffmpeg -rtsp_transport tcp -i rtsp://cam-url \
  -c copy -f hls \
  -hls_time 2 -hls_list_size 6 \
  -hls_flags delete_segments \
  /var/www/stream/index.m3u8

Параметрлер

ПараметрМағынасы
-c copyҚайта кодтамай, тек контейнерді ауыстыру. CPU 0%.
-hls_time 2Сегмент 2 секунд (кідіріс аз болу үшін)
-hls_list_size 6Плейлистте 6 сегмент қалдыру
-hls_flags delete_segmentsЕскі сегменттерді жою (дискіні аямау)
Артықшылықтары: толық бақылау, кез келген платформа. Кемшілік: қолмен басқару керек — процесс өшсе — қайта іске қосу керек. Supervisor немесе systemd керек.

4. Нұсқа C: RTSP.KZ (SaaS)

Егер сервер жалдау, MediaMTX баптау, FFmpeg қыруан-ойылған беруді қаламасаңыз — RTSP.KZ бәрін қорап-етіп береді.

Қосу

  1. Кабинетке кіру → «Камера қосу»
  2. Камерадан RTSP-URL жапсыру немесе Discovery Agent-пен автоматты табу
  3. «Қосу» түймесі
  4. Дайын HLS-сілтемесі:
https://rtsp.kz/hls/abc123/index.m3u8

HTTPS автоматты. WebRTC де қорап-етіп беріледі. LL-HLS қосулы (2-3 сек кідіріс).

5 минут ішінде — HLS-сілтемесі

Сервер жалдау, конфиг жазу, FFmpeg-ті жалау керек емес. Камера қосасыз — HLS-сілтемесі дайын. 1 сағат тегін тіркеусіз.

Тегін бастау →

5. Салыстыру

MediaMTXFFmpegRTSP.KZ
Іске қосу уақыты30 мин5 мин5 мин
Сервер керек пе?ИәИәЖоқ
Автоматты бақылауИә (демон)Жоқ (supervisor)Иә
WebRTCИәИә (сипатта күрделі)Иә (автоматты)
LL-HLSИәИәИә (әдепкі)
Ак IP керек пе?ИәИәЖоқ
ТегінИәИә1 сағат

6. HLS-ті сайтқа кіргізу

Safari нативтіде HLS-ті ойнатады, Chrome/Firefox — hls.js кітапханасы керек:

<video controls id="v"></video>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<script>
  const v = document.getElementById('v');
  const url = 'https://rtsp.kz/hls/abc123/index.m3u8';
  if (Hls.isSupported()) {
    const hls = new Hls();
    hls.loadSource(url); hls.attachMedia(v);
  } else if (v.canPlayType('application/vnd.apple.mpegurl')) {
    v.src = url;
  }
</script>

Жиі қойылатын сұрақтар

Неге RTSP-ты HLS-ке түрлендіру керек?

Заманауи браузерлер (Chrome, Firefox, Safari, Edge) RTSP-хаттамасын қолдамайды — тек HLS немесе WebRTC ойнатылады. RTSP-ды HLS-ке түрлендіргенде — кез келген құрылғыда онлайн көру мүмкіндігі болады.

HLS-конверсия үшін қандай құралдар бар?

3 негізгі: MediaMTX (ашық код), FFmpeg (қолмен), RTSP.KZ SaaS. Күрделі жүйелер үшін — Wowza, Nimble.

HLS-те кідіріс қандай?

Стандартты HLS: 10-30 сек. Low-Latency HLS (LL-HLS): 2-3 сек. WebRTC (HLS емес): 200 мс.

MediaMTX қалай іске қосу керек?

GitHub-тан бинарлы файлды жүктеу → mediamtx.yml-де camera source көрсету → ./mediamtx → HLS-сілтемесі: http://server:8888/my_camera/index.m3u8.

FFmpeg-пен RTSP → HLS қалай?

ffmpeg -rtsp_transport tcp -i rtsp://cam -c copy -f hls -hls_time 2 -hls_list_size 6 -hls_flags delete_segments /var/www/stream.m3u8. -c copy — қайта кодтамай.

Ұқсас беттер