<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Callirra]]></title><description><![CDATA[Practical guides to AI image, video and audio generation: model comparisons, real credit costs and release notes from the Callirra team.]]></description><link>https://callirra.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6aa64247595a42a6f9191714/955f9aac-a67b-41fc-b6e0-3b180f5b9605.png</url><title>Callirra</title><link>https://callirra.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Sat, 31 Oct 2026 09:07:28 GMT</lastBuildDate><atom:link href="https://callirra.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[What MiniMax H3 actually outputs: "1080P" is 1920×1056, durations snap to 24 fps]]></title><description><![CDATA[Measured MiniMax H3 outputs: "1080P" renders 1920×1056, durations quantise to 24 fps frames, and every clip ships a 32 kHz track.]]></description><link>https://callirra.hashnode.dev/minimax-h3-output-specs</link><guid isPermaLink="true">https://callirra.hashnode.dev/minimax-h3-output-specs</guid><category><![CDATA[minimax]]></category><category><![CDATA[text to video]]></category><category><![CDATA[image to video]]></category><category><![CDATA[Video Generation]]></category><category><![CDATA[ai video]]></category><dc:creator><![CDATA[Callirra]]></dc:creator><pubDate>Thu, 29 Oct 2026 09:41:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6aa64247595a42a6f9191714/bb8eb529-345e-419b-b19a-6c9e8c665f0e.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Quick answer:</strong> On the hosted MiniMax H3 lanes I tested, a "1080P" request comes back at <strong>1920×1056</strong>, not 1920×1080 — the model converges to a pixel-area cap. Durations are quantised to whole 24 fps frames, so a 5 s request renders <strong>5.167 s</strong> and a 1 s request renders <strong>1.625 s</strong>. The 768P native canvas is <strong>1344×768</strong>, and every output carries a <strong>32 kHz audio track</strong>. All ten samples, with their generation logs, are published under CC BY 4.0.</p>
<p>If you are budgeting storage, frame-accurate editing, or an upload path that assumes standard 1080p, these numbers matter more than the spec sheet.</p>
<h2>How I measured this</h2>
<p>Ten text-to-video and image-to-video runs across the 480P, 768P and 1080P tiers. For each sample I recorded the request (prompt, tier, aspect ratio, duration), the returned file's container metadata, and the wall-clock time from submit to a playable file.</p>
<p>The artifacts are in callirra-ai/minimax-h3-video-atlas on GitHub: each sample directory ships the MP4 plus a <code>generation.json</code> with the exact request parameters, and the README lists pixel dimensions, fps, duration, audio track and cost per sample.</p>
<p>Nothing here is inferred from documentation. Every number below was read out of a rendered file.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6aa64247595a42a6f9191714/becb156a-b0ca-4f08-90b9-7cd1736d3330.jpg" alt="" style="display:block;margin:0 auto" />

