Video Pacing QA — Frozen Frames, Cut Rate & Dead Air
Pricing
Pay per usage
Video Pacing QA — Frozen Frames, Cut Rate & Dead Air
Automated edit QA for AI-generated and batch-produced videos: frozen frames, slow pans that never cut, cuts per minute, dead air and loudness jumps, each with timestamps and a PASS/FAIL verdict.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Ricardo Faya
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Share
Automated edit QA for videos you produce in batches — AI-generated lessons, faceless YouTube channels, Shorts factories, course platforms. Paste file URLs; get a PASS/FAIL verdict with timestamps for the defects that never raise an error.
Why this exists
Written by a broadcast editor working since 1998 (two FIFA World Cups). An automated course pipeline produced 41 lessons that passed every log and were unwatchable:
- 3 image changes per minute — slides with narration;
- a single shot held for 231 seconds;
- a lesson whose last 54.6 seconds were one frozen frame, while the generator reported "209 shots, average 2.34 s".
The generator counted the shots it planned. Nothing measured what ended up in the file. This Actor measures the file.
What it checks
| Check | What it catches | Default |
|---|---|---|
| Frozen frames | pixels that stop moving (stuck render, missing clip, black tail) | fails at 4 s |
| Longest shot without a visible change | slow pans/zooms over one still image — they move pixels, so freeze detection never fires | fails above 8 s |
| Visible changes per minute | "slideshow" pacing | fails below 12/min |
| Dead air | seconds with neither voice nor music (a 40 s music bed on a 18 min film) | fails above 1% |
| Loudness jumps | level steps between neighbouring 5 s blocks | reported, never fails |
Every threshold is editable.
Output
One dataset row per video:
{"url": "https://example.com/lesson-02.mp4","verdict": "FAIL","findings": ["1 frozen stretch(es) of 4s or more — worst 54.6s at 07:14.6.","3 shot(s) longer than 8s without a visible change — longest 54.6s at 07:14.6 (slow pans over a still image land here)."],"durationSeconds": 489.2,"resolution": "1920x1080","changesPerMinute": 23.5,"medianShotSeconds": 2.17,"longestShotSeconds": 54.6,"longestShotAt": "07:14.6","staticShots": [{ "at": "07:14.6", "seconds": 54.6 }],"freezes": [{ "at": "07:14.6", "startSeconds": 434.6, "seconds": 54.6 }],"deadAirPercent": 0.2,"loudnessJumps": [{ "at": "03:05.0", "deltaDb": -12.4 }]}
The key-value store OUTPUT holds the run summary (passed, failed, errors).
Input notes
- Use direct file links (
.mp4,.mov,.webm,.mkv) — S3, Cloudflare R2, Google Cloud Storage signed URLs and CDN links work. Web pages (YouTube watch URLs, Drive previews) do not. - A "visible change" is an ffmpeg scene score above the sensitivity (0.3). Two crops of the same image may not count — which is also what a viewer perceives.