Files
GhiVideo_v4/docs/history/2026-07-07_1600_AI영상요약-화질음질-선택다운로드.md
T
b23042andClaude Fable 5 d38b842e8d GhiVideo 소스 복제 — v4 작업 시작 기준
기존 GhiVideo 저장소 HEAD의 트래킹 소스 362개 파일을 복제.
(node_modules·storage·빌드 산출물·대용량 미디어는 .gitignore 규칙대로 제외)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 14:32:51 +09:00

39 lines
2.0 KiB
Markdown

# AI Video Brief — 화질/음질 선택 다운로드 기능 추가
**소요 시간**: 9분
**Context 사용량**: input 780k / output 58k tokens (추정값)
## 요청 내용
다운로드 가능한 영상 해상도들을 항목으로 보여주고 클릭 시 그 화질로 다운로드.
음성도 품질 목록을 보여주고 사용자가 선택.
## 구현 내용 (`ai_video_brief`)
### 백엔드
- `downloader.list_formats(url)` — 유튜브 제공 포맷을 조회해
영상: (해상도, fps) 조합별 대표 1개 (video-only 우선 + 코덱 우선순위 av01>vp9>avc1, 예상 크기 포함)
음성: 비트레이트별 대표 1개 (kbps, 확장자, 예상 크기)
- `GET /api/formats?url=...` — 선택 화면용 목록 API
- `POST /api/jobs` 확장: `format_id`(선택 스트림), `video_only`(병합 필요 여부), `quality_label`(표시용)
- `download_video`: format_id 지정 시 `{fid}+bestaudio/...` 폴백 체인, 진행형(소리 포함) 스트림은 `{fid}/best`
- `download_audio`: format_id 지정 시 해당 스트림 → mp3 변환
### 웹 화면
- 🎬/🎵 버튼 클릭 → 즉시 다운로드 대신 **품질 선택 패널** 표시
- "품질 목록을 가져오는 중…" 로딩 → 항목 목록 (최상단 항목에 "추천" 배지)
- 영상: "1080p 24fps · av01 · 약 537MB", 음성: "129kbps · m4a · 약 56MB" 형식
- 항목 클릭 → 그 품질로 다운로드 시작, 닫기 버튼으로 취소
- 완료 후 링크에 선택/실제 품질 표시
## 테스트 결과
- ✅ 목록 API: DJI 영상 → 영상 8개(144p~4K, 크기 포함) / 음성 4개 정상
- ✅ 영상 선택 다운로드: 144p 15fps 선택 → ffprobe로 정확히 144p/15fps 수신 확인
- ✅ 음성 선택 다운로드: 47kbps 선택 → 완료, 품질 라벨 표시 확인
## 다음 에이전트 참고
- 4K 등 1080p 초과 화질도 이제 선택 패널에서 받을 수 있음 (`VIDEO_MAX_HEIGHT`는 '자동 최고' 경로에만 적용)
- 영상 항목의 예상 크기는 영상 스트림만의 크기 (소리 병합 시 소폭 증가) — "약" 표기로 처리