Fullgrade
자동, 부드러운 동영상 색보정. 모든 작업이 ffmpeg + Python으로 로컬에서 실행됩니다. GPU, 클라우드 API가 필요 없으며, 거의 토큰을 소모하지 않습니다(분석은 스크립트에서 수행하며 프레임을 직접 보지 않음).
언어: 사용자의 언어로 응답하세요. 사용자가 중국어로 작성하면 --lang zh를 전달하여 보고서와 비교 이미지가 중국어로 표시되도록 하고, 그 외에는 --lang en을 사용하세요.
1. 환경 설정 (첫 실행 또는 오류 발생 시)
python3 <skill_dir>/scripts/fullgrade.py --check
누락된 항목이 있으면 사용자에게 필요한 명령 하나를 알려주세요.
| 누락된 항목 | macOS | Windows | Linux |
|---|---|---|---|
| ffmpeg | brew install ffmpeg | winget install ffmpeg | sudo apt install ffmpeg |
| numpy / Pillow | python3 -m pip install numpy pillow (pip가 거부하면 --break-system-packages 추가) | ||
| 얼굴 인식 크롭 (선택 사항) | python3 -m pip install opencv-python-headless |
비디오 파일이 있는 머신에서 스크립트를 실행하세요. 파일이 샌드박스에 업로드된 경우 샌드박스에서 실행하고 출력을 다시 보내주세요.
Windows에서는 python3을 찾을 수 없으면 python을 대신 사용하세요.
선택 사항: python3 <skill_dir>/scripts/fullgrade.py --selftest는 합성 영상을 생성하고 모든 기능을 확인합니다 (약 2~3분 소요). 사용자가 "내 컴퓨터에서 작동하나요?"라고 물으면 사용하세요.
2. 요청을 하나의 명령으로 변환
python3 <skill_dir>/scripts/fullgrade.py <files-or-folders> [options] --lang <en|zh>
| 사용자가 말한 내용… | 옵션 |
|---|---|
| 스타일에 대한 언급 없음 / "그냥 수정해줘" / 自然 | --preset natural (기본값) |
| 부동산, 인테리어, 밝고 통풍이 잘되는 / 房产, 明亮通透 | --preset real-estate |
| 따뜻함, 아늑함, 저녁 / 温暖, 温馨 | --preset warm |
| 선명함, 음식, 제품 / 鲜艳, 美食 | --preset vivid |
| 깔끔함, 쿨, 모던, 테크 / 清冷, 现代 | --preset cool-modern |
| 시네마틱, 필름 룩, 브이로그 / 电影感 | --preset cinematic |
| 세로, TikTok, Reels, Shorts, 抖音, 小红书 | --ratio 9:16 |
| YouTube, 가로 / 横屏 | --ratio 16:9 |
| 정사각형 / Instagram 피드 | --ratio 1:1 또는 --ratio 4:5 |
| 프레임을 채우고, 검은 막대 없이 / 裁切 | --fit crop |
| 전체 그림 유지 / 不要裁, 补边 | --fit blur |
| 검은색 / 흰색 막대 | --fit color --pad-color black (또는 white) |
| 드론 / DJI D-Log | --log dlog |
| Sony S-Log3 · Panasonic V-Log · iPhone Apple Log | --log slog3 · --log vlog · --log applelog |
| 모든 클립을 이 클립/사진과 일치시키기 | --match <file> (--match-method mkl 기본값; reinhard, hist) |
| 모든 클립을 서로 밀접하게 일치시키기 | --match hero |
| 더 가볍게 / 과하지 않게 / 轻一点 | --strength 0.6 |
| 더 빠른 내보내기 | --fast (Apple / NVIDIA / Intel 하드웨어 인코더, 자동 폴백) |
| 최고 품질 | --quality best |
| 하위 폴더 포함 | --recursive |
| 확인만, 내보내지 않음 | --analyze-only |
| 전체 파일에 하나의 그레이드만 적용 | --no-split |
| Premiere / DaVinci / Final Cut / CapCut용 LUT 파일 | <skill_dir>/luts/ 폴더를 가리키거나 --export-luts <folder> 사용 |
대부분의 사용자에게 이미 적합한 기본값: --fit auto (사진의 60% 이상을 유지하면 크롭, 그렇지 않으면 흐린 배경 — 즉 16:9 ↔ 9:16은 사용자가 크롭을 요청하지 않는 한 흐린 배경 사용), --dynamic auto, --denoise auto.
비율에 대해 사용자가 언급하지 않으면 묻지 말고 원본을 유지하세요. 요청이 정말 불명확한 경우에만 물어보세요 (예: "LOG"라고 말했지만 어떤 카메라인지 말하지 않은 경우).
3. 작동 방식 (요청 시에만 간략히 설명)
- iPhone HDR → SDR 자동 변환;
--log가 지정되면 LOG 디코딩 (스크립트는 클립이 LOG처럼 보이면 경고). - 완성된 편집본을 샷으로 분할 (장면 감지); 각 샷을 개별적으로 그레이딩.
- 샷별: 화이트 밸런스 → 블랙/화이트 레벨 (하이라이트 보호) → 노출을 편안한 범위로 조정 → 대비 → 채도 → 프리셋 룩 → 선택적 일치. 각 샷에 대해 안전 제한이 있는 하나의 3D LUT로 구워지므로 과도하게 적용되지 않음.
- 한 샷 내에서 밝기가 변하는 경우 (어두운 복도에서 밝은 방으로 걸어 들어가는 경우) 동적 노출로 부드럽게 처리. 많이 밝아진 샷에는 약한 노이즈 제거 적용.
- 리프레이밍은 늘어짐 없이 수행; 스마트 크롭은 얼굴 (OpenCV가 설치된 경우) 또는 가장 상세한 영역을 따라감.
- 이미 올바르게 보이는 클립은 재인코딩 없이 복사.
속도: 1080p 기준 영상 길이의 약 1~3배 시간이 소요됩니다 (4K는 더 오래 걸림). 긴 파일이나 많은 파일의 경우 사용자에게 실행 중임을 알리고 기다리세요. 취소하지 마세요. 서두르는 경우 --fast를 사용하세요.
종료 코드: 0 = 모두 완료 · 2 = 일부 파일 실패 (다른 파일은 정상 — 출력 끝에 Done: X OK, Y failed가 표시되고 보고서에 이유가 나옴) · 1 = 처리할 수 있는 파일 없음. 항상 사용자에게 어떤 파일이 실패했는지와 이유를 알려주세요 (일반적인 원인: 비디오 아님, 손상된 파일, 오디오 전용 파일).
4. 출력물
- 비디오:
<input folder>/_graded/<name>_<preset>[_9x16].mp4— 절대 덮어쓰지 않음 (_v2추가), 원본은 그대로. _graded/compare/*_compare.jpg— 전/후 스틸 이미지. 항상 사용자에게 최소 하나를 보여주세요._graded/fullgrade_report.html— 각 샷의 전/후 슬라이더, 수치 및 스코프. 제공하세요._graded/fullgrade_report.md— 텍스트로 된 동일한 수치; 요약을 작성할 때 읽으세요.
5. 응답
사용자의 언어로 간단한 요약: 얼마나 많은 비디오, 어떤 프리셋/비율, 파일 위치, 무엇이 변경되었는지에 대한 한두 문장 (보고서에서, 예: "두 번째 샷이 매우 노랗게 보였으나 이제 중립으로 조정되었습니다. 창문 하이라이트는 보호되었습니다."), 비교 이미지, 그리고 하나의 유용한 다음 단계 (다른 프리셋, 9:16 버전, 더 가볍게 원하면 --strength).
정직한 한계
- 순수 흰색으로 날아간 창문/하늘은 복구할 수 없습니다. 사진의 나머지 부분은 여전히 개선됩니다.
- 매우 어두운 영상은 밝게 할 때 노이즈가 나타납니다 (약한 노이즈 제거가 도움이 되지만, 마법은 아닙니다).
- 한 샷 내에서 혼합된 조명 (주황색 램프 + 파란색 햇빛)은 절충점으로 균형을 맞춥니다.
- 매우 다른 두 샷 사이의 디졸브는 컷에서 작은 단계가 나타날 수 있습니다.
- DJI D-Log M 및 기타 나열되지 않은 LOG 곡선은 V1에서 지원되지 않습니다 —
--log없이 그레이딩하고--strength를 사용하세요.