Is it true that "low-spec PCs can't handle it"? The story of how I got MiniMax H3 local video generation working with 16GB of VRAM
Hello, I'm TK.
Last time, I wrote about having Codex build a news video editing system for me.
I tried using Codex for the recently popular AI video editing
This time, it's not about "editing by arranging images and audio into a video."
I am using AI to animate a single still image itself.
I used an Image-to-Video model called MiniMax H3.
I provided a single image of a red-haired woman sitting on a bench in a laundromat, and added blinking, breathing, hair movement, finger movement, washing machine rotation, and a slow camera zoom.
The final output is 864x480, 24fps, 124 frames, approximately 5.17 seconds.
I did not include an audio track.
The total time taken for video generation was about 169 seconds.
"Local video generation is impossible without a high-end GPU with 24GB of VRAM or more."
I thought so too.
But what was actually needed was not brute-forcing it with performance, but deciding how to reduce the heavy processing.
"Video generation requires 24GB or more" was something I took for granted.

When looking for information on local AI, I often see numbers like 24GB, 32GB, and 48GB of VRAM.
Even image generation is heavy, but video generation handles dozens or hundreds of frames at once.
Thinking about it normally, it is natural that the required memory increases.
The model I used this time is not light either.
Video generation model: approx. 19.5GB
Text encoder: approx. 14.6GB
Video VAE: approx. 3.0GB
The total size of the model files to be saved is approximately 40GB.
However, the model size on disk and the amount of VRAM required to keep it loaded on the GPU during generation are not the same.
If you load only the necessary parts onto the GPU and offload the parts that are finished being used to the main memory, you can run it with less VRAM than the entire model size.
The actual environment used for this test is an RTX 5070 Ti with 16GB of VRAM.
While not a so-called low-cost GPU, it is an environment with 8GB less than the 24GB class often used as a benchmark for video generation.
Also, the public workflow I referenced includes a configuration for the RTX 3060 as well.
However, the time and image quality in this article are based on actual measurements in a 16GB environment. This does not guarantee that the same figures will be achieved on a 3060 or a 6GB environment.
What I created this time: A dedicated screen to turn a single image into a 5-second silent video.

At first, I considered connecting the ComfyUI nodes directly.
But it is a hassle to open a massive workflow every time and check the image, frame count, model, and save destination.
So, I created a dedicated screen that keeps only the necessary operations.
You only really need to touch the following four things on the screen.
Select the source image
Write what to move and how
Select a duration of 5 to 15 seconds
Select image quality and generate
ComfyUI is running in the background, but the user does not need to see the complex nodes.
The instructions for this time are as follows:
The woman blinks naturally and breathes slowly. Her hair and fingertips move slightly, and the washing machine in the background rotates. The camera slowly zooms in on her face. Maintain the composition of the face, body shape, clothes, coffee can, and background.
The screen automatically formats the input into the official prompt format for MiniMax H3.
Since I didn't need audio during generation, I kept the audio-related items fixed to `N/A`.
I also do not download the Audio VAE.
The final MP4 file also contains no audio stream.
Workflow: Breaking down heavy video generation into 7 stages

To simplify the process this time, the flow is as follows.
入力画像
↓
0.40MP前後へリサイズ
↓
動きの指示をMiniMax公式形式へ整形
↓
int8 / NVFP4の軽量モデルを読み込む
↓
25 stepsで動画の潜在表現を生成
↓
EasyCacheで再計算を減らす
↓
Video VAEで画像フレームへ戻す
↓
24fpsのH.264 MP4として保存The main settings are as follows.
| Item | Current Setting |
|---|---|
| Length | Approx. 5.17 seconds |
| Resolution | 864×480 (approx. 0.4MP) |
| Frame Rate | 24fps |
| Total Frames | 124 |
| Sampling | 25 steps / simple |
| Cache | EasyCache 0.3 / 0.2–0.9 |
| Video Model | int8 ConvRot |
| Text Encoder | NVFP4 AWQ |
| Video VAE | int8 ConvRot |
| Audio | Do not generate |
MiniMax H3 does not allow you to specify any arbitrary number of frames.
Because you need to match the frame count to internal requirements, even if you select 5 seconds on the screen, the finished video will be approximately 5.17 seconds long.
I also automated this conversion on the screen side.
What worked for 16GB was discarding things before adding features

