Communitygithub.com

파이널 패스 — 공개 전 모든 렌더 품질 검수

렌더된 영상을 내보내기 전에 점검합니다: 포맷, 검은 프레임이나 멈춘 프레임, 라우드니스, 트루 피크, 그리고 눈으로 확인할 프레임 시트. 애니매틱이나 최종본을 제출하기 전에 사용하세요.

파이널 패스 — 공개 전 모든 렌더 품질 검수란 무엇인가요?

Launch Video 레시피 3단계(출고 점검), GTKottman/mortiflix-oss(2026-10-05 공개). qc.mjs가 크기, fps, 길이를 브리프와 대조하고(5% 이내), 라우드니스(웹 기본 -14 LUFS)와 트루 피크(-1 dBTP)를 확인하며, 의도된 홀드(--end-hold, --allow-black)가 아닌 검은 구간이나 멈춘 구간은 실패 처리합니다. JSON 리포트와 약 1초당 1프레임의 컨택트 시트를 출력합니다. 그다음은 사람의 몫: 시트를 훑고, 가장 바쁜 세 지점을 원본 크기로 읽고, 한 번 끝까지 듣습니다. 라우드니스를 고치는 2패스 ffmpeg loudnorm 방법도 들어 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/GTKottman/mortiflix-oss/tree/HEAD/pipelines/_shared/skills/final-pass

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

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

문서


name: final-pass description: Check a rendered video before anyone else sees it: format, black or frozen frames, loudness, true peak, and a frame sheet to look at. Use before submitting any animatic or final, and before mfx step done on a build.

Final pass

Two halves, both required: the script checks what a machine can, and you look at what it can't.

1. Run the checks

node .claude/skills/final-pass/qc.mjs out/final.mp4 --size 1920x1080 --fps 30 --duration 60
  • --size, --fps, --duration come from the brief (shape, length). Duration passes within 5%.
  • Loudness: --lufs -14 (web default) and --true-peak -1. Change them only if the brief names a platform with other targets.
  • --end-hold when the video is meant to end on a still hold (a logo that settles): that stretch then passes and its length is reported. A frozen stretch anywhere else still fails.
  • --allow-black only when black mid-video is designed (a dip to black between chapters). Say so in the check note.
  • It writes checks/qc-<name>.json and checks/<name>-sheet.png, and exits 1 on any FAIL.

Fix every FAIL and run it again. A frozen stretch can be a designed hold: then it's a pass, and the check's note says which hold it is.

2. Look

  1. The frame sheet. View checks/<name>-sheet.png (about a frame a second). Every frame must make visual sense: nothing half-loaded, no placeholder text, no element stuck at a wrong position, nothing cut off at an edge.
  2. Three full-size frames at the busiest moments: ffmpeg -ss 12.5 -i out/final.mp4 -frames:v 1 checks/f-12.5.png. Read every word on them.
  3. Listen through once on the waveform's loudest and quietest parts: no clicks, pops, distortion, or words swallowed by the music.

3. Report

Map the results onto the step's error checks (mfx checks <step>): frame-sheet and format from the script plus your look, loudness from the audio lines. Keep the JSON and the sheet in checks/. Submit the frame sheet as a second item with every final: the owner can scan it in a second.

Fixing loudness

Two-pass loudnorm on the mix, never on a file you've already normalized:

ffmpeg -i mix.wav -af loudnorm=I=-14:TP=-1.5:LRA=11:print_format=json -f null -       # read the measured values
ffmpeg -i mix.wav -af loudnorm=I=-14:TP=-1.5:LRA=11:measured_I=..:measured_TP=..:measured_LRA=..:measured_thresh=..:offset=..:linear=true mix-14.wav

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