<h2>Finding 1 — "1080P" is 1920×1056</h2>
<p>The 1080P lane returns <strong>1920×1056 @ 24 fps</strong>. That is not a rounding artifact in my pipeline; it is the model converging on a pixel-area cap rather than a nominal 1920×1080 raster.</p>
<p>Practical consequences:</p>
<ul>
<li>A 1920×1056 frame is <strong>7.8% shorter vertically</strong> than 1920×1080. If you crop or scale assuming 1080, you either letterbox or lose the top and bottom of the framing.</li>
<li>1056 is not a multiple of 16. H.264 encoders handle it fine, but some NLE presets and hardware decoders are happier on multiples of 16 — check your pipeline before a long batch.</li>
<li>The same cap applies to the square path: 1080P <strong>1:1</strong> comes back as <strong>1056×1056</strong>.</li>
</ul>
<h2>Finding 2 — Durations quantise to 24 fps frames</h2>
<p>Requested seconds are converted to whole frame counts at 24 fps, then back to a duration. The measurement:</p>
<table>
<thead>
<tr>
<th>Requested</th>
<th>Rendered</th>
<th>Frames at 24 fps</th>
</tr>
</thead>
<tbody><tr>
<td>1 s</td>
<td>1.625 s</td>
<td>39</td>
</tr>
<tr>
<td>5 s</td>
<td>5.167 s</td>
<td>124</td>
</tr>
</tbody></table>
<p>So a "5 second clip" is about <strong>1.006×</strong> the requested length, and a 1 s clip is <strong>1.6×</strong>. Short clips drift proportionally more, which breaks assumptions in:</p>
<ul>
<li><strong>beat- or bar-synced edits</strong> — a 24-frame-per-second grid does not align with 23.976 or 25 fps timelines;</li>
<li><strong>batch concatenation</strong> — mixing tiers produces clips with different frame counts, so a simple concat without re-timing shows a visible jump;</li>
<li><strong>cost estimates</strong> — if you are billed per output second, 5.167 s is what you pay for, not 5.000 s.</li>
</ul>
<h2>Finding 3 — 768P's native canvas is 1344×768</h2>
<p>Not 1366×768, not 1280×720. <strong>1344×768</strong>, i.e. 16:9 exactly at the model's native short side. Asking for 768P and getting 1344×768 means anyone scripting around generic "720p" presets will mis-size their overlays by a few percent.</p>
<p>This matters for template-driven work: if you have a fixed lower-third SVG authored for 1280×720, it lands at the wrong scale on a 1344×768 frame.</p>
<h2>Finding 4 — Every output ships a 32 kHz audio track</h2>
<p>All ten samples had an audio stream at <strong>32 kHz</strong>, including text-to-video runs where I passed no audio input. The model appears to generate an ambient layer by default.</p>
<p>Two things follow:</p>
<ol>
<li>If you <strong>don't</strong> want audio, strip it — but strip it deliberately, because the track exists whether or not you asked for sound.</li>
<li>If you <strong>do</strong> want audio, 32 kHz is below the 44.1/48 kHz that most delivery specs assume. Resample before you publish to platforms that enforce 48 kHz, or you will get an unnecessary re-encode.</li>
</ol>
<h2>Finding 5 — "2K" is a second pass, not a first-class tier</h2>
<p>On the lanes I used, 2K is not generated natively. The path is: generate at 768P, then run a regeneration step to 2K. That changes the economics:</p>
<ul>
<li>You pay for <strong>both</strong> passes, not one.</li>
<li>The 2K result inherits the 768P composition, so re-rolling at 2K means re-rolling the first pass too.</li>
<li>Wall-clock time compounds. In my runs the 1080P first pass alone took <strong>5.7–7.9 minutes</strong> for 5 s of video, versus <strong>1–2.5 minutes</strong> at 768P.</li>
</ul>
<p>That is the single biggest surprise for anyone coming from an image model, where "higher tier" usually just means a slower call to the same endpoint.</p>
<h2>What this costs per second, and on what terms</h2>
<p>Rates below are what I paid on the hosted endpoint I used, at the time of measurement. <strong>They are not universal</strong>: every provider resells these lanes at different margins, video input is billed on input seconds as well as output, and reference-image rules differ per lane.</p>
<table>
<thead>
<tr>
<th>Tier</th>
<th>Measured output</th>
<th>Rate on the lane I used</th>
</tr>
</thead>
<tbody><tr>
<td>480P</td>
<td>864×480 (480×864 vertical), 24 fps</td>
<td>1 credit / s</td>
</tr>
<tr>
<td>768P</td>
<td>1344×768 (768×1344 vertical), 24 fps</td>
<td>2 credits / s</td>
</tr>
<tr>
<td>1080P</td>
<td>1920×1056, 24 fps</td>
<td>3 credits / s</td>
</tr>
<tr>
<td>2K (via regeneration)</td>
<td>2560×1440-class</td>
<td>10 credits / s</td>
</tr>
</tbody></table>
<p>At the platform's published rate of $0.01 per credit, that is <strong>$0.01 / $0.02 / $0.03 per output second</strong> for 480P / 768P / 1080P, and <strong>$0.10 per output second</strong> at 2K. Subscription discounts move those numbers, so treat them as list rates, not as what everyone pays.</p>
<p>For the 2K comparison specifically: MiniMax's own pay-as-you-go price for H3 2K was <strong>$0.13/s</strong> when I checked, and a reseller I compared against listed <strong>$0.091/s</strong> for a from-scratch 2K generation — but that reseller's cheaper $0.034/s figure only applies to a <em>regeneration</em> on top of a job you already paid for at that reseller. Two-pass economics, same trap as above. Compare like with like or the table lies to you.</p>
<p>Two billing rules that consistently bite people:</p>
<ul>
<li><strong>Video input is billed at the same per-second rate as output</strong>, so a reference-to-video job with 6 s of input and 5 s of output bills 11 seconds, not 5.</li>
<li><strong>The first five reference images are free on the 2K/video-to-video lane; the sixth onward is charged per image.</strong> Audio inputs are not charged. An image-to-video job on the cheaper lanes has no per-reference-image fee at all — different lanes, different rules.</li>
</ul>
<p>Free-tier allowances are small enough that the tiers above are self-limiting: a first-week allowance on the platform I used covered one 480P 5 s run, and nothing at 2K (the 2K minimum is 4 s, which is well past the allowance).</p>
<h2>FAQ</h2>
<p><strong>Is 1920×1056 a bug?</strong></p>
<p>It is consistent across ten samples and three aspect ratios, so it looks like a deliberate pixel-area cap rather than a defect. Either way, plan for 1056.</p>
<p><strong>Can I get true 1920×1080?</strong></p>
<p>Not from the 1080P lane I tested. Upscale to 1920×1080 yourself if a downstream system demands it, but understand you are inventing 24 rows of pixels.</p>
<p><strong>Why 24 fps and not 30?</strong></p>
<p>24 is what the outputs carried. It is also why durations land on 1/24 s boundaries — 39 frames is 1.625 s exactly, not a bandwidth artifact.</p>
<p><strong>Does the audio track cost extra?</strong></p>
<p>Not on the lanes I measured. It is not separately billed, which is likely why it is always present.</p>
<p><strong>Is the model open source?</strong></p>
<p>The weights are downloadable, but the license is a community license, not OSI-approved: the applicable territory excludes the US, EU, UK and Korea, and hosted-service use carries additional conditions. Read it before you build a product on it.</p>
<h2>Data and corrections</h2>
<p>If you have measurements that contradict any of the above, I want them — especially if you are on a different lane or a newer workflow. Open an issue there with the request JSON and the file's metadata and I will re-run the comparison.</p>
<p>Fifty prompts, including the ten rendered locally, are in the repo alongside the clips. The method is documented too, so you can reproduce it against any provider — the numbers above came from Callirra's H3 lanes because that is what I had access to.</p>
]]></content:encoded></item><item><title><![CDATA[An AI video prompt pre-flight checklist: 12 checks before you spend a generation]]></title><description><![CDATA[Twelve checks to run before you spend a generation: shot splitting, aspect ratios, duration rounding, reference roles, and billing traps.]]></description><link>https://callirra.hashnode.dev/ai-video-prompt-checklist</link><guid isPermaLink="true">https://callirra.hashnode.dev/ai-video-prompt-checklist</guid><category><![CDATA[Prompt Engineering]]></category><category><![CDATA[text to video]]></category><category><![CDATA[ai video]]></category><category><![CDATA[Video Generation]]></category><category><![CDATA[image to video]]></category><dc:creator><![CDATA[Callirra]]></dc:creator><pubDate>Thu, 29 Oct 2026 05:33:20 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6aa64247595a42a6f9191714/4d87fdf1-8e28-4e29-aaad-9e57bb339575.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Quick answer:</strong> Most wasted generations come from four decisions made <em>before</em> the model reads the prompt: an unclear subject/action split, reference media that fights the native aspect ratio, a duration that will be quantised, and a prompt that asks for two shots inside one clip. Run these twelve checks first. It takes about two minutes and removes the single most expensive failure mode, which is re-rolling the whole clip because one clause was ambiguous.</p>
<h2>Checks 1–3: is this even one shot?</h2>
<p><strong>1. One shot per generation.</strong> If your prompt contains "then", "and after that", or "cuts to", you are describing an edit, not a clip. Split it. Models that try to satisfy two beats tend to compromise both, usually by making the first beat too short or freezing the second.</p>
<p><strong>2. Separate the subject, the action, and the camera.</strong> Three clauses, in that order. "A woman in a red coat walks toward the camera, slow push-in" is three decisions. Merge them into one sentence and the model has to guess which one is the subject of the shot. When a generation comes back wrong, it is usually wrong in exactly one of these three, and you cannot tell which if they were fused.</p>
<p><strong>3. State the end state, not the process.</strong> "The cup is on the table, steam rising" describes a frame. "The cup is being placed on the table" describes a process, and a short clip cannot show it. Ask for a state you can screenshot; the motion inside it is the model's job.</p>
<h2>Checks 4–6: did you pin the format?</h2>
<p><strong>4. Aspect ratio is an input, not a post-processing step.</strong> Decide the delivery ratio first — 16:9, 9:16, 1:1 — and request it, rather than generating 16:9 and cropping. Cropping a 16:9 clip to 9:16 throws away about 68% of the pixels and, worse, throws away the framing you asked for. Vertical also changes what the model emphasises; it fills a tall frame differently.</p>
<p><strong>5. Check whether your duration will survive contact with the frame rate.</strong> Many pipelines convert requested seconds into a whole frame count and then report the real length. A request for 1 s can come back longer than a request for 5 s, proportionally. Before you build an edit around exact durations, verify one short clip at your lowest tier and measure it — not by trusting the number in the UI.</p>
<p><strong>6. Pick the resolution tier by what the edit needs, not by the highest number.</strong> If the clip appears in a 640 px wide insert, a higher tier buys nothing but time and money. Higher tiers are also usually much slower per second of video, and the difference is not linear.</p>
<h2>Checks 7–9: are the inputs compatible?</h2>
<p><strong>7. Count your reference images and know their roles.</strong> There is a difference between "this is the character" and "this is the style". Most models take several references but apply them positionally or with different weights. Passing six images and hoping is how you get a character wearing the reference image's <em>background</em>.</p>
<p><strong>8. Frame-based modes need both ends if you want both ends.</strong> First-frame and last-frame conditioning are different inputs. If you only provide the first frame, asking for a specific ending is asking the model to improvise the part you cared about.</p>
<p><strong>9. Decide who supplies the audio.</strong> Some models generate a soundtrack by default; some only accept audio you provide. This changes your workflow, not just the output: if the model generates audio, you may need to strip it; if you supply it, the clip length may follow the audio rather than your requested duration.</p>
<h2>Checks 10–12: cost and exit plan</h2>
<p><strong>10. Know whether input seconds are billed.</strong> Video-to-video and reference-to-video jobs often bill input duration at the same rate as output. A "5 second" job with 6 seconds of input video can bill 11 seconds. Budget the input, not just the output.</p>
<p><strong>11. Know the reference-image free tier.</strong> Several lanes include a handful of reference images and start charging per image after that. A prompt with nine references can cost meaningfully more than the same prompt with four — and usually four is enough.</p>
<p><strong>12. Decide the crop and the delivery format before rendering.</strong> Every rescale after the fact costs quality and time. If you know the clip ends up in a 1080×1350 slot, generate for that slot.</p>
<h2>The order that matters</h2>
<p>If you only do three of these, do them in this order:</p>
<ol>
<li><strong>Check 1</strong> — split multi-shot prompts. This is the single biggest source of full re-rolls.</li>
<li><strong>Check 4</strong> — request the delivery ratio. This is the most common post-processing regret.</li>
<li><strong>Check 10</strong> — read the billing rule for input seconds. This is the only one that silently changes your budget.</li>
</ol>
<h2>What this checklist does not fix</h2>
<p>It will not save a prompt whose subject is genuinely ambiguous to a human reader, and it will not compensate for a model whose native canvas differs from your target. Those are content and capability problems, not checklist problems.</p>
<h2>FAQ</h2>
<p><strong>How long should a first test clip be?</strong></p>
<p>The shortest duration the tier allows. You are testing composition and motion, not rendering an edit; a shorter clip surfaces the same failures for a fraction of the cost.</p>
<p><strong>Should I write prompts in English?</strong></p>
<p>If the model's documentation is in English, yes — but keep proper nouns and any on-screen text in the language it needs to appear in. Mixing instructions in two languages inside one clause is a reliable way to get neither.</p>
<p><strong>Do I need a storyboard for a five-second clip?</strong></p>
<p>No, but you do need to know which single moment the clip is about. A storyboard is how you discover that moment when it is not obvious; for a one-shot clip, one sentence naming the moment is enough.</p>
<p><strong>Does any of this depend on the model I use?</strong></p>
<p>The framing (checks 1–6, 10–12) is model-agnostic. The numbers (checks 5, 7, 11) are not — verify them per model, per lane, and write down what you measured, because the documentation and the rendered file do not always agree.</p>
]]></content:encoded></item></channel></rss>