← 목록
기타 2026-07-12 3KB 읽기 4분

crowny-class MP4 하이브리드 복구 — E2E 라이브 실증

개요

CVF 1080p가 실측상 실용불가(원본보다 팽창·134배·인코딩 9~10시간) 판정에 따라, 사장님 규칙 "안되면 MP4"로 강의 재생을 MP4(원본 h264 1920x1080)로 복구. CVF 파이프라인(encode-upload.sh· handleCvf·handleCvfAudio)은 삭제하지 않고 아카이브/관리자용으로 병행 보존하는 하이브리드 구조.

이번 세션은 구현이 아니라 라이브 E2E 검증(모듈 5개는 이전 세션에서 이미 하이브리드로 배선 완료 상태였음 — modules/video/routes.js의 handleStream이 데이터/영상/파일/<id>.mp4를 Range(206)로 직접 서빙, handleCvf/handleCvfAudio는 그대로 유지되어 아카이브 경로로 살아있음을 확인).

검증 결과 (전부 PASS)

게이트 상태코드

케이스기대실측
무료(o1-1=mrgilkb817j8) 무로그인 Range206206
유료(o3-1=mrgilm7qqxjf) 무로그인401401
유료 ?owner=가짜401401
유료 admin Bearer Range206206

mp4 내용 실측

  • 응답 청크 hexdump 앞부분: ... ftyp isom....isomiso2avc1mp41 — 진짜 mp4 컨테이너 확인.
  • ffprobe: FV(mrgilkb817j8) = h264,1920,1080, PV(mrgilm7qqxjf) = h264,1920,1080 — 1080p 네이티브 확인.

CVF 아카이브 생존

  • /api/video/cvf/mrgilkb817j8 (무료) → 206
  • /api/video/cvfaudio/mrgilkb817j8 (무료) → 206
  • 실파일 데이터/영상/cvf/class_o1-1.cvf(138.6MB), class_o1-1.cvf.mp3(1.9MB) 존재 확인 — 파이프라인 미삭제, 아카이브 경로 살아있음.

페이월 유지

  • https://video.crowny.org/api/download/class_o3-1.cvf → 403 (class_ 접두 방어 유지)
  • 정적 우회 /데이터/영상/파일/<PV>.mp4 직접 URL(원문+URL인코딩 둘 다) → 200이지만 SPA index.html 폴백(21857바이트, <!DOCTYPE html>로 시작) — 실 mp4 바이트 미유출 확인. 데이터/ 디렉토리는 PUBLIC 서빙 루트 밖.

회귀

  • /api/lesson/curriculum → lessons 95개 확인
  • /api/enroll/status → 200, {capacity:150, enrolled:0, remaining:150, open:true}
  • /api/community/portfolios → 200
  • /api/lesson/wire-status (admin Bearer 필요, 무인증은 401이 정상) → Bearer로 200

관련 파일

  • /Users/ef/crowny-class/modules/video/routes.js — handleStream(mp4 Range), handleCvf/handleCvfAudio(아카이브), authForStream(공용 게이트)
  • /Users/ef/crowny-class/한선씨/영상엔진.한선 — 게이트 로직 개념 미러(컴파일 확인 완료, 실배선 아님— routes.js 주석에 명시)
  • /Users/ef/crowny-class/scripts/encode-upload.sh — CVF 인코딩 파이프라인(유지)
  • /Users/ef/crowny-class/데이터/영상/파일/*.mp4 — 23편 원본 h264 1080p
  • /Users/ef/crowny-class/데이터/영상/cvf/ — CVF 아카이브 산출물
  • /Users/ef/crowny-class/영상원본/업로드맵.psv — 슬러그(o1-1 등)↔실제 videoId(해시)↔free 매핑

잔여 이슈

  • puppeteer 미설치로 캔버스(<video> 태그 실재생) 자동화 실증은 생략, 지시된 대로 206 상태코드 확인으로 갈음.
  • CVF 인코딩 잡(startEncodeJob)은 그대로 살아있어 신규 업로드마다 계속 인코딩 시도됨 — 아카이브 목적상 의도된 동작.
크라우니코드: lookup HIT 0건 / MISS 1건(mp4하이브리드페이월E2E검증, 신규 검증패턴) / learn 추가 1건