Communitygithub.com

Chrome Video Render (CVR)

Remotion 및 HyperFrames를 위한 Android Chrome 비디오 렌더링 어댑터입니다. cvr은 빠르고 가벼운 렌더 시작을 제공하며, rvc는 상세한 환경, 하드웨어, 세그먼트 및 동기화 검사를 수행합니다. 첫 실행 시 단기/장기 렌더 계획을 측정합니다. 헤드리스 Chrome, 휴대용 브라우저 검색, 포그라운드 병렬 렌더링, 적응형 세분화, PCM 오디오 어셈블리 및 오디오/비디오 동기화 검증을 지원합니다.

Chrome Video Render (CVR)란 무엇인가요?

Chrome Video Render (CVR)는 Android/proot 환경에서 Remotion 및 HyperFrames 프로젝트를 위한 브라우저 기반 비디오 렌더링 어댑터입니다. 두 가지 시작 모드를 제공합니다: 'cvr' 모드는 일상적인 렌더링에 최적화되어 첫 실행 시 렌더 계획을 측정하고 이후에는 그 계획을 재사용하여 즉시 렌더링을 시작합니다. 'rvc' 모드는 진단 및 릴리스 검사를 위한 상세 모드로, 실행 시마다 환경 보고서, 하드웨어 예산, 세그먼트별 검증 및 동기화 점검을 수행합니다. 이 스킬은 측정 기반의 작업자 수 결정, 적응형 세분화(비디오 길이에 따라 세그먼트 크기 조정), 헤드리스 Chrome 또는 휴대용 브라우저 검색 지원, PCM 오디오 세그먼트 생성 및 최종 AAC 인코딩, 오디오/비디오 동기화 검증 기능을 제공합니다. Remotion의 공식 API(selectComposition, renderMedia, combineChunks)를 사용하며, HyperFrames의 네이티브 타임라인 및 믹서 시스템과도 호환됩니다. 첫 실행 시 후보 작업자 수에 대한 프로브 렌더링이 필요하지만, 이는 기기당 한 번만 발생하는 비용입니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Jacky-xw/chrome-video-render/tree/main

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Chrome Video Render (CVR)은(는) 무엇을 하나요?

Android/proot 브라우저 및 Remotion, HyperFrames용 렌더링 어댑터입니다. 컴포지션 콘텐츠 및 오디오 타임라인은 비디오 프로젝트가 소유합니다.

시작 모드

모드용도시작 동작
cvr기본, 일상 렌더링첫 실행 시 단기/장기 렌더 계획을 측정합니다(소요 시간은 후보 수에 비례하며 사전에 안내됨). 이후 실행은 계획 파일을 읽고 즉시 시작합니다. 추가 npm/브라우저 버전 프로브 없음. 간결한 한 줄 결과 출력
rvc진단, 릴리스 검사실행 시마다 두 계획을 다시 측정하고 공유 계획 파일을 덮어씁니다(이력은 보관됨). 전체 환경 보고서, 하드웨어 예산 세부 정보, 세그먼트별 검증 및 선택적 동기화 검사. 단계별 타이밍 요약

두 모드 모두 포그라운드에서 실행됩니다. 독립적 작업은 직렬화되며, 하나의 작업 내 병렬성은 측정된 계획에 의해 제한됩니다.

# 간단한 렌더링
python3 /skills/chrome-video-render/scripts/remotion-segmented.py --project . --composition Hello --output out.mp4 --mode quick

# 상세 렌더링
python3 /skills/chrome-video-render/scripts/remotion-segmented.py --project . --composition Hello --output out.mp4 --mode full --sync-check

렌더 계획

작업자 수는 추론되지 않고 측정됩니다. 첫 사용 시, 각 후보 작업자 수에 대해 두 개의 고정 프로브 컴포지션을 여러 라운드에 걸쳐 렌더링하고, 중앙값으로 각 후보의 점수를 결정합니다. 승자는 <project>/node_modules/.cache/cvr-render-plan.json 파일에 단기(<=300프레임) 및 장기 비디오용으로 각각 기록됩니다. 이후 cvr 실행은 일치하는 계획을 읽고 즉시 렌더링을 시작합니다. rvc는 실행 시마다 다시 측정하고, 계획 파일을 덮어쓴 후 해당 작업을 새 숫자로 렌더링합니다. 각 쓰기는 history 리스트에 추가됩니다.