To run it in a low-VRAM environment, the most effective thing was 'not adding everything that looks convenient'.
This time, there were things I discarded from the start.
Audio during generation
Long durations of 10 or 15 seconds right away
Direct generation at 1080p
Complex settings that change every time
Unused additional models
Instead, I narrowed it down to the following parts.
First, 5 seconds
First, 0.40MP
24fps
25 steps
EasyCache
Offloading via Dynamic VRAM
int8 / NVFP4 quantized models
EasyCache is a mechanism that caches reusable parts instead of calculating every step with the same weight.
In this log, 13 out of 25 steps were skipped, resulting in a "2.08x speedup" display.
Of course, cutting settings doesn't automatically make things better.
If you lower the resolution too much, faces will distort.
If you reduce the steps too much, the motion and texture will become unstable.
If you increase the length, the time and memory burden will increase accordingly.
Therefore, instead of looking for the "lightest setting," you need to lock in the "lightest setting within the image quality you can tolerate."
This is something I also felt when I accelerated local LLMs previously.
Local LLMs are too slow. Breaking down "wait times" before accelerating them
If you only chase speed, you end up with something that is fast but unusable.
The biggest pitfall: The process succeeded, but the video was pitch black.

Reading this far, it might seem like it was completed smoothly.
In reality, I failed quite significantly once.
The first generation completed to the end without throwing any errors.
The MP4 was also saved.
Both the playback duration and frame count are normal.
However, when I played it back, every frame was completely black.
At first, I suspected the prompt or the Video VAE settings.
However, even when I performed a diagnostic test of simply compressing the input image with the Video VAE and restoring it, it still turned out black.
In other words, it was broken at the stage before the video generation model.
The cause was that the portable version of ComfyUI v0.30.0 I was using did not yet include the changes to correctly handle the int8 ConvRot Video VAE.
What was needed was the official ComfyUI PR #15334.
Once I applied this official fix, the VAE round-trip test for the same input image was restored correctly.
When I ran the I2V again after that, it output a video that maintained the original person and composition, rather than a black screen.
I have now included a process in my setup to automatically apply this fix.
If it has already been applied, it won't break it by applying it again, and if it hasn't been applied, it will be added during setup.
The scariest part this time was that no errors were displayed.
'Processing completed' and 'a correct video was created' were two different things.
For local video generation, it is best to at least extract the beginning, middle, and end frames as images and check for black screens, corruption, and whether there is any movement.
Actual measurement result: A 5.17-second video was generated in about 169 seconds.

The actual measurement results after the fix are as follows.
GPU: RTX 5070 Ti / VRAM 16GB
Output: 864×480
Frame rate: 24fps
Number of frames: 124
Video duration: approx. 5.17 seconds
Total generation time: approx. 168.74 seconds
Codec: H.264
Video stream: 1
Audio stream: 0
I was able to maintain the placement of the face, red hair, white knit sweater, green skirt, coffee can, bench, and washing machine from the original image.
On top of that, small movements were added to the facial expression, hair, fingertips, and the washing machine, and the camera slowly zooms in on the face.
It's not a flashy action.
However, for event CG in ADV games, conversation scenes, inserts for short videos, or loop materials for social media, this 'slightly natural movement' is quite useful.
If you are trying this in a lower-spec environment, I recommend the following order.
Turn off audio
Start with 5 seconds
Set to 0.25–0.40MP
Use a quantized model
Enable Dynamic VRAM
Use EasyCache
Always visually check 3 frames
Increase resolution and length after success
If you start with the highest quality, longest duration, and audio enabled, you won't know where it failed.
Start by getting a small test run through.
Check the quality.
Next, increase only one heavy setting.
By following this order, you can see how far your current setup can go before you decide to buy a new GPU.
Local video generation is not yet at the stage where it is 'perfect for anyone with a single button'.
The model alone requires about 40GB, and it takes several minutes to create just 5 seconds of footage.
Even so, I now have an environment where I can test my own images as many times as I want without worrying about cloud usage limits or pay-as-you-go fees.
The conclusion of this article can be summed up in one sentence:
If you are aiming for high-quality local video generation on a low-spec PC, don't just look at GPU performance; narrow down what is necessary for the video first.
Before giving up because you don't have 24GB, try starting with 5 seconds, no audio, and 0.40MP.
From there, local I2V was quite realistic.
If you found this article helpful, please click 'Like'.
Please also let me know in the comments what kind of GPU and VRAM capacity you have, and what kind of videos you were able to create!
いいなと思ったら応援しよう!
僕の記事に価値を見出してくれた…そのチップという名の『覚悟』、心に響きました。あなたからの応援は、より良い記事を作るための『黄金の風』にしてみせます。後悔はさせません、心からグラッツェ!