video-qa-gates
측정으로 판단하세요. 비디오를 보고 "괜찮아 보인다"고 말하는 것은 4초짜리 프리즈가 그대로 배송되는 길입니다.
| 스크립트 | 측정 항목 | 실패 조건 |
|---|---|---|
scripts/qa_video.py | 오디오 스트림 존재 여부; 크기; 재생 시간 (+-허용치 또는 최대); 가장 긴 거의 정지 구간 (10fps 복사본 기준, 느린 배경 드리프트가 정지를 숨기지 않도록 함); 무음 (-50dB, >=0.3초); 통합 음량 (기본 -14 LUFS +-1.5); 트루 피크 (<= -1dBFS) | 제한 초과 시 |
scripts/opening_density.py | 처음 몇 초 동안 '평평한' 8x8 그리드 셀(밝기 표준편차 < 5)의 비율, 중앙값 및 최대값 | 오프닝이 대부분 빈 배경; 사용 가능한 프레임이 N개 미만 (= 측정 불가) |
scripts/subtitle_lint.py | 큐당 줄 수, 줄당 문자 수, 최소 표시 시간, 초당 문자 수, 겹침 | 위반 시; 파싱된 큐가 0개 = 측정 불가 |
python3 scripts/qa_video.py out.mp4 --expect-size 1080x1920 --max-duration 30
python3 scripts/opening_density.py out.mp4 --seconds 3
python3 scripts/subtitle_lint.py out.vtt --max-chars 20
bash tests/run.sh # ffmpeg으로 합성 클립을 만들고 모든 결함이 올바른 이유로 감지되는지 확인
설계 노트 (이렇게 만든 이유)
- 종료 코드 3은 "측정 불가"입니다. ffmpeg 누락, 읽을 수 없는 파일 또는 N개 미만의 사용 가능한 프레임은 절대 통과로 표시되어서는 안 됩니다.
- 프리즈 감지를 위해 10fps 다운스케일 복사본을 측정합니다. 회전하는 광선이나 배경의 글로우는 전체 정밀도에서 정지된 장면을 '살아 있는' 것처럼 보이게 만듭니다. 저렴한 복사본은 그 노이즈를 제거합니다. 제한은
--max-freeze(기본 4초)입니다. 클립 끝까지 이어지는 프리즈도 포함됩니다. - 플래시/블랙아웃 프레임은 밀도 측정에서 건너뜁니다. (평균 휘도 <8 또는 >247): 이는 장면에 대해 아무것도 말해주지 않습니다.
- 자신의 좋은 예와 나쁜 예로부터 임계값을 교정하고 기록하세요. 좋다고 생각하는 몇 개의 오프닝과 평평하다고 생각하는 몇 개의 오프닝을 측정하고 그 사이에 제한을 설정하세요. 기본값은 출발점일 뿐입니다. 여러분의 숫자는 다를 것입니다.
- 테스트 입력이 잘못될 수 있습니다. 게이트가 아닙니다.
testsrc2패턴은 큰 색상 블록이며 "비어 있음"으로 측정됩니다. 노이즈 비디오는 정직한 대조군이었습니다. 게이트와 테스트 입력이 일치하지 않을 때, 무엇이 잘못되었는지 찾아내세요. - 이는 "진짜 쇼츠처럼 느껴진다"의 대리 지표입니다. 통과한다고 해서 재미있거나 매력적이라는 보장은 없습니다. 사람의 불만 ("슬라이드 덱처럼 보여요", "자막이 화면 텍스트를 중복해요")은 새로운 측정 가능한 게이트가 되어야 합니다.
함께 사용하기 좋은 도구
cold-read-comprehension-review— "시청자가 이해할 수 있는가" (숫자로 측정할 수 없는 것).llm-adaptation-fidelity-check— 스크립트가 원본 텍스트에서 각색된 경우.llm-verdict-gate+ci-gate-forgery-test— 전체 프로세스 관리를 위해.
추가할 만한 게이트 (여기서는 구현되지 않음)
화면 감사 (모든 화면 텍스트 상자: 겹침, 플랫폼 UI 안전 영역, 자막 밴드 침범); 화면 문자열 허용 목록 (위조 방지); 프레임 너비 대비 텍스트 크기 하한; 컷 리듬 (평균/최대 컷 길이); STT를 통한 자막-음성 문자 오류율 (<= 0.08); 렌더링된 DOM에서 이모지 금지; 자막/화면 텍스트 중복 비율. 이들은 렌더러의 DOM/타임라인이 필요하므로 일반화될 수 없습니다.
런타임 종속성: pip install -r requirements.txt로 requirements.txt를 설치하세요. Pillow는 최소 12.3.0 이상이어야 합니다. 위에 언급된 선택적 모델 종속성은 별도로 설치해야 합니다.