기존 GhiVideo 저장소 HEAD의 트래킹 소스 362개 파일을 복제. (node_modules·storage·빌드 산출물·대용량 미디어는 .gitignore 규칙대로 제외) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2.0 KiB
2.0 KiB
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=...— 선택 화면용 목록 APIPOST /api/jobs확장:format_id(선택 스트림),video_only(병합 필요 여부),quality_label(표시용)download_video: format_id 지정 시{fid}+bestaudio/...폴백 체인, 진행형(소리 포함) 스트림은{fid}/bestdownload_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는 '자동 최고' 경로에만 적용) - 영상 항목의 예상 크기는 영상 스트림만의 크기 (소리 병합 시 소폭 증가) — "약" 표기로 처리