콘텐츠로 이동

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