기본 작업자 수는 제공되지 않습니다. 어떤 작업자 수가 승리할지는 기기에 따라 다르기 때문입니다. 첫 실행은 시작 전에 수행할 작업을 출력합니다(길이 클래스당 라운드당 후보당 하나의 프로브 렌더링이 필요하기 때문). --workers N을 사용하면 프로빙을 완전히 건너뜁니다.

브라우저 환경

source /skills/chrome-video-render/scripts/video-browser-env.sh

cvr는 이 설치의 런처를 사용합니다. rvc는 추가로 render-env.sh --json을 실행하여 브라우저, 엔진 및 하드웨어 보고서를 생성합니다. /skills 외부의 체크아웃을 사용하는 경우 해당 체크아웃의 scripts/ 디렉터리를 사용하세요.

Remotion

python3 /skills/chrome-video-render/scripts/remotion-segmented.py \
  --project /path/to/project --entry src/index.ts \
  --composition Hello --output /path/to/output.mp4 \
  --input-props '{"title":"Example"}'

대상 프로젝트의 Remotion 패키지와 공식 selectComposition(), renderMedia() 및 combineChunks() API를 사용합니다. 분수 FPS와 JSON 속성을 지원합니다. PCM 세그먼트와 최종 AAC 전달 인코딩을 생성합니다.

세그먼트 크기는 --segment-frames가 생략된 경우 컴포지션 길이에 맞게 조정됩니다: 최대 300프레임까지 90프레임, 최대 900프레임까지 150프레임, 최대 3000프레임까지 300프레임, 그 이상은 450프레임입니다. 따라서 긴 비디오는 수십 개의 세그먼트로 분할되어 각각 브라우저를 다시 시작하는 것을 방지합니다. 고정 크기를 지정하려면 --segment-frames를 전달하세요.

HyperFrames

프로젝트 검토 및 승인 후:

python3 /skills/chrome-video-render/scripts/hyperframes-render.py \
  --project /path/to/project --output /path/to/output.mp4 \
  --quality looks --workers 2   # 예시 값; 프로젝트별로 선택

HyperFrames의 네이티브 타임라인, 믹서 및 작업자 시스템을 유지합니다. 백엔드 어댑터는 생성된 빌드 파일 이름이 아닌 함수 시그니처로 선택됩니다.

--mode quick는 설치된 Headless Shell 런처를 사용합니다. --mode full은 render-env.sh를 실행하고 하드웨어 예산에서 작업자 수를 결정합니다. 기본 hyperframes render 호출은 두 모드에서 동일하며, 명시적인 --workers는 어느 모드에서든 존중됩니다. HyperFrames는 측정된 렌더 계획을 사용하지 않습니다.

검증

  • cvr: 기본 디코딩 프레임, FPS, 차원 및 오디오 속성 검사. 캘리브레이션 검사가 요청되지 않는 한 동기화 상태는 not-measured로 유지됩니다.
  • rvc: 단일 패스 전체 디코딩, 세그먼트별 세부 정보, 하드웨어 예산, 마커 기반 동기화 검사 및 단계별 타이밍 요약.
  • check-av-sync.py는 알려진 PCM 펄스와 시각적 플래시가 포함된 캘리브레이션 컴포지션이 필요합니다.
  • selftest-av-sync.py는 정렬된 신호와 의도적으로 지연된 신호를 모두 검증합니다.
  • webgl-policy-check.py는 선택적 백엔드 감사로, 일상적인 렌더링 단계가 아닙니다.

자세한 내용은 구현 및 호환성, 브라우저 백엔드 및 백엔드 노트를 참조하세요.

검증 범위

Android/proot aarch64에서 Remotion 4.0.538 및 HyperFrames 0.8.198로 테스트 완료: 분수 FPS, 오디오 및 무음 컴포지션, 매개변수 전달 및 동기화 검사. 버전은 시도된 내용을 보여주기 위해 나열된 것이지, 지원되는 버전을 주장하는 것이 아닙니다.

첫 실행 시 길이 클래스당 라운드당 후보당 하나의 프로브 렌더링이 필요하므로, 소요 시간은 후보 수와 비디오 길이에 비례합니다. 이는 기기당 한 번만 발생하는 비용이며, 이후 실행은 기록된 계획을 읽습니다. rvc는 실행 시마다 다시 측정합니다. 적응형 세분화는 동일한 디코딩 프레임 수에서 긴 비디오의 세그먼트 수를 줄입니다. 실행 시 생성된 모든 수치는 해당 머신을 설명하는 것이며, 다른 기기에 대한 보장이 아닙니다.

관련 스킬