# 摄像头系统侧转换实施说明 当前版本由管理系统负责把边缘端的原始视频流转换为浏览器可播放的 MJPEG,后续可以只改配置切换为边缘端转换。 ## 1. 系统侧转换 在 `camera` 表中配置: | 字段 | 示例 | 说明 | | --- | --- | --- | | `stream_protocol` | `system-mjpeg` | 使用系统侧 FFmpeg 转换 | | `source_url` | `rtsp://user:pass@192.168.1.50:554/live` | 原始 RTSP/HTTP 地址,仅后端使用 | | `stream_url` | 空 | 系统侧模式下为空即可 | | `is_active` | `true` | 启用摄像头 | 管理端调用 `GET /api/parking/camera/streams` 时,会返回短期令牌地址,例如: ```text /api/parking/camera/stream/CAM-IN-01/ ``` 页面使用该地址显示实时画面。后端启动 FFmpeg,参数为 RTSP TCP 拉流、限帧、MJPEG 输出;浏览器断开后进程自动退出。 系统配置位于 `config.yaml`: ```yaml camera: conversion-mode: system ffmpeg-path: ffmpeg mjpeg-fps: 8 jpeg-quality: 5 ``` `ffmpeg-path` 可以填写 FFmpeg 的绝对路径。生产环境应限制摄像头源地址和数据库管理权限,避免把带密码的 `source_url` 返回前端。 ## 2. 切换到边缘端转换 边缘端准备好 WHEP/HLS 地址后,将: 1. `camera.conversion-mode` 改为 `edge`; 2. 将摄像头的 `stream_protocol` 改为 `webrtc` 或 `hls`; 3. 将边缘端播放地址写入 `stream_url`; 4. 重启后端或重新打开进出场操作页面。 页面和通道绑定关系不变,MQTT 道闸控制、车辆识别和图片 HTTP 上传也不受影响。 ## 3. 故障定位 - 下拉框没有摄像头:检查摄像头 `is_active=true`、`channel_id` 与道闸通道一致。 - 画面显示“视频连接失败”:检查 FFmpeg 是否在系统 PATH 中,或配置绝对路径。 - FFmpeg 启动失败:检查 `source_url` 是否可从管理系统主机访问,RTSP 用户名密码是否正确。 - 画面延迟较高:降低 `mjpeg-fps` 或将转换切换到边缘端 WHEP。