# Demo Client · 联调台 浏览器联调页,覆盖两条录制链路。语音待确认请使用 [`../voice-confirmation/`](../voice-confirmation/)(默认 :8080)。 ## 两条链路 | 模式 | 操作 | API | 语音 | 结束手术 | |------|------|-----|------|----------| | **链路 1 · 真摄像头** | 填 camera_id → 开始手术 | `POST /client/surgeries/start` | 需要 | 需要 | | **链路 3 · 离线精确** | 选 MP4 → 上传并处理 | `POST /internal/demo/offline-batch` | 无 | 不需要 | 链路 3 需 `DEMO_ORCHESTRATOR_ENABLED=true`。页顶「刷新状态」可查看 API 与 Demo 模式是否就绪。 ## 界面说明 - **链路 1**:只需填 `camera_ids` 与耗材候选,点「开始手术」;**无需上传视频**(服务端自动 RTSP 拉流切片)。 - **链路 3**:独立 MP4 上传区;与链路 1 **互斥**——同一手术号若仍有实时开录,离线上传会被拒绝;页面会提示先「结束手术」或换号。 - **模式记忆**:上次选择的链路会保存在浏览器 localStorage;默认首次打开为链路 3。 详见 [`docs/video-backends.md`](../../docs/video-backends.md)。 ## 启动 ```bash cd clients/demo-client python3 server.py ``` 浏览器打开 `http://127.0.0.1:38081/`,API 地址填后端(默认 `http://127.0.0.1:38080`)。须用 `server.py`(而非裸 `http.server`),才能从 `labels.yaml` 加载编号+名称。 ## HLS 预览(链路 1) 真 RTSP 可通过 MediaMTX 转 HLS 在页内预览;点击「启动 / 刷新预览」。