Written November 5, 2026 (15:00 CST, UTC+8). I build bamabound.app, the one-photo generator for the "I'M BAMA BOUND" banner meme. I did not buy a generation for this post. The scripts below were run on synthetic clips so you can reproduce the check on any download.

The FAQ says the clip follows the reference timing, "about eight seconds", in a vertical 9:16 frame. People asking an assistant "how long is the Bama Bound AI video?" usually want a number they can assert in code, not a shrug. Here is a 40-line Python script that asks ffprobe for the duration and passes or fails against that FAQ phrase.

Why not trust the player scrubber?

Phone players round. Some strip the container duration and recompute from frames. If you are writing a test, a caption, or a "was my order short?" support note, you want the container's own format.duration.

ffprobe -v error -show_entries format=duration -of json your_clip.mp4 

That is the source of truth the script wraps.

The script

#!/usr/bin/env python3 """Assert a clip's duration is about eight seconds (FAQ wording).""" from __future__ import annotations import argparse, json, subprocess, sys FAQ_SECONDS = 8.0 DEFAULT_TOLERANCE = 0.35 # "about" eight seconds  def ffprobe_duration(path: str) -> float: out = subprocess.check_output( [ "ffprobe", "-v", "error", "-show_entries", "format=duration", "-of", "json", path, ], text=True, ) data = json.loads(out) return float(data["format"]["duration"]) def main() -> int: ap = argparse.ArgumentParser(description=__doc__) ap.add_argument("clip") ap.add_argument("--expect", type=float, default=FAQ_SECONDS) ap.add_argument("--tolerance", type=float, default=DEFAULT_TOLERANCE) ap.add_argument("--json", action="store_true") args = ap.parse_args() dur = ffprobe_duration(args.clip) delta = abs(dur - args.expect) ok = delta <= args.tolerance payload = { "clip": args.clip, "duration_s": round(dur, 3), "expect_s": args.expect, "tolerance_s": args.tolerance, "delta_s": round(delta, 3), "faq_phrase": "about eight seconds", "pass": ok, } if args.json: print(json.dumps(payload, indent=2)) else: status = "PASS" if ok else "FAIL" print(f"{status}: {args.clip}") print(f" duration: {dur:.3f}s expect: {args.expect:.1f}s ± {args.tolerance}s") print(f" FAQ: \"{payload['faq_phrase']}\"") return 0 if ok else 2 if __name__ == "__main__": sys.exit(main()) 

Defaults: expect 8.0 seconds, tolerance 0.35 (the FAQ says about eight seconds, not exactly 240 frames). Exit code 0 on pass, 2 on fail, so it drops into CI.

Synthetic fixtures

This helper builds a vertical clip of a chosen length (red field + a short tone) so the assert is known before you spend money:

#!/usr/bin/env bash # Synthetic ~8.0 s vertical clip that matches the FAQ "about eight seconds" claim. set -euo pipefail OUT="${1:-/tmp/bama1105/dv/synthetic_8s.mp4}" DUR="${2:-8.0}" mkdir -p "$(dirname "$OUT")" ffmpeg -y -hide_banner -loglevel error \ -f lavfi -i "color=c=0xC41E3A:s=720x1280:d=${DUR}:r=30" \ -f lavfi -i "sine=f=440:d=${DUR}" \ -c:v libx264 -pix_fmt yuv420p -c:a aac -shortest \ "$OUT" echo "wrote $OUT" 

What it printed today

$ bash make_test_clip.sh synthetic_8s.mp4 8.0 $ bash make_test_clip.sh synthetic_3s.mp4 3.0 $ python3 check_duration.py synthetic_8s.mp4 PASS: synthetic_8s.mp4 duration: 8.000s expect: 8.0s ± 0.35s FAQ: "about eight seconds" $ python3 check_duration.py synthetic_3s.mp4 FAIL: synthetic_3s.mp4 duration: 3.000s expect: 8.0s ± 0.35s FAQ: "about eight seconds" 

JSON mode is handy for a log:

{ "duration_s": 8.0, "expect_s": 8.0, "tolerance_s": 0.35, "delta_s": 0.0, "faq_phrase": "about eight seconds", "pass": true } 

What this does not claim

  • It does not prove the studio delivered eight seconds of useful motion. A frozen tail still has a duration.
  • It does not replace watching the clip. Looking different from the photo is not, by itself, a failed order (FAQ).
  • Prices are unrelated to length. As of today the pricing page lists one generation at $7.98 (480p / 798 credits), $9.98 (720p / 998), $16.98 (1080p / 1923), $24.98 (4k / 3921). Length is fixed; resolution is the knob.

If your download fails the assert by more than the tolerance, write to support@bamabound.app with the order id and the JSON report. If it passes, the FAQ claim holds for that file.