6 AI 파이프라인 — 텍스트로 보기¶
← 다이어그램으로 · 그림의 라벨과 연결을 원본 draw.io 파일에서 그대로 뽑았습니다. 32항목 · 9연결.
- 소비자 — 앱 재생 (presigned GET) · 격자 썸네일 · 하이라이트 확인
제어 — 상시 Python FastAPI AI 서버 (Lambda·GPU 대안 기각)
- Kafka video.uploaded 컨슈머
- 상태 머신 UPLOADED→ENCODING→BLURRING→READY/FAILED
- 실패 시 재시도·FAILED 마킹
- 실측 (dev EC2): 1080p 30초 E2E 4.3분
Source¶
(사용자 영상)
- 모바일 촬영 (격자 내 GPS)
- 갤러리 선택 (mp4·mov)
- 1~30초 · 검증된 s3Key
Ingestion¶
(적재 · 원본 불변)
- presigned PUT → S3 pending/
- 메타 저장 (videos row)
- 상태 = UPLOADED
Preprocess¶
(전처리)
- 1080p·30fps 다운스케일 — 필수 전제
- FFmpeg 인코딩·썸네일 추출
- 상태 = ENCODING
AI Analyze¶
(분석)
- PySceneDetect 장면 분할
- CLIP 하이라이트 스코어링
- YOLO 얼굴·차량번호 탐지 → 블러
- pHash 중복 검사
- 상태 = BLURRING
Output¶
(산출)
- 인코딩본·썸네일 S3 저장
- 하이라이트 구간 메타 갱신
- 상태 = READY (실패 시 FAILED)
저장 계층¶
- S3 pending/ (원본 · 불변)
- S3 encoded/ · thumbnails/
- PostgreSQL videos (상태·메타)
연결¶
- Source → Ingestion
- Ingestion → Preprocess
- Preprocess → AI Analyze
- AI Analyze → Output
- 제어 — 상시 Python FastAPI AI 서버 (Lambda·GPU 대안 기각) → Preprocess — 트리거
- Ingestion → S3 pending/ (원본 · 불변) — load
- Output → S3 encoded/ · thumbnails/ — write
- Output → PostgreSQL videos (상태·메타) — READY 갱신
- S3 encoded/ · thumbnails/ → 소비자 — read