Inspiration

Short-video creators can miss a brief black gap, a soft shot or a caption beneath app controls. A thumbnail does not show when a problem happens. We wanted an inspectable final check with specific times and an honest repair/recheck loop.

What it does

Upload an owned vertical short to the live AWS app. OpenCV 5 measures every decoded frame and the viewer shows a timeline, plain-language findings, frame preview and downloadable JSON/CSV/contact-sheet evidence. Caption detection uses the actual DB text network rather than fixture boxes.

Explicit local repair can trim eligible black/frozen spans and lift exposure. When an aligned clean source export exists, source-aware restoration replaces flagged spans from that export and preserves timing; input audio is copied unchanged. The result is re-analyzed locally and can be uploaded for an independent AWS recheck. It does not reconstruct lost detail or missing words without the source.

How we built it

Python, OpenCV 5.0.0, NumPy, ffmpeg and an original dependency-free HTML/CSS/JavaScript viewer. OpenCV uses Laplacian and Fourier sharpness, luminance/histograms, frame differences and SSIM, exposure changes, border/aspect checks, and a PP-OCRv3 DB English text network sampled every 0.5 seconds. Dependencies and external model provenance are pinned in the public repo. No LLM key is needed.

The AWS Lambda viewer/API creates checksum-bound, single-write uploads to private S3. S3 triggers the containerized OpenCV Lambda worker. It writes JSON, frame measurements and contact sheets to S3; DynamoDB records job leases/status and CloudWatch records execution evidence. The viewer polls actual completion. ECR stores the container image. This is deployed in ap-southeast-2.

flowchart LR
  User --> API[Lambda viewer and upload API]
  API --> Upload[Private S3]
  Upload --> CV[Lambda / OpenCV 5 + DB text model]
  CV --> Reports[S3 reports]
  CV --> Jobs[DynamoDB / CloudWatch]
  Reports --> User
  Repair[Local ffmpeg / aligned source restoration] --> Upload

Build, deployment and test instructions, pinned dependencies and the rendered architecture diagram: public README.

Evaluation and results

We procedurally composed three original 720×1280, 24fps, 12-second shorts from our own app captures, with a clean control per style. Each damaged version contains 1s blur at 2–3s, 0.5s black at 5–5.5s, and bottom-cut caption text at 8–10s. The studio version additionally freezes at 6–7.5s and has low exposure at 10.5–11.5s.

All six originals and three restored candidates ran through the live AWS service: 2,592 decoded frames. On these six controlled checks (blur, black, frozen, dark, caption safe-zone and caption edge risk), precision and recall were 100%, with zero frame-level false positives/negatives and no boundary tolerance in frame scoring. All three clean controls and all three restored outputs had zero findings. Scene-cut review notices at the actual injected black/exposure boundaries are retained and separately validated. The restored clips retain all 288 frames and the 12s duration.

Analysis took 9.8372–10.4085s. Wall-clock upload creation through report retrieval took 16.1017–20.1804s, including 3s polling; local rendering/restoration is excluded. Nine report pages passed browser checks for playback/seek, evidence downloads, filtering and desktop/mobile width with zero page errors. The Python suite passed 58 tests with the real text model active; the AWS template passed cfn-lint. The shared presentation kit passed its OpenCV configuration contract, typecheck and 11 focused tests; its full shared suite remains 15/19 because four expectations still describe older contest configurations (including the former undeployed OpenCV state). Those shared tests were not changed.

Evidence: public media/realism-results.json includes raw report URLs, request IDs, per-frame confusion counts and per-run latency. The public evidence index links the unmodified AWS reports and includes restoration results. Contact sheets were inspected at 3-second intervals for every generated clip and restored candidate, plus injected-defect times. This small controlled screen-demo set is not a real-world or natural-camera accuracy claim.

Real output sample from the studio short:

  • 2.00–3.00s: blur.
  • 5.00–5.50s: black.
  • 6.00–7.50s: frozen.
  • 8.00–10.00s: caption edge and safe-zone risk.
  • 10.50–11.50s: low exposure.
  • Source-restored candidate: zero findings in the live AWS recheck.

Challenges and failure cases

Severe blur and dark moving frames initially produced false freeze suggestions. We fixed the analyzer to withhold freeze recommendations when motion evidence is unreliable, added regression coverage, redeployed and reran. An earlier moving control title genuinely crossed the safe guide; we corrected its layout instead of weakening detection thresholds. Earlier generic repair left residual issues; those are not counted as repaired passes. Full source-aware restoration now explicitly requires a matching original export.

Accomplishments

A working public AWS upload-to-report workflow, an inspectable OpenCV 5 analysis pipeline, deterministic evidence exports, explicit repair/recheck paths, nine measured live runs and a 2:30 English-captioned demonstration recorded from the live app on pilot. The team photo is used only inside the video and is not committed.

What we learned

Small, paired controls expose detector overlap. Keeping raw reports, off-target negatives and failure cases makes a result easier to audit than a single headline score. Source restoration and general repair need different claims.

Limitations and responsible use

Thresholds need calibration. Intentional stills/fades/cuts require review. Freeze checks are withheld in severe blur/low exposure. Generic safe zones are not platform guarantees. The English text model can miss brief, tiny or stylized captions; an edge flag cannot prove missing words. VFR timestamps are approximate. Audio defects are not analyzed or repaired. Source restoration requires the same edit, aligned clean footage and visual/audio approval before publishing. Use owned or consented footage; report links are shareable.

What's next

Collect more owned natural-camera test clips across source styles, extend multilingual caption coverage and evaluate audio continuity, while keeping failures and original media inspectable.

Built with

OpenCV 5, Python, NumPy, ffmpeg, AWS Lambda, Amazon S3, DynamoDB, ECR, CloudWatch, HTML, CSS, JavaScript, Playwright and Remotion for the demonstration film.

Team and hackathon work

Kyoungsoo Kim — Seoul · architecture & electronic engineering · 6 yrs commerce MD/analyst · video producer.

Built during this hackathon: detector pipeline, text integration, timeline viewer, exports, owned evaluation clips, repair/recheck and source restoration, AWS deployment, tests, CI and demo film. The shared presentation kit supplies reusable rendering components. External libraries/model retain their licenses; no third-party stock media or logos are used in the demo assets.

License: MIT. Copyright (c) 2026 Kyoungsoo Kim.

Judge access and evidence

No optional COOL or Agentic Vision award claim is made. The public AWS service is retained through judging.

Share this project:

Updates

Submission history