CVF (Crowny Video Format) v1.0
개요
크라우니 생태계의 완전 자립 벡터형 4상균형3진 비디오 포맷. CIF(이미지) + CAF(오디오)를 시공간으로 통합한 세 번째 미디어 포맷.
핵심 철학: 픽셀 그리드가 아닌 씨앗(Seed) 기반 — 변화가 있는 곳만 데이터 존재
무엇을 했는지
1. CVF 포맷 스펙 (3layer + 공식 스펙)
/Users/ef/CrownyOS/docs/tip/012_CVF_v1.3layer— T/O/A 3레이어 스펙 문서/Users/ef/crowny-video/CVF_SPEC.md— 공식 스펙 (500줄+)
위치XY(6t) + 시간T(3t) + 색상RGB(9t) + 모션DX/DY(6t) + 메타(3t)
프레임 유형 3진 분류:
- T(+1) = 키프레임: 전체 공간 데이터
- O(0) = 델타: 변경 영역만
- A(-1) = 모션: 모션벡터만
2. CVF.한선 표준 라이브러리 (600줄+)
/Users/ef/CrownyOS/crownyc/libs/CVF.한선
API 40+개:
- 3진 변환: CVF_정수를트릿, CVF_트릿을정수, CVF_트릿을문자, CVF_문자를트릿
- 색상: CVF_RGB를27색, CVF_RGB를19683색, CVF_27색을RGB, CVF_19683색을RGB, CVF_RGB를9트릿, CVF_9트릿을RGB
- 씨앗: CVF_씨앗생성, CVF_키씨앗, CVF_델타씨앗, CVF_모션씨앗
- 코덱: CVF_씨앗인코딩, CVF_씨앗디코딩
- 프레임: CVF_프레임생성, CVF_프레임인코딩, CVF_프레임디코딩
- 델타: CVF_델타계산, CVF_델타적용
- 모션: CVF_모션추정 (블록 매칭), CVF_모션적용
- GOP: CVF_GOP생성
- 효과: CVF_블렌드, CVF_페이드인, CVF_페이드아웃, CVF_전환
- 파일: CVF_메타생성, CVF_헤더생성, CVF_파일저장, CVF_파일파싱, CVF_파일읽기
- 유틸: CVF_정보출력, CVF_압축률
3. 앱 도구 4종
| 파일 | 기능 | 줄수 |
|---|---|---|
/Users/ef/CrownyOS/apps/CVF뷰어.한선 | CLI 플레이어/분석기 | ~143 |
/Users/ef/CrownyOS/apps/CVF편집기.한선 | 편집 도구 (자르기/합치기/효과/재인코딩) | ~370 |
/Users/ef/CrownyOS/apps/CVF데모.한선 | 바운싱 사각형 데모 영상 생성 | ~130 |
/Users/ef/crowny-video/CVF변환기.한선 | CIF↔CVF/PPM 상호 변환 | ~230 |
4. cvf.js 웹 코덱
/Users/ef/Downloads/CrownyTVM/public/js/cvf.js
window.CVF API: encode, decode, createFrame, encodeFrame, decodeFrame, createSeed, encodeSeed, decodeSeed, computeDelta, applyDelta, estimateMotion, applyMotion, createGOP, decodeGOP, blendFrames, fadeIn, fadeOut, crossfade, renderFrameToCanvas, createPlayer, captureCanvas, canvasToCVF
5. 네이티브 플레이어 (macOS + Windows)
| 파일 | 플랫폼 | 기술 | 줄수 |
|---|---|---|---|
/Users/ef/crowny-app/downloads/src/crowny_cvf_mac.m | macOS | Cocoa + CoreGraphics | ~380 |
/Users/ef/crowny-app/downloads/src/crowny_cvf_win.c | Windows | Win32 + GDI | ~375 |
/Users/ef/crowny-app/downloads/src/build_cvf.sh | 빌드 | clang/mingw | ~15 |
6. 웹 플레이어 + 편집기
| 파일 | 기능 |
|---|---|
/Users/ef/crowny-app/public/cvf-player.html | Canvas 기반 웹 플레이어 (재생/탐색/전체화면) |
/Users/ef/crowny-app/public/cvf-editor.html | 웹 편집기 (타임라인/자르기/효과/내보내기) |
7. 앱 생태계 통합
app.crowny.orgNATIVE_APPS에 비디오/영상편집 앱 등록- READERS에 CVF Player 다운로드 추가
- File Format Specifications에 CVF 스펙 표시
8. ISA729 opcode (740-749)
10개 비디오 전용 opcode (740-749 대역): VID_FRAME(740), VID_ENCODE(741), VID_DECODE(742), VID_DELTA(743), VID_MOTION(744), VID_APPLY(745), VID_GOP(746), VID_SEEK(747), VID_BLEND(748), VID_SAVE(749)
Phase 2: YouTube→CVF 다운로더 + 생태계 완성 (2026-05-19)
9. crowny-video-dl 다운로더
/Users/ef/crowny-video/bin/crowny-video-dl (519줄, bash)
6단계 파이프라인: yt-dlp → ffmpeg(프레임) → ffmpeg(오디오) → 자막 → CVF 인코딩 → 썸네일
- 1000+ 사이트 지원 (yt-dlp 전체)
- 배치 처리 (--batch)
- 썸네일 CIF 생성 (--thumbnail)
- MP4 역변환 (--export-mp4)
10. Node.js 인코딩 라이브러리 7종
| 파일 | 기능 | 줄수 |
|---|---|---|
lib/cvf-encoder.js | PPM→CVF 인코딩 (공간 트릿-트리 + 시간 델타) | 264 |
lib/cvf-export.js | CVF→PPM 디코딩 | 212 |
lib/cvf-thumbnail.js | PPM→CIF 썸네일 | 157 |
lib/csf-parser.js | CSF 자막 포맷 (SRT↔CSF↔VTT) | 663 |
lib/ctp-stream.js | CTP 스트리밍 프로토콜 (GOP 단위) | 663 |
lib/cvf-metadata.js | 메타데이터/태그/검증 | 572 |
lib/cvf-queue.js | 배치 큐 (동시3개, 재시도3회) | 301 |
lib/cvf-config.js | 설정 관리 | 106 |
11. 한선씨 동반 파일 3종 (컴파일 성공)
| 파일 | 대응 JS | 줄수 |
|---|---|---|
lib/CVF인코더.한선 | cvf-encoder.js | 238 |
lib/CVF내보내기.한선 | cvf-export.js | 163 |
lib/CVF썸네일.한선 | cvf-thumbnail.js | 140 |
12. video.crowny.org 웹 서비스
/Users/ef/crowny-video/server.js (1585줄, 순수 Node.js, 포트 9877)
- REST API: 업로드/다운로드/변환/목록/삭제
- YouTube→CVF 변환 잡 큐
- Canvas 기반 CVF 디코더 내장 웹 플레이어
- 다크 테마 한국어 UI
13. 한선씨 CLI 래퍼
/Users/ef/crowny-video/CVF다운로더.한선 (436줄)
- 도움말/다운로드/정보조회/배치처리 4개 명령
- CVF_ARGS 환경변수 인자 전달
14. 테스트 + 배포
| 파일 | 기능 | 줄수 |
|---|---|---|
test/test.js | 57개 테스트 (전부 통과) | 633 |
install.sh | macOS/Linux 설치기 | 714 |
README.md | 한/영 이중 문서 | 596 |
package.json | @crowny/video 매니페스트 | 20 |
public/index.html | 웹 랜딩 페이지 | 558 |
관련 파일 경로
Phase 1 (포맷 + 도구):
/Users/ef/CrownyOS/docs/tip/012_CVF_v1.3layer # 3layer 스펙
/Users/ef/crowny-video/CVF_SPEC.md # 공식 스펙
/Users/ef/CrownyOS/crownyc/libs/CVF.한선 # 표준 라이브러리 (825줄)
/Users/ef/CrownyOS/apps/CVF뷰어.한선 # CLI 뷰어
/Users/ef/CrownyOS/apps/CVF편집기.한선 # CLI 편집기
/Users/ef/CrownyOS/apps/CVF데모.한선 # 데모 생성기
/Users/ef/crowny-video/CVF변환기.한선 # 포맷 변환기
/Users/ef/Downloads/CrownyTVM/public/js/cvf.js # 웹 코덱 JS
/Users/ef/crowny-app/public/cvf-player.html # 웹 플레이어
/Users/ef/crowny-app/public/cvf-editor.html # 웹 편집기
/Users/ef/crowny-app/downloads/src/crowny_cvf_mac.m # macOS 플레이어
/Users/ef/crowny-app/downloads/src/crowny_cvf_win.c # Windows 플레이어
Phase 2 (다운로더 + 생태계):
/Users/ef/crowny-video/bin/crowny-video-dl # CLI 다운로더
/Users/ef/crowny-video/server.js # 웹 서비스 (포트 9877)
/Users/ef/crowny-video/lib/cvf-encoder.js # PPM→CVF 인코더
/Users/ef/crowny-video/lib/cvf-export.js # CVF→PPM 디코더
/Users/ef/crowny-video/lib/cvf-thumbnail.js # 썸네일 생성
/Users/ef/crowny-video/lib/csf-parser.js # CSF 자막 포맷
/Users/ef/crowny-video/lib/ctp-stream.js # CTP 스트리밍
/Users/ef/crowny-video/lib/cvf-metadata.js # 메타데이터/태그
/Users/ef/crowny-video/lib/cvf-queue.js # 배치 큐
/Users/ef/crowny-video/lib/cvf-config.js # 설정 관리
/Users/ef/crowny-video/lib/CVF인코더.한선 # 인코더 한선씨
/Users/ef/crowny-video/lib/CVF내보내기.한선 # 내보내기 한선씨
/Users/ef/crowny-video/lib/CVF썸네일.한선 # 썸네일 한선씨
/Users/ef/crowny-video/CVF다운로더.한선 # CLI 래퍼 한선씨
/Users/ef/crowny-video/public/index.html # 웹 UI
/Users/ef/crowny-video/test/test.js # 테스트 (57개 통과)
/Users/ef/crowny-video/install.sh # 설치 스크립트
/Users/ef/crowny-video/README.md # 문서
크라우니 미디어 포맷 비교
| 포맷 | 대상 | 매직 | 씨앗 구조 | 압축 |
|---|---|---|---|---|
| CIF v2.1 | 정지 이미지 | CIF! | XY+깊이+RGB+너비높이+메타 | 공간 트릿-트리 |
| CAF v7 | 오디오 | CAF7 | 시간+음향+변화+메타 | MDCT + -80dB 소멸 |
| CVF v1.0 | 비디오 | CVF! | XY+시간+RGB+모션+메타 | 시공간 트릿-트리 + 델타 + 모션 |
| CSF v1.0 | 자막 | CSF! | 시간+위치+스타일+텍스트 | TOAU 시간 인코딩 |
잔여 이슈
- crownyc VM에 VID_* opcode C 구현 (현재 선언만)
- 하드웨어 디코딩 가속 (WASM SIMD)
- CAF7 오디오 싱크 완성 (현재 WAV 임베딩)
- CTP 프로토콜 보안 (인증/암호화)
통계
| 단계 | 파일 수 | 총 줄수 |
|---|---|---|
| Phase 1 | 15 | 6,963 |
| Phase 2 | 21 | 10,261 |
| 합계 | 36 | 17,224 |