Add HLS browser preview for live RTSP demo and real camera URLs.

MediaMTX pulls site-config RTSP into HLS with API proxying for hls.js on the demo client; simulated realtime keeps local file previews only. Also add optional JPEG frame capture and document Docker HLS host settings.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Kevin
2026-05-22 14:44:28 +08:00
parent d6f4590969
commit e92dc1a6d9
14 changed files with 894 additions and 7 deletions

View File

@@ -57,6 +57,21 @@ SDK **不作为构建期依赖**:将厂商提供的 Linux x86_64 动态库挂
- 同类物品写入受 `VIDEO_DETAIL_COOLDOWN_SEC` 节流。
- RTSP 读帧连续失败达到 `VIDEO_READ_FAILURE_RECONNECT_THRESHOLD` 时会 `release` 并尝试重连,间隔 `VIDEO_RECONNECT_BACKOFF_SECONDS`
## Demo 联调台HLS 浏览器预览
浏览器无法直接播放 RTSP。联调台通过 **MediaMTX** 将 RTSP 转为 **HLS**,由 FastAPI 反代 m3u8/ts 后由 **hls.js** 播放。
| 链路 | 行为 |
|------|------|
| **链路 1**(真 RTSP | `POST /internal/demo/hls-preview/ensure` 在宿主机起独立 MediaMTX 容器,按 `or_site_config``video_rtsp_urls` 拉流 |
| **链路 2**(模拟实时) | 不使用 HLS/RTSP 预览;联调台在各路槽位用本地 `<video>` 预览所选文件 |
- 播放地址形如:`GET /internal/demo/hls-preview/{camera_id}/index.m3u8`playlist 内分片 URL 会重写为 API 路径)。
- **API 在 Docker 内**时须设 `DEMO_HLS_PREVIEW_HOST=host.docker.internal`compose 已默认),且宿主机需有 **docker** CLI 供拉流模式起 MediaMTX。
- 环境变量:`DEMO_HLS_PREVIEW_PORT`(默认 18888`DEMO_HLS_PREVIEW_HOST`(本机默认 `127.0.0.1`)。
单帧 JPEG 预览仍保留:`GET /internal/demo/rtsp-preview/{camera_id}/frame.jpg`(不依赖 MediaMTX
## 相关环境变量
详见 `backend/.env.example` 中「视频RTSP + 可选海康 HCNetSDK」一节
详见 `backend/.env.example` 中「视频RTSP + 可选海康 HCNetSDK」与 HLS 预览相关注释