38 lines
1.7 KiB
Markdown
38 lines
1.7 KiB
Markdown
# video-ingest (минимальный скаффолд)
|
||
|
||
**Это не боевой video-ingest из ТЗ §6.** Это smoke-скаффолд Фазы 1, чтобы проверить цепочку «видео → face-service → apps/api → БД» без RTSP/GPU/ByteTrack. Полноценный сервис делается в Фазе 0.
|
||
|
||
Что делает:
|
||
- Открывает локальный mp4 через OpenCV.
|
||
- Каждый N-й кадр (`SAMPLE_EVERY`, default 10) отправляет в `face-service /embed`.
|
||
- Простейший single-camera трекинг по cos-дистанции (`< TRACK_DISTANCE_THRESH=0.3` в окне `TRACK_WINDOW_SEC=2`).
|
||
- На новый трек: `POST /ingest/tracks` + событие `arrived`.
|
||
- Каждый эмбеддинг — `POST /face-service/track-embeddings`.
|
||
|
||
## Запуск
|
||
|
||
```bash
|
||
cd apps/video-ingest
|
||
python -m venv .venv && source .venv/bin/activate
|
||
pip install -r requirements.txt
|
||
|
||
# Убедись, что face-service, apps/api, postgres подняты.
|
||
python -m video_ingest --source samples/walk-by.mp4 --camera-name cam-entrance --zone A
|
||
```
|
||
|
||
## Переменные окружения
|
||
|
||
- `FACE_SERVICE_URL` (default `http://localhost:8001`)
|
||
- `API_BASE_URL` (default `http://localhost:4000`)
|
||
- `SAMPLE_EVERY` (default `10`)
|
||
- `TRACK_DISTANCE_THRESH` (default `0.3`)
|
||
- `TRACK_WINDOW_SEC` (default `2.0`)
|
||
|
||
## Критерий приёмки
|
||
|
||
После прогона:
|
||
- В `tracks` появилось хотя бы 1 запись.
|
||
- В `face_embeddings` сохранены эмбеддинги.
|
||
- В `track_events` есть `arrived`.
|
||
- В логах `apps/api` видны POST /ingest/tracks и /ingest/track-events.
|