This commit is contained in:
op
2026-04-28 17:19:25 +08:00
parent 99db78e554
commit 749d01f065
8 changed files with 1003 additions and 1007 deletions

View File

@@ -27,6 +27,11 @@ POSTGRES_PORT=35432
# VIDEO_RTSP_URL_TEMPLATE=rtsp://user:pass@host:554/path/{camera_id}
#
# 语音终端 ID 在站点 JSON 的 voice_or_room_bindings 中配置浏览器语音确认页web/voice-confirmation在页面内填写本机终端 ID。
#
# Docker 跑 APIdocker-compose.prod.yml站点 JSON 中可与 sample 相同使用术间摄像头局域网 IP容器出站经宿主机路由须宿主机可达该网段
# 若 RTSP 由「宿主机」上的假流/服务提供URL 须用 host.docker.internal 而非 127.0.0.1compose 已为 api 注入 extra_hosts。
# 容器内拉流默认使用 TCPdocker-compose.prod.yml仅当必须让 FFmpeg 自选传输时在 .env 中设空覆盖:
# OPENCV_FFMPEG_CAPTURE_OPTIONS=
# --- 海康 SDKLinux x86_64二进制勿提交仓库---
# HIKVISION_LIB_DIR=/opt/hikvision/lib

View File

@@ -1,36 +0,0 @@
# 本地/联调。部署项以外默认值见 `app/baked/algorithm.py`、`app/baked/pipeline.py`。
# 启动前执行 `alembic upgrade head``./start.sh` 已跑)。
# --- PostgreSQL ---
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=operation_room
POSTGRES_HOST=localhost
POSTGRES_PORT=35432
# DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:35432/operation_room
# --- 手术室站点配置(严格 JSON仅含 video_rtsp_urls + voice_or_room_bindings---
# 示例app/resources/or_site_config.sample.json。一键联调会向该文件合并更新 video_rtsp_urls须可写。
OR_SITE_CONFIG_JSON_FILE=app/resources/or_site_config.sample.json
# --- 百度 ---
BAIDU_APP_ID=31461922
BAIDU_API_KEY=8NjVDPUl64fg7InpxOka69TE
BAIDU_SECRET_KEY=DzIO6BTdABb0jFu80jWGDfmpxFfwlvA0
BAIDU_ASR_DEV_PID=1537
# 人脸脚本 `scripts/baidu_face_1n_search.py`
BAIDU_FACE_GROUP_ID_LIST=2_1
# --- MinIO ---
MINIO_ENDPOINT=127.0.0.1:9000
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET=operation-room-voice
MINIO_SECURE=false
# --- Demo 客户端联调 ---
DEMO_CORS_ENABLED=true
DEMO_CORS_ORIGINS=*
DEMO_ORCHESTRATOR_ENABLED=true
DEMO_ORCHESTRATOR_RTSP_PORT=18554
DEMO_ORCHESTRATOR_RTSP_JSON_HOST=127.0.0.1

View File

