이 프로젝트는 Next.js 프론트엔드로부터 비디오 파일을 받아 Google Gemini를 통해 분석하고, 그 결과를 n8n 웹훅으로 전달하는 FastAPI 기반의 중간 서버입니다.
video_analysis_server/
├── server.py # FastAPI 서버 메인 파일
├── video_Processor.py # Gemini 비디오 분석 로직
├── media_utils.py # 비디오 다운샘플링 및 오디오 자막 추출 (FFmpeg, Whisper)
├── requirements.txt # 의존성 패키지 목록
└── README.md # 설명서
Python 3.8 이상 및 FFmpeg가 설치되어 있어야 합니다.
FFmpeg 설치:
- Mac:
brew install ffmpeg - Ubuntu:
sudo apt update && sudo apt install ffmpeg - Windows: FFmpeg 다운로드 후 PATH 설정
# 가상환경 생성 (선택사항)
python -m venv venv
source venv/bin/activate # Mac/Linux
# venv\Scripts\activate # Windows
# 의존성 설치
pip install -r requirements.txt보안을 위해 API 키 등은 .env 파일에 저장하여 관리합니다.
.env.example파일을 복사하여.env파일을 생성합니다.cp .env.example .env
.env파일을 열어 실제 값을 입력합니다.주의:GEMINI_API_KEY=your_gemini_api_key N8N_WEBHOOK_URL=your_n8n_webhook_url
.env파일은 Git에 커밋되지 않도록.gitignore에 포함되어 있습니다.
# 기본 실행 (포트 8000)
uvicorn server:app --reload- GitHub 저장소 연결:
UMC_mid_PreProcessing저장소를 Cloudtype에 연결합니다. - 설정:
- Language: Python
- Version: 3.9 이상
- Start Command:
uvicorn server:app --host 0.0.0.0 --port 8000
- 환경 변수 (Environment Variables):
- Cloudtype 대시보드에서
GEMINI_API_KEY와N8N_WEBHOOK_URL을 설정합니다.
- Cloudtype 대시보드에서
Dockerfile을 생성하여 컨테이너로 배포할 수도 있습니다.
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["uvicorn", "server:app", "--host", "0.0.0.0", "--port", "8000"]- URL:
/api/analyze-video - Method:
POST - Content-Type:
multipart/form-data - Body:
file: 비디오 파일 (Binary, max 100MB)
응답 (Response):
{
"message": "Video received and processing started",
"filename": "video.mp4",
"status": "processing"
}참고: 실제 분석 결과는 백그라운드 작업 후 n8n 웹훅으로 전송됩니다.