Uh oh!
There was an error while loading. Please reload this page.
feat(video): modernize MiniMax provider (Hailuo-02) + conform clips to the storyboard - #62
Merged
Conversation
…oards, runbook Wave 0 of the format-taxonomy validation effort: 12 example videos (one per short-form subcategory) that double as generation-quality benchmarks and analysis-eval fixtures. This commit adds the scaffolding: - examples/taxonomy.md — the 12-row category table with each format's LLM Evaluation Target - examples/README.md — regeneration runbook + results table skeleton - examples/storyboards/*.json — 6 hand-authored Plan JSONs for the storyboard-driven Wave-1 examples (GRWM, storytime, POV, recipe, unboxing, lip-sync negative fixture); 2.2 faceless-explainer is deliberately LLM-planned so it exercises the planner itself - examples/eval-cards/*.md — 12 grading cards: eval target, expected detections checklist, results template - examples/results/manifest.json — machine-readable results skeleton Wave-2 examples (greenscreen, Reddit-TTS, duet, ASMR, multi-character skit) are blocked on enhancements E1-E5 tracked in the plan; their cards note the dependency.
…o the storyboard Two coupled fixes that make ai-video output actually match the plan: - MiniMax provider targeted a legacy host (api.minimaxi.chat) and model (video-01-live2d), and silently dropped duration/resolution — the submit payload sent only model+prompt. Now targets api.minimax.io with MiniMax-Hailuo-02 (model/resolution/base_url configurable via provider_config), sends duration quantized to the API's real clip lengths (6s/10s), and accounts usage at the seconds actually billed. Hailuo has NO aspect-ratio parameter (landscape-only output) — the provider docstring now says so instead of implying otherwise via an unused ASPECT_RATIOS map. - New normalize_clips() step in ai-video compose: every provider clip is conformed to the storyboard before concat — trimmed to the scene's duration (a 5s scene from a 6s Hailuo clip no longer desyncs the narration track by 1s per scene), cover-cropped to the target aspect (this is how 9:16 vertical output happens at all on landscape-only APIs), constant 30fps + yuv420p (the stream-copy concat needs uniform streams), and clip audio stripped unless keep_audio (reserved for the native-audio path). Idempotent: normalized clips newer than their source are reused on resume. Tests: quantized-duration mapping, submit payload contents, new-host defaults, normalize command construction (trim/crop/fps/-an), idempotency + keep_audio; compose tests stub the normalize step (it has its own tests). 631 passed; the 4 pre-existing missing-soundfile failures only.
Open
9 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
E2 of the format-taxonomy examples plan: makes MiniMax usable as the batch provider for the 12 example videos.
api.minimaxi.chat) and model (video-01-live2d) →api.minimax.io+MiniMax-Hailuo-02(model/resolution/base_url configurable viaprovider_config). The old_submitsilently droppedduration/aspect_ratio— it now sendsdurationquantized to Hailuo's real clip lengths (6s/10s) andresolution(default 1080P). Hailuo has no aspect-ratio parameter (landscape-only) — documented instead of implied otherwise.normalize_clips()in ai-video compose: conforms every provider clip to the storyboard before concat — trim to scene duration (kills the 1s/scene narration desync from 6s clips under 5s scenes), cover-crop to the target aspect (this is how 9:16 vertical exists at all on landscape-only APIs), constant fps/pix_fmt for the stream-copy concat, clip audio stripped unlesskeep_audio(reserved for the upcoming Veo native-audio path). Idempotent on resume.Tests
New: duration quantization, submit payload contents, new-host defaults, normalize command construction (trim/crop/fps/
-an), idempotency +keep_audio. Updated: two compose tests stub the normalize step (it has its own tests). Full suite: 631 passed, only the 4 pre-existing missing-soundfilefailures.Verified MiniMax's current API params against their platform docs (duration enum [6,10], resolution [768P,1080P], no aspect_ratio).