@@ -36,6 +36,10 @@ services:
build:
context: .
dockerfile: Dockerfile
# 容器内访问「宿主机上监听的 RTSP」假流 / MediaMTX 等)需要解析 host.docker.internal。
# Linux 默认无该主机名host-gateway 解析为宿主机在容器网桥上的地址Docker 20.10+)。
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?Set POSTGRES_PASSWORD}
@@ -61,6 +65,21 @@ services:
HIKVISION_USER: ${HIKVISION_USER:-}
HIKVISION_PASSWORD: ${HIKVISION_PASSWORD:-}
HIKVISION_PREVIEW_RTSP_TEMPLATE: ${HIKVISION_PREVIEW_RTSP_TEMPLATE:-}
# OpenCV/FFmpeg 拉 RTSPTCP 在容器 NAT/防火墙场景下比 UDP 更可靠;可用 .env 覆盖为空禁用
OPENCV_FFMPEG_CAPTURE_OPTIONS: ${OPENCV_FFMPEG_CAPTURE_OPTIONS:-rtsp_transport;tcp}
# 语音待确认TTS/ASR 需百度resolve 上传 WAV 还需 MinIO见 .env.example
BAIDU_APP_ID: ${BAIDU_APP_ID:-}
BAIDU_API_KEY: ${BAIDU_API_KEY:-}
BAIDU_SECRET_KEY: ${BAIDU_SECRET_KEY:-}
BAIDU_ASR_DEV_PID: ${BAIDU_ASR_DEV_PID:-1537}
MINIO_ENDPOINT: ${MINIO_ENDPOINT:-}
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-}
MINIO_BUCKET: ${MINIO_BUCKET:-operation-room-voice}
MINIO_SECURE: ${MINIO_SECURE:-false}
MINIO_REGION: ${MINIO_REGION:-}
DEMO_CORS_ENABLED: ${DEMO_CORS_ENABLED:-false}
DEMO_CORS_ORIGINS: ${DEMO_CORS_ORIGINS:-*}
ports:
- "${API_PORT:-38080}:8000"
depends_on:

View File

@@ -14,6 +14,12 @@
2. 调用 `POST /client/surgeries/start` 时,`camera_ids` 必须能在上述配置中解析出 RTSP 地址。
3. **开录确认**:每路摄像头在超时内成功打开并读到**首帧**后,才认为该路已开录。
## Docker 与 RTSP 地址
- **站点 JSON 中的局域网 IP**(如 `[or_site_config.sample.json](../app/resources/or_site_config.sample.json)``192.168.3.x`API 在默认 **bridge** 网络下出站流量经 **宿主机** 转发,只要**宿主机**能访问该网段,容器内一般可直接使用相同 URL无需改成 `172.x` 等。
- **`127.0.0.1` / `localhost`**:在容器内指向**容器自身**。若 RTSP 服务跑在宿主机(含 `fake_rtsp_from_file.py`、本机 MediaMTXURL 应使用 **`rtsp://host.docker.internal:<端口>/<路径>`**。[`docker-compose.prod.yml`](../docker-compose.prod.yml) 已为 `api` 服务配置 `extra_hosts: host.docker.internal:host-gateway`Linux 兼容macOS/Windows Desktop 通常已内置该主机名)。
- **传输协议**:生产 compose 默认设置环境变量 **`OPENCV_FFMPEG_CAPTURE_OPTIONS=rtsp_transport;tcp`**,使 OpenCV 经 FFmpeg 以 **TCP** 拉 RTSP降低容器/NAT 下 UDP 丢包导致的首帧超时;可通过环境变量覆盖。
## 海康官方 SDK 模式(可选)
SDK **不作为构建期依赖**:将厂商提供的 Linux x86_64 动态库挂载到容器内(例如 `/opt/hikvision/lib/libhcnetsdk.so`),并设置:

View File

@@ -34,6 +34,8 @@ RTSP 地址、账号、口令等由客户端对接工程师提供给服务端运
| `or-cam-03` | `rtsp://admin:Aa183137@192.168.3.4:554/Streaming/Channels/101` | 同上 |
| `or-cam-04` | `rtsp://admin:Aa183137@192.168.3.5:554/Streaming/Channels/101` | 同上 |
**Docker 部署**API 在容器内拉流时,上表这类**术间摄像头局域网 IP**通常可继续使用(出站经宿主机路由,须宿主机已能访问该网段)。若 RTSP 实际跑在**宿主机本机**假流等URL 中的主机应使用 `host.docker.internal`,勿写 `127.0.0.1`;详见 `docs/video-backends.md``docker-compose.prod.yml`
## 3. HTTP 路由一览
| **序号** | **方法** | **路径** | **说明** |

Binary file not shown.

Binary file not shown.

1942
uv.lock generated

File diff suppressed because it is too large Load Diff