기존 GhiVideo 저장소 HEAD의 트래킹 소스 362개 파일을 복제. (node_modules·storage·빌드 산출물·대용량 미디어는 .gitignore 규칙대로 제외) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
43 lines
1.7 KiB
Markdown
43 lines
1.7 KiB
Markdown
# AI Video Brief — 음성 선택지 코덱 효율 반영 추천 정렬
|
|
|
|
**소요 시간**: 4분
|
|
**Context 사용량**: input 900k / output 66k tokens (추정값)
|
|
|
|
## 요청 내용
|
|
|
|
음성 목록에서 같은 상황일 때 자동으로 가장 음질 좋은 걸 "추천"으로 더 똑똑하게 골라주도록.
|
|
|
|
## 배경
|
|
|
|
기존 음성 정렬은 단순히 비트레이트(abr) 내림차순 → 코덱 효율 차이를 무시.
|
|
Opus는 AAC보다 ~1.3배 효율적이라, 105kbps Opus ≈ 130kbps AAC 수준인데도 순위에서 밀렸음.
|
|
|
|
## 구현 내용 (`ai_video_brief`)
|
|
|
|
`app/services/downloader.py`:
|
|
- `_ACODEC_INFO` / `_audio_codec()` 추가 — acodec → (표시이름, 효율계수)
|
|
- Opus 1.3, AAC 1.0, Vorbis 0.9, MP3 0.85, Dolby 1.0
|
|
- `list_formats()` 음성 파트:
|
|
- 각 항목에 `codec`(표시이름), `score`(= abr × 효율계수, 실제 체감 음질) 추가
|
|
- 중복 제거 키를 (코덱, abr)로 변경 → 같은 코덱+비트레이트만 병합, 코덱 다르면 둘 다 유지
|
|
- 정렬을 `-score, -abr` 순으로 (실제 음질 높은 순, 동점 시 비트레이트 높은 순)
|
|
|
|
`app/static/index.html`:
|
|
- 음성 항목 메타에 코덱 표시 추가: "Opus · webm · 약 45MB"
|
|
|
|
## 테스트 결과 (DJI 영상)
|
|
|
|
```
|
|
105kbps Opus(webm) 점수=136 ← 추천(맨위) ※ 예전엔 129kbps AAC가 맨위였음
|
|
129kbps AAC(m4a) 점수=129
|
|
50kbps Opus(webm) 점수=65
|
|
49kbps AAC(m4a) 점수=49
|
|
```
|
|
|
|
Opus 105kbps가 AAC 129kbps보다 위로 올라와, 실제 음질 기준으로 정확히 추천됨.
|
|
|
|
## 참고
|
|
|
|
- 최종 저장은 여전히 mp3 192kbps 재인코딩 (소스 음질이 좋을수록 mp3 결과도 좋음)
|
|
- 효율계수는 일반적 통념 기반의 근사값 (정밀 측정값 아님)
|