How to QA a render before it ships
Upload the file and one decode returns black frames, freezes, silence gaps and loudness together, each with a start and an end. These are the checks a human does by scrubbing and usually misses — a two-frame black flash at 04:12 is invisible at playback speed and obvious in a list.
Last updated
The call
Copy this as it stands. “Is there anything broken in this export?” is the question it answers.
const upload = await playhead.uploads.create("./exports/master-v4.mov");
const qa = await playhead.watch({
url: upload.upload_id,
detail: "overview",
});
console.log(qa.technical?.blacks); // [{ start: 252.1, end: 252.2 }]
console.log(qa.technical?.freezes);
console.log(qa.technical?.silence_gaps);
console.log(qa.video.start_timecode); // "14:36:27:07"UPLOAD=$(curl -sX POST https://api.tryplayhead.com/v1/uploads \
-H "Authorization: Bearer $PLAYHEAD_API_KEY" \
-F "file=@./exports/master-v4.mov" | jq -r .upload_id)
curl -X POST https://api.tryplayhead.com/v1/frames \
-H "Authorization: Bearer $PLAYHEAD_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"url\": \"$UPLOAD\", \"detail\": \"overview\"}" | jq '.technical'Watch out for
Everything the API can refuse, and what to send instead, is on the errors page.