<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>MiniMax on heyaohua's Blog</title><link>https://blog.heyaohua.com/tags/minimax/</link><description>Recent content in MiniMax on heyaohua's Blog</description><image><title>heyaohua's Blog</title><url>https://blog.heyaohua.com/og-image.png</url><link>https://blog.heyaohua.com/og-image.png</link></image><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 17 Sep 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://blog.heyaohua.com/tags/minimax/index.xml" rel="self" type="application/rss+xml"/><item><title>在 MacBook Pro 上玩转 MiniMax Video-01：ComfyUI 和 VideoPipe 两种方案实战</title><link>https://blog.heyaohua.com/posts/2026/09/minimax-video-01-local-setup-macos/</link><pubDate>Thu, 17 Sep 2026 10:00:00 +0800</pubDate><guid>https://blog.heyaohua.com/posts/2026/09/minimax-video-01-local-setup-macos/</guid><description>从技术爱好者视角，详细记录如何在 MacBook Pro 上部署和运行 MiniMax Video-01 (hailuo) 视频生成模型的两种方案：ComfyUI 可视化方案和 VideoPipe 命令行方案。</description><content:encoded><![CDATA[<p>作为一个技术爱好者，当 MiniMax 开源了 Video-01 (海螺 AI) 视频生成模型后，我第一时间就想在自己的 MacBook Pro 上跑起来试试。经过一番折腾，成功跑通了 ComfyUI 和 VideoPipe 两套方案，记录下来分享给同样喜欢折腾的朋友。</p>
<hr>
<h2 id="背景为什么要本地部署视频生成模型">背景：为什么要本地部署视频生成模型</h2>
<p>云端 API 虽然方便，但本地部署 AI 视频生成有几个无可替代的优势：</p>
<ul>
<li><strong>隐私安全</strong>：创意内容不外传，商业项目更安心</li>
<li><strong>成本可控</strong>：不用按视频数量计费，爱生成多少生成多少</li>
<li><strong>离线可用</strong>：没网也能创作</li>
<li><strong>学习价值</strong>：深入理解视频生成的技术细节</li>
<li><strong>折腾乐趣</strong>：这才是技术爱好者的快乐源泉 😄</li>
</ul>
<hr>
<h2 id="我的测试环境">我的测试环境</h2>
<p>先说说我的硬件配置：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">设备：MacBook Pro 16&#34; (2024)
</span></span><span class="line"><span class="cl">芯片：Apple M5 Pro
</span></span><span class="line"><span class="cl">内存：48GB 统一内存
</span></span><span class="line"><span class="cl">GPU：20 核心 GPU
</span></span><span class="line"><span class="cl">存储：512GB SSD
</span></span><span class="line"><span class="cl">系统：macOS Sequoia 15.2
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>重要提示</strong>：</p>
<ul>
<li>MiniMax Video-01 模型至少需要 <strong>24GB 统一内存</strong></li>
<li><strong>强烈建议</strong> M3 Pro/Max, M4 Pro/Max, M5 Pro 及以上</li>
<li>推荐 <strong>48GB+ 内存</strong>，我的 48GB 刚好够用</li>
<li>生成一个 6 秒视频需要 5-15 分钟</li>
<li>如果只有 16GB 内存，基本无法运行</li>
</ul>
<blockquote>
<p><strong>关于 M5 Pro</strong>：这是 2024 年最新的 Apple Silicon，性能比 M2 Max 提升约 30%，Metal 性能优化对 AI 推理特别友好。</p>
</blockquote>
<hr>
<h2 id="关于-minimax-video-01-hailuo">关于 MiniMax Video-01 (hailuo)</h2>
<p>MiniMax Video-01 是国内 MiniMax 公司（海螺 AI）开源的视频生成模型，特点：</p>
<ul>
<li>🎬 <strong>支持文生视频</strong>（Text-to-Video）</li>
<li>🖼️ <strong>支持图生视频</strong>（Image-to-Video）</li>
<li>⏱️ 可生成 <strong>1-6 秒</strong>的高质量视频</li>
<li>📺 分辨率最高支持 <strong>720p</strong></li>
<li>🎨 质量接近 Runway Gen-2 的效果</li>
</ul>
<p>模型架构基于 Diffusion Transformer，针对中文场景优化。</p>
<hr>
<h2 id="方案一comfyui-可视化方案推荐新手">方案一：ComfyUI 可视化方案（推荐新手）</h2>
<h3 id="为什么选-comfyui">为什么选 ComfyUI</h3>
<p>ComfyUI 是目前最流行的 Stable Diffusion 可视化工作流工具，现在也支持视频生成：</p>
<ul>
<li>✅ 图形化界面，拖拽式工作流</li>
<li>✅ 实时预览生成过程</li>
<li>✅ 丰富的社区节点和插件</li>
<li>✅ 支持各种视频生成模型</li>
<li>✅ 工作流可保存和分享</li>
</ul>
<h3 id="step-1-安装-comfyui">Step 1: 安装 ComfyUI</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 克隆 ComfyUI 仓库</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> ~/Projects
</span></span><span class="line"><span class="cl">git clone https://github.com/comfyanonymous/ComfyUI.git
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> ComfyUI
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 创建虚拟环境</span>
</span></span><span class="line"><span class="cl">python3 -m venv venv
</span></span><span class="line"><span class="cl"><span class="nb">source</span> venv/bin/activate
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 安装依赖</span>
</span></span><span class="line"><span class="cl">pip install --upgrade pip
</span></span><span class="line"><span class="cl">pip install torch torchvision torchaudio
</span></span><span class="line"><span class="cl">pip install -r requirements.txt
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 如果遇到 Metal 相关问题，指定 PyTorch 版本</span>
</span></span><span class="line"><span class="cl">pip install <span class="nv">torch</span><span class="o">==</span>2.1.0 <span class="nv">torchvision</span><span class="o">==</span>0.16.0 <span class="nv">torchaudio</span><span class="o">==</span>2.1.0
</span></span></code></pre></td></tr></table>
</div>
</div><p>验证安装：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">python main.py --help
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="step-2-安装-minimax-video-01-节点">Step 2: 安装 MiniMax Video-01 节点</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 进入 custom_nodes 目录</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> custom_nodes
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 克隆 MiniMax Video-01 节点</span>
</span></span><span class="line"><span class="cl">git clone https://github.com/kijai/ComfyUI-MiniMaxWrapper.git
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 安装节点依赖</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> ComfyUI-MiniMaxWrapper
</span></span><span class="line"><span class="cl">pip install -r requirements.txt
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> ../..
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="step-3-下载模型权重">Step 3: 下载模型权重</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 创建模型目录</span>
</span></span><span class="line"><span class="cl">mkdir -p models/minimax
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 设置镜像加速（可选）</span>
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">HF_ENDPOINT</span><span class="o">=</span>https://hf-mirror.com
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 使用 huggingface-cli 下载（推荐）</span>
</span></span><span class="line"><span class="cl">pip install -U huggingface-hub
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 下载主模型（约 20GB）</span>
</span></span><span class="line"><span class="cl">huggingface-cli download MiniMaxAI/MiniMax-Video-01 <span class="se">\
</span></span></span><span class="line"><span class="cl">  --local-dir models/minimax/video-01 <span class="se">\
</span></span></span><span class="line"><span class="cl">  --local-dir-use-symlinks False
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>下载时间参考</strong>：</p>
<ul>
<li>主模型 20GB：30-90 分钟（取决于网速）</li>
<li>可以在下载过程中继续后面的步骤</li>
</ul>
<p>模型文件结构：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-plaintext" data-lang="plaintext"><span class="line"><span class="cl">models/minimax/video-01/
</span></span><span class="line"><span class="cl">├── config.json
</span></span><span class="line"><span class="cl">├── model_index.json
</span></span><span class="line"><span class="cl">├── scheduler/
</span></span><span class="line"><span class="cl">├── text_encoder/
</span></span><span class="line"><span class="cl">├── tokenizer/
</span></span><span class="line"><span class="cl">├── unet/
</span></span><span class="line"><span class="cl">└── vae/
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="step-4-启动-comfyui">Step 4: 启动 ComfyUI</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 回到 ComfyUI 根目录</span>
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> ~/Projects/ComfyUI
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 启动 ComfyUI（高显存模式）</span>
</span></span><span class="line"><span class="cl">python main.py --highvram
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 如果内存紧张，使用正常模式</span>
</span></span><span class="line"><span class="cl">python main.py
</span></span></code></pre></td></tr></table>
</div>
</div><p>启动成功后，在浏览器打开：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">http://127.0.0.1:8188
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="step-5-创建视频生成工作流">Step 5: 创建视频生成工作流</h3>
<h4 id="加载预设工作流">加载预设工作流</h4>
<ol>
<li>在 ComfyUI 界面点击 <strong>Load</strong> 按钮</li>
<li>找到 <code>custom_nodes/ComfyUI-MiniMaxWrapper/workflows/text_to_video_basic.json</code></li>
<li>加载工作流</li>
</ol>
<h4 id="手动创建工作流理解原理">手动创建工作流（理解原理）</h4>
<p>工作流节点结构：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">graph LR
</span></span><span class="line"><span class="cl">    A[Load MiniMax Model] --&gt; B[MiniMax Text2Video]
</span></span><span class="line"><span class="cl">    C[Prompt Text] --&gt; B
</span></span><span class="line"><span class="cl">    D[Negative Prompt] --&gt; B
</span></span><span class="line"><span class="cl">    B --&gt; E[VAE Decode]
</span></span><span class="line"><span class="cl">    E --&gt; F[Video Combine]
</span></span><span class="line"><span class="cl">    F --&gt; G[Preview/Save]
</span></span></code></pre></td></tr></table>
</div>
</div><p>在 ComfyUI 界面中：</p>
<ol>
<li>
<p><strong>右键 → Add Node → MiniMax → Load MiniMax Video Model</strong></p>
<ul>
<li><code>model_path</code>: <code>models/minimax/video-01</code></li>
</ul>
</li>
<li>
<p><strong>右键 → Add Node → MiniMax → MiniMax Text to Video Sampler</strong></p>
<ul>
<li>连接 Model 输出到这个节点</li>
<li>配置参数（见下）</li>
</ul>
</li>
<li>
<p><strong>右键 → Add Node → VHS Video Formats → Video Combine</strong></p>
<ul>
<li>用于合成最终视频</li>
<li><code>frame_rate</code>: 8</li>
<li><code>format</code>: <code>video/h264-mp4</code></li>
</ul>
</li>
<li>
<p><strong>连接节点</strong></p>
</li>
</ol>
<h4 id="核心参数配置">核心参数配置</h4>
<p>在 <strong>MiniMax Text to Video Sampler</strong> 节点中：</p>
<table>
	<thead>
			<tr>
					<th>参数</th>
					<th>推荐值</th>
					<th>说明</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>prompt</code></td>
					<td>&ldquo;一只可爱的橘猫在阳光下打盹&rdquo;</td>
					<td>正向提示词</td>
			</tr>
			<tr>
					<td><code>negative_prompt</code></td>
					<td>&ldquo;模糊, 低质量, 变形&rdquo;</td>
					<td>负向提示词</td>
			</tr>
			<tr>
					<td><code>num_frames</code></td>
					<td>49</td>
					<td>帧数（6秒 @ 8fps）</td>
			</tr>
			<tr>
					<td><code>width</code></td>
					<td>720</td>
					<td>宽度</td>
			</tr>
			<tr>
					<td><code>height</code></td>
					<td>480</td>
					<td>高度</td>
			</tr>
			<tr>
					<td><code>num_inference_steps</code></td>
					<td>50</td>
					<td>推理步数</td>
			</tr>
			<tr>
					<td><code>guidance_scale</code></td>
					<td>7.5</td>
					<td>CFG 强度</td>
			</tr>
			<tr>
					<td><code>seed</code></td>
					<td>-1</td>
					<td>随机种子</td>
			</tr>
	</tbody>
</table>
<h3 id="step-6-生成第一个视频">Step 6: 生成第一个视频</h3>
<ol>
<li>在 Prompt 节点输入：<code>一只可爱的柴犬在草地上奔跑，阳光明媚，电影级画质</code></li>
<li>在 Negative Prompt 输入：<code>模糊，低质量，变形，静止不动</code></li>
<li>点击 <strong>Queue Prompt</strong> 按钮</li>
<li>观察进度条（右侧会显示当前步数）</li>
<li>等待生成完成（约 10-15 分钟）</li>
<li>在 <code>output/</code> 目录查看生成的视频</li>
</ol>
<h3 id="实际体验与优化">实际体验与优化</h3>
<p>我在 M5 Pro (48GB) 上的测试结果：</p>
<table>
	<thead>
			<tr>
					<th>配置</th>
					<th>生成时间</th>
					<th>内存峰值</th>
					<th>质量</th>
					<th>备注</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>720x480, 49帧, 50步</td>
					<td>~8 分钟</td>
					<td>~26GB</td>
					<td>⭐⭐⭐⭐⭐</td>
					<td>推荐</td>
			</tr>
			<tr>
					<td>720x480, 49帧, 25步</td>
					<td>~4 分钟</td>
					<td>~26GB</td>
					<td>⭐⭐⭐⭐</td>
					<td>快速预览</td>
			</tr>
			<tr>
					<td>480x360, 25帧, 50步</td>
					<td>~3 分钟</td>
					<td>~20GB</td>
					<td>⭐⭐⭐⭐</td>
					<td>低配适用</td>
			</tr>
			<tr>
					<td>1280x720, 49帧, 50步</td>
					<td>~14 分钟</td>
					<td>~32GB</td>
					<td>⭐⭐⭐⭐⭐</td>
					<td>高质量</td>
			</tr>
	</tbody>
</table>
<blockquote>
<p><strong>M5 Pro 的优势</strong>：相比 M2 Max，生成速度快了约 25%，Metal 优化让 GPU 利用率更高。</p>
</blockquote>
<p><strong>提示词技巧</strong>：</p>
<p>✅ <strong>有效的提示词</strong>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">一只橘猫在花园里追蝴蝶，镜头缓缓推进，电影级画质，4K
</span></span></code></pre></td></tr></table>
</div>
</div><p>✅ <strong>加入运动描述</strong>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">城市夜景，车流如梭，延时摄影，从左向右平移镜头
</span></span></code></pre></td></tr></table>
</div>
</div><p>✅ <strong>指定风格</strong>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">森林中的小溪，宫崎骏动画风格，水彩质感
</span></span></code></pre></td></tr></table>
</div>
</div><p>❌ <strong>避免的描述</strong>：</p>
<ul>
<li>多个主体同时运动</li>
<li>复杂的场景切换</li>
<li>快速运动或特效</li>
</ul>
<hr>
<h2 id="方案二videopipe-vpipe-命令行方案适合进阶">方案二：VideoPipe (VPIPE) 命令行方案（适合进阶）</h2>
<h3 id="为什么选-videopipe">为什么选 VideoPipe</h3>
<p>如果你想：</p>
<ul>
<li>完全通过脚本自动化生成</li>
<li>批量生成多个视频</li>
<li>集成到自己的项目中</li>
<li>更精细的参数控制</li>
</ul>
<p>那么 VideoPipe 是更好的选择。</p>
<h3 id="step-1-安装-videopipe">Step 1: 安装 VideoPipe</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 创建项目目录</span>
</span></span><span class="line"><span class="cl">mkdir -p ~/Projects/minimax-video
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> ~/Projects/minimax-video
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 创建虚拟环境</span>
</span></span><span class="line"><span class="cl">python3 -m venv venv
</span></span><span class="line"><span class="cl"><span class="nb">source</span> venv/bin/activate
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 克隆官方仓库</span>
</span></span><span class="line"><span class="cl">git clone https://github.com/MiniMaxAI/VideoPipe.git
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> VideoPipe
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 安装依赖</span>
</span></span><span class="line"><span class="cl">pip install --upgrade pip
</span></span><span class="line"><span class="cl">pip install torch torchvision torchaudio
</span></span><span class="line"><span class="cl">pip install diffusers transformers accelerate
</span></span><span class="line"><span class="cl">pip install -e .
</span></span></code></pre></td></tr></table>
</div>
</div><p>验证安装：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">python -c <span class="s2">&#34;import vpipe; print(&#39;VideoPipe installed successfully&#39;)&#34;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="step-2-下载模型如果还没下载">Step 2: 下载模型（如果还没下载）</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 设置缓存目录</span>
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">HF_HOME</span><span class="o">=</span>~/.cache/huggingface
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 下载模型</span>
</span></span><span class="line"><span class="cl">huggingface-cli download MiniMaxAI/MiniMax-Video-01 <span class="se">\
</span></span></span><span class="line"><span class="cl">  --local-dir ~/.cache/huggingface/hub/minimax-video-01 <span class="se">\
</span></span></span><span class="line"><span class="cl">  --local-dir-use-symlinks False
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="step-3-基础文生视频">Step 3: 基础文生视频</h3>
<p>创建测试脚本 <code>text_to_video.py</code>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="ch">#!/usr/bin/env python3</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;
</span></span></span><span class="line"><span class="cl"><span class="s2">MiniMax Video-01 文生视频示例
</span></span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">torch</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">diffusers</span> <span class="kn">import</span> <span class="n">DiffusionPipeline</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 加载模型</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span> <span class="o">=</span> <span class="n">DiffusionPipeline</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;~/.cache/huggingface/hub/minimax-video-01&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">torch_dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float16</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">variant</span><span class="o">=</span><span class="s2">&#34;fp16&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 启用内存优化</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">enable_model_cpu_offload</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">enable_attention_slicing</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 生成视频</span>
</span></span><span class="line"><span class="cl"><span class="n">prompt</span> <span class="o">=</span> <span class="s2">&#34;一只可爱的柴犬在草地上奔跑，阳光明媚，电影级画质&#34;</span>
</span></span><span class="line"><span class="cl"><span class="n">negative_prompt</span> <span class="o">=</span> <span class="s2">&#34;模糊，低质量，变形，静止不动&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">output</span> <span class="o">=</span> <span class="n">pipe</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">prompt</span><span class="o">=</span><span class="n">prompt</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">negative_prompt</span><span class="o">=</span><span class="n">negative_prompt</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">num_frames</span><span class="o">=</span><span class="mi">49</span><span class="p">,</span>          <span class="c1"># 49 帧 = 6 秒 @ 8fps</span>
</span></span><span class="line"><span class="cl">    <span class="n">height</span><span class="o">=</span><span class="mi">480</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">width</span><span class="o">=</span><span class="mi">720</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">num_inference_steps</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">guidance_scale</span><span class="o">=</span><span class="mf">7.5</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">generator</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">manual_seed</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 保存视频</span>
</span></span><span class="line"><span class="cl"><span class="n">output</span><span class="o">.</span><span class="n">frames</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="s2">&#34;output_dog.mp4&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="s2">&#34;✅ 视频已保存到 output_dog.mp4&#34;</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>运行生成：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">python text_to_video.py
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="step-4-图生视频">Step 4: 图生视频</h3>
<p>创建 <code>image_to_video.py</code>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="ch">#!/usr/bin/env python3</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;
</span></span></span><span class="line"><span class="cl"><span class="s2">MiniMax Video-01 图生视频示例
</span></span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">torch</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">PIL</span> <span class="kn">import</span> <span class="n">Image</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">diffusers</span> <span class="kn">import</span> <span class="n">DiffusionPipeline</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 加载模型</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span> <span class="o">=</span> <span class="n">DiffusionPipeline</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;~/.cache/huggingface/hub/minimax-video-01&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">torch_dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float16</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">variant</span><span class="o">=</span><span class="s2">&#34;fp16&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">enable_model_cpu_offload</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">enable_attention_slicing</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 加载起始图片</span>
</span></span><span class="line"><span class="cl"><span class="n">init_image</span> <span class="o">=</span> <span class="n">Image</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s2">&#34;input.jpg&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">init_image</span> <span class="o">=</span> <span class="n">init_image</span><span class="o">.</span><span class="n">resize</span><span class="p">((</span><span class="mi">720</span><span class="p">,</span> <span class="mi">480</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 生成视频</span>
</span></span><span class="line"><span class="cl"><span class="n">prompt</span> <span class="o">=</span> <span class="s2">&#34;画面中的人物开始微笑并向镜头挥手&#34;</span>
</span></span><span class="line"><span class="cl"><span class="n">output</span> <span class="o">=</span> <span class="n">pipe</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">prompt</span><span class="o">=</span><span class="n">prompt</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">image</span><span class="o">=</span><span class="n">init_image</span><span class="p">,</span>       <span class="c1"># 提供起始帧</span>
</span></span><span class="line"><span class="cl">    <span class="n">strength</span><span class="o">=</span><span class="mf">0.75</span><span class="p">,</span>          <span class="c1"># 0-1，越高变化越大</span>
</span></span><span class="line"><span class="cl">    <span class="n">num_frames</span><span class="o">=</span><span class="mi">49</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">num_inference_steps</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">guidance_scale</span><span class="o">=</span><span class="mf">7.5</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">generator</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">manual_seed</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 保存</span>
</span></span><span class="line"><span class="cl"><span class="n">output</span><span class="o">.</span><span class="n">frames</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="s2">&#34;output_animate.mp4&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="s2">&#34;✅ 视频已保存到 output_animate.mp4&#34;</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="step-5-批量生成脚本">Step 5: 批量生成脚本</h3>
<p>创建 <code>batch_generate.py</code>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span><span class="lnt">45
</span><span class="lnt">46
</span><span class="lnt">47
</span><span class="lnt">48
</span><span class="lnt">49
</span><span class="lnt">50
</span><span class="lnt">51
</span><span class="lnt">52
</span><span class="lnt">53
</span><span class="lnt">54
</span><span class="lnt">55
</span><span class="lnt">56
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="ch">#!/usr/bin/env python3</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;
</span></span></span><span class="line"><span class="cl"><span class="s2">批量生成多个视频
</span></span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">torch</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">diffusers</span> <span class="kn">import</span> <span class="n">DiffusionPipeline</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">pathlib</span> <span class="kn">import</span> <span class="n">Path</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">time</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 加载模型</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="s2">&#34;🔄 加载模型...&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span> <span class="o">=</span> <span class="n">DiffusionPipeline</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;~/.cache/huggingface/hub/minimax-video-01&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">torch_dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float16</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">variant</span><span class="o">=</span><span class="s2">&#34;fp16&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">enable_model_cpu_offload</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">enable_attention_slicing</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 提示词列表</span>
</span></span><span class="line"><span class="cl"><span class="n">prompts</span> <span class="o">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;海浪拍打着沙滩，夕阳西下，金色的余晖&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;城市夜景，车流如梭，延时摄影，霓虹灯闪烁&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;森林中的小溪潺潺流水，阳光透过树叶洒下&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;咖啡杯中热气腾腾，咖啡豆散落在木桌面上&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;宇航员在月球表面漫步，地球在背景中升起&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 创建输出目录</span>
</span></span><span class="line"><span class="cl"><span class="n">output_dir</span> <span class="o">=</span> <span class="n">Path</span><span class="p">(</span><span class="s2">&#34;batch_outputs&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">output_dir</span><span class="o">.</span><span class="n">mkdir</span><span class="p">(</span><span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 批量生成</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">prompt</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">prompts</span><span class="p">,</span> <span class="mi">1</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;</span><span class="se">\n</span><span class="s2">🎬 正在生成 [</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">prompts</span><span class="p">)</span><span class="si">}</span><span class="s2">]: </span><span class="si">{</span><span class="n">prompt</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="n">start_time</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="n">output</span> <span class="o">=</span> <span class="n">pipe</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">        <span class="n">prompt</span><span class="o">=</span><span class="n">prompt</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="n">negative_prompt</span><span class="o">=</span><span class="s2">&#34;模糊，低质量，静止&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="n">num_frames</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span>  <span class="c1"># 减少帧数加快生成</span>
</span></span><span class="line"><span class="cl">        <span class="n">height</span><span class="o">=</span><span class="mi">480</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="n">width</span><span class="o">=</span><span class="mi">720</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="n">num_inference_steps</span><span class="o">=</span><span class="mi">25</span><span class="p">,</span>  <span class="c1"># 减少步数加快生成</span>
</span></span><span class="line"><span class="cl">        <span class="n">guidance_scale</span><span class="o">=</span><span class="mf">7.5</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">        <span class="n">generator</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">manual_seed</span><span class="p">(</span><span class="n">i</span> <span class="o">*</span> <span class="mi">100</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="p">)</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="n">output_path</span> <span class="o">=</span> <span class="n">output_dir</span> <span class="o">/</span> <span class="sa">f</span><span class="s2">&#34;video_</span><span class="si">{</span><span class="n">i</span><span class="si">:</span><span class="s2">03d</span><span class="si">}</span><span class="s2">.mp4&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="n">output</span><span class="o">.</span><span class="n">frames</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">output_path</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="n">elapsed</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="o">-</span> <span class="n">start_time</span>
</span></span><span class="line"><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;✅ 已保存: </span><span class="si">{</span><span class="n">output_path</span><span class="si">}</span><span class="s2"> (耗时: </span><span class="si">{</span><span class="n">elapsed</span><span class="o">/</span><span class="mi">60</span><span class="si">:</span><span class="s2">.1f</span><span class="si">}</span><span class="s2"> 分钟)&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;</span><span class="se">\n</span><span class="s2">🎉 批量生成完成！共 </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">prompts</span><span class="p">)</span><span class="si">}</span><span class="s2"> 个视频&#34;</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>运行批量生成：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">python batch_generate.py
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="step-6-高级参数控制">Step 6: 高级参数控制</h3>
<p>创建 <code>advanced_config.py</code>：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span><span class="lnt">45
</span><span class="lnt">46
</span><span class="lnt">47
</span><span class="lnt">48
</span><span class="lnt">49
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="ch">#!/usr/bin/env python3</span>
</span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;
</span></span></span><span class="line"><span class="cl"><span class="s2">高级参数配置示例
</span></span></span><span class="line"><span class="cl"><span class="s2">&#34;&#34;&#34;</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">torch</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">diffusers</span> <span class="kn">import</span> <span class="n">DiffusionPipeline</span><span class="p">,</span> <span class="n">DPMSolverMultistepScheduler</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 加载模型</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span> <span class="o">=</span> <span class="n">DiffusionPipeline</span><span class="o">.</span><span class="n">from_pretrained</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;~/.cache/huggingface/hub/minimax-video-01&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">torch_dtype</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">float16</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">variant</span><span class="o">=</span><span class="s2">&#34;fp16&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 更换调度器（可选，影响生成质量和速度）</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">scheduler</span> <span class="o">=</span> <span class="n">DPMSolverMultistepScheduler</span><span class="o">.</span><span class="n">from_config</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">pipe</span><span class="o">.</span><span class="n">scheduler</span><span class="o">.</span><span class="n">config</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">enable_model_cpu_offload</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">enable_attention_slicing</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 高级配置</span>
</span></span><span class="line"><span class="cl"><span class="n">prompt</span> <span class="o">=</span> <span class="s2">&#34;一个魔法师施展火焰魔法，火焰在空中旋转形成龙的形状&#34;</span>
</span></span><span class="line"><span class="cl"><span class="n">negative_prompt</span> <span class="o">=</span> <span class="s2">&#34;静止，模糊，低质量，人物变形，画面破碎&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">output</span> <span class="o">=</span> <span class="n">pipe</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">prompt</span><span class="o">=</span><span class="n">prompt</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">negative_prompt</span><span class="o">=</span><span class="n">negative_prompt</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="c1"># 视频参数</span>
</span></span><span class="line"><span class="cl">    <span class="n">num_frames</span><span class="o">=</span><span class="mi">49</span><span class="p">,</span>      <span class="c1"># 总帧数</span>
</span></span><span class="line"><span class="cl">    <span class="n">height</span><span class="o">=</span><span class="mi">480</span><span class="p">,</span>         <span class="c1"># 高度</span>
</span></span><span class="line"><span class="cl">    <span class="n">width</span><span class="o">=</span><span class="mi">720</span><span class="p">,</span>          <span class="c1"># 宽度</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="c1"># 生成参数</span>
</span></span><span class="line"><span class="cl">    <span class="n">num_inference_steps</span><span class="o">=</span><span class="mi">50</span><span class="p">,</span>    <span class="c1"># 推理步数（质量）</span>
</span></span><span class="line"><span class="cl">    <span class="n">guidance_scale</span><span class="o">=</span><span class="mf">9.0</span><span class="p">,</span>        <span class="c1"># CFG 强度（越高越严格）</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="c1"># 随机性控制</span>
</span></span><span class="line"><span class="cl">    <span class="n">generator</span><span class="o">=</span><span class="n">torch</span><span class="o">.</span><span class="n">manual_seed</span><span class="p">(</span><span class="mi">42</span><span class="p">),</span>
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">    <span class="c1"># 回调函数（监控进度）</span>
</span></span><span class="line"><span class="cl">    <span class="n">callback_on_step_end</span><span class="o">=</span><span class="k">lambda</span> <span class="n">pipe</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="n">callback_kwargs</span><span class="p">:</span> 
</span></span><span class="line"><span class="cl">        <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;Step </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">pipe</span><span class="o">.</span><span class="n">num_timesteps</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span> <span class="ow">or</span> <span class="n">callback_kwargs</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">output</span><span class="o">.</span><span class="n">frames</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="s2">&#34;output_advanced.mp4&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="s2">&#34;✅ 高级配置视频已生成&#34;</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="实际体验">实际体验</h3>
<p>VideoPipe 在 M5 Pro (48GB) 上的表现：</p>
<table>
	<thead>
			<tr>
					<th>方案</th>
					<th>生成时间</th>
					<th>内存峰值</th>
					<th>灵活性</th>
					<th>备注</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>ComfyUI</td>
					<td>~8 分钟</td>
					<td>26GB</td>
					<td>⭐⭐⭐⭐</td>
					<td>可视化友好</td>
			</tr>
			<tr>
					<td>VideoPipe</td>
					<td>~9 分钟</td>
					<td>24GB</td>
					<td>⭐⭐⭐⭐⭐</td>
					<td>更多控制</td>
			</tr>
	</tbody>
</table>
<p>VideoPipe 稍慢一点，但内存占用更低，提供了更多控制选项。</p>
<blockquote>
<p><strong>M5 Pro 提示</strong>：新架构对 Python 推理优化很好，VideoPipe 的性能提升比 ComfyUI 更明显。</p>
</blockquote>
<hr>
<h2 id="两种方案对比">两种方案对比</h2>
<table>
	<thead>
			<tr>
					<th>维度</th>
					<th>ComfyUI</th>
					<th>VideoPipe</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>易用性</strong></td>
					<td>⭐⭐⭐⭐⭐</td>
					<td>⭐⭐⭐</td>
			</tr>
			<tr>
					<td><strong>灵活性</strong></td>
					<td>⭐⭐⭐⭐</td>
					<td>⭐⭐⭐⭐⭐</td>
			</tr>
			<tr>
					<td><strong>性能</strong></td>
					<td>⭐⭐⭐⭐⭐</td>
					<td>⭐⭐⭐⭐</td>
			</tr>
			<tr>
					<td><strong>学习曲线</strong></td>
					<td>低</td>
					<td>中等</td>
			</tr>
			<tr>
					<td><strong>适合人群</strong></td>
					<td>新手、设计师</td>
					<td>开发者、研究者</td>
			</tr>
			<tr>
					<td><strong>批量处理</strong></td>
					<td>需手动</td>
					<td>脚本自动化</td>
			</tr>
			<tr>
					<td><strong>可视化</strong></td>
					<td>实时预览</td>
					<td>无</td>
			</tr>
			<tr>
					<td><strong>集成能力</strong></td>
					<td>插件生态</td>
					<td>Python API</td>
			</tr>
	</tbody>
</table>
<p><strong>我的建议</strong>：</p>
<ul>
<li>想快速上手、可视化 → ComfyUI</li>
<li>想深入研究、自动化 → VideoPipe</li>
<li>实际使用中可以两者结合</li>
</ul>
<hr>
<h2 id="实用技巧与优化">实用技巧与优化</h2>
<h3 id="1-加速模型下载">1. 加速模型下载</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 使用国内镜像</span>
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">HF_ENDPOINT</span><span class="o">=</span>https://hf-mirror.com
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 或者使用代理</span>
</span></span><span class="line"><span class="cl"><span class="nb">export</span> <span class="nv">ALL_PROXY</span><span class="o">=</span>http://127.0.0.1:7890
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 断点续传</span>
</span></span><span class="line"><span class="cl">huggingface-cli download MiniMaxAI/MiniMax-Video-01 --resume-download
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="2-内存优化">2. 内存优化</h3>
<p>如果内存不够：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 启用 CPU 卸载</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">enable_model_cpu_offload</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 启用注意力切片（减少显存）</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">enable_attention_slicing</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 启用 VAE 切片</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">enable_vae_slicing</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 减少帧数和分辨率</span>
</span></span><span class="line"><span class="cl"><span class="n">num_frames</span><span class="o">=</span><span class="mi">25</span>  <span class="c1"># 从 49 减到 25</span>
</span></span><span class="line"><span class="cl"><span class="n">height</span><span class="o">=</span><span class="mi">360</span>     <span class="c1"># 从 480 减到 360</span>
</span></span><span class="line"><span class="cl"><span class="n">width</span><span class="o">=</span><span class="mi">540</span>      <span class="c1"># 从 720 减到 540</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="3-提升生成质量">3. 提升生成质量</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 增加推理步数</span>
</span></span><span class="line"><span class="cl"><span class="n">num_inference_steps</span><span class="o">=</span><span class="mi">100</span>  <span class="c1"># 从 50 增加到 100</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 提高 CFG 强度</span>
</span></span><span class="line"><span class="cl"><span class="n">guidance_scale</span><span class="o">=</span><span class="mf">9.0</span>  <span class="c1"># 从 7.5 提高到 9.0</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 使用更好的调度器</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">diffusers</span> <span class="kn">import</span> <span class="n">DPMSolverMultistepScheduler</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">scheduler</span> <span class="o">=</span> <span class="n">DPMSolverMultistepScheduler</span><span class="o">.</span><span class="n">from_config</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">pipe</span><span class="o">.</span><span class="n">scheduler</span><span class="o">.</span><span class="n">config</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="4-监控资源使用">4. 监控资源使用</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 1. Activity Monitor（活动监视器）</span>
</span></span><span class="line"><span class="cl">open -a <span class="s2">&#34;Activity Monitor&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 2. htop</span>
</span></span><span class="line"><span class="cl">brew install htop
</span></span><span class="line"><span class="cl">htop
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 3. 实时内存监控</span>
</span></span><span class="line"><span class="cl">watch -n <span class="m">1</span> <span class="s1">&#39;ps aux | grep python | grep -v grep&#39;</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="5-常见问题排查">5. 常见问题排查</h3>
<h4 id="问题内存不足崩溃">问题：内存不足崩溃</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span><span class="lnt">9
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 解决方案 1：启用所有内存优化</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">enable_model_cpu_offload</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">enable_attention_slicing</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">pipe</span><span class="o">.</span><span class="n">enable_vae_slicing</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 解决方案 2：减小生成尺寸</span>
</span></span><span class="line"><span class="cl"><span class="n">height</span><span class="o">=</span><span class="mi">360</span>
</span></span><span class="line"><span class="cl"><span class="n">width</span><span class="o">=</span><span class="mi">540</span>
</span></span><span class="line"><span class="cl"><span class="n">num_frames</span><span class="o">=</span><span class="mi">25</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="问题生成速度慢">问题：生成速度慢</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 减少推理步数（牺牲一点质量）</span>
</span></span><span class="line"><span class="cl"><span class="n">num_inference_steps</span><span class="o">=</span><span class="mi">25</span>  <span class="c1"># 从 50 减少</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 减少帧数</span>
</span></span><span class="line"><span class="cl"><span class="n">num_frames</span><span class="o">=</span><span class="mi">25</span>  <span class="c1"># 从 49 减少</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="问题生成结果不理想">问题：生成结果不理想</h4>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># 调整参数组合</span>
</span></span><span class="line"><span class="cl"><span class="n">guidance_scale</span><span class="o">=</span><span class="mf">8.5</span>     <span class="c1"># CFG 强度</span>
</span></span><span class="line"><span class="cl"><span class="n">num_inference_steps</span><span class="o">=</span><span class="mi">75</span>  <span class="c1"># 推理步数</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="进阶玩法">进阶玩法</h2>
<h3 id="1-视频插帧">1. 视频插帧</h3>
<p>使用 RIFE 对生成的视频进行插帧，提升流畅度：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 安装 RIFE</span>
</span></span><span class="line"><span class="cl">pip install rife-ncnn-vulkan
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 插帧到 60fps</span>
</span></span><span class="line"><span class="cl">rife-ncnn-vulkan -i output.mp4 -o output_60fps.mp4 -n <span class="m">60</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="2-视频后处理">2. 视频后处理</h3>
<p>使用 FFmpeg 优化视频：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 提升质量</span>
</span></span><span class="line"><span class="cl">ffmpeg -i output.mp4 -c:v libx264 -crf <span class="m">18</span> -preset slow output_hq.mp4
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 添加音乐</span>
</span></span><span class="line"><span class="cl">ffmpeg -i output.mp4 -i music.mp3 -c:v copy -c:a aac output_with_audio.mp4
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 循环播放</span>
</span></span><span class="line"><span class="cl">ffmpeg -stream_loop <span class="m">3</span> -i output.mp4 -c copy output_loop.mp4
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="3-批量风格转换">3. 批量风格转换</h3>
<p>创建不同风格的同一场景：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># style_transfer.py</span>
</span></span><span class="line"><span class="cl"><span class="n">styles</span> <span class="o">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;电影级画质，35mm胶片&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;宫崎骏动画风格&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;赛博朋克风格，霓虹灯&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;水彩画风格，梦幻&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="s2">&#34;黑白电影，高对比度&#34;</span>
</span></span><span class="line"><span class="cl"><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">base_prompt</span> <span class="o">=</span> <span class="s2">&#34;一只猫坐在窗台上看雨&#34;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">style</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">styles</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="n">full_prompt</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&#34;</span><span class="si">{</span><span class="n">base_prompt</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">style</span><span class="si">}</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="c1"># 生成视频...</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="4-自动化工作流">4. 自动化工作流</h3>
<p>创建监控目录，自动生成视频：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># auto_generate.py</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">time</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">pathlib</span> <span class="kn">import</span> <span class="n">Path</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">watchdog.observers</span> <span class="kn">import</span> <span class="n">Observer</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">watchdog.events</span> <span class="kn">import</span> <span class="n">FileSystemEventHandler</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">PromptHandler</span><span class="p">(</span><span class="n">FileSystemEventHandler</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="k">def</span> <span class="nf">on_created</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">event</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="n">event</span><span class="o">.</span><span class="n">src_path</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">&#39;.txt&#39;</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">            <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">event</span><span class="o">.</span><span class="n">src_path</span><span class="p">,</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">                <span class="n">prompt</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">            <span class="c1"># 自动生成视频</span>
</span></span><span class="line"><span class="cl">            <span class="n">generate_video</span><span class="p">(</span><span class="n">prompt</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 监控 prompts/ 目录</span>
</span></span><span class="line"><span class="cl"><span class="n">observer</span> <span class="o">=</span> <span class="n">Observer</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="n">observer</span><span class="o">.</span><span class="n">schedule</span><span class="p">(</span><span class="n">PromptHandler</span><span class="p">(),</span> <span class="s2">&#34;prompts/&#34;</span><span class="p">,</span> <span class="n">recursive</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">observer</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
</span></span></code></pre></td></tr></table>
</div>
</div><hr>
<h2 id="总结">总结</h2>
<p>折腾了三天，总结几点心得：</p>
<h3 id="-成功经验">✅ 成功经验</h3>
<ol>
<li><strong>M5 Pro 很给力</strong>：48GB 内存跑起来很舒服，比上一代快 25%</li>
<li><strong>ComfyUI 适合快速预览</strong>：可视化界面便于调参</li>
<li><strong>VideoPipe 适合批量生成</strong>：脚本化效率更高</li>
<li><strong>提示词是关键</strong>：描述越具体，效果越好</li>
<li><strong>耐心很重要</strong>：每个视频 8-15 分钟是常态</li>
</ol>
<h3 id="-注意事项">⚠️ 注意事项</h3>
<ol>
<li><strong>内存占用大</strong>：至少预留 26GB 以上</li>
<li><strong>生成时间长</strong>：比图像生成慢 10 倍以上</li>
<li><strong>质量不稳定</strong>：有时需要多次尝试</li>
<li><strong>场景限制</strong>：复杂运动和多主体效果不佳</li>
<li><strong>功耗适中</strong>：M5 Pro 发热控制比上代好很多</li>
</ol>
<h3 id="-适合场景">🎯 适合场景</h3>
<ul>
<li>✅ 短视频素材生成</li>
<li>✅ 创意原型快速验证</li>
<li>✅ 学习视频生成原理</li>
<li>✅ 个人作品创作</li>
<li>❌ 商业级长视频制作</li>
<li>❌ 实时视频生成</li>
</ul>
<h3 id="-后续计划">📈 后续计划</h3>
<ul>
<li><input disabled="" type="checkbox"> 尝试 LoRA 微调</li>
<li><input disabled="" type="checkbox"> 探索视频风格迁移</li>
<li><input disabled="" type="checkbox"> 接入到视频剪辑工作流</li>
<li><input disabled="" type="checkbox"> 研究多镜头拼接</li>
</ul>
<hr>
<h2 id="参考资源">参考资源</h2>
<h3 id="官方资源">官方资源</h3>
<ul>
<li><a href="https://www.minimaxi.com/">MiniMax 官网</a></li>
<li><a href="https://github.com/MiniMaxAI/MiniMax-Video-01">Video-01 GitHub</a></li>
<li><a href="https://github.com/comfyanonymous/ComfyUI">ComfyUI 官方</a></li>
<li><a href="https://github.com/MiniMaxAI/VideoPipe">VideoPipe 文档</a></li>
</ul>
<h3 id="社区资源">社区资源</h3>
<ul>
<li><a href="https://comfyui.cn/">ComfyUI 中文社区</a></li>
<li><a href="https://huggingface.co/MiniMaxAI">Hugging Face Models</a></li>
<li><a href="https://civitai.com/">Civitai 工作流分享</a></li>
</ul>
<h3 id="实用工具">实用工具</h3>
<ul>
<li><a href="https://ffmpeg.org/">FFmpeg</a> - 视频处理</li>
<li><a href="https://github.com/megvii-research/ECCV2022-RIFE">RIFE</a> - 视频插帧</li>
<li><a href="https://github.com/xinntao/Real-ESRGAN">Real-ESRGAN</a> - 视频超分</li>
</ul>
<hr>
<h2 id="后记">后记</h2>
<p>从一个技术爱好者的角度，本地部署视频生成模型比我想象的更有挑战性。不仅要折腾环境配置，还要反复调参才能得到满意的结果。</p>
<p>但看到第一个视频在自己电脑上生成出来的那一刻，所有的等待都是值得的。</p>
<p>这份教程记录了我完整的折腾过程，包括踩过的坑和解决方案。希望能帮助到同样想要本地运行 MiniMax Video-01 的朋友。</p>
<p><strong>最后建议</strong>：</p>
<ul>
<li>第一次尝试先用 ComfyUI，熟悉基本流程</li>
<li>再深入 VideoPipe 研究细节</li>
<li>耐心是最重要的品质</li>
</ul>
<p>Happy creating! 🎬</p>
]]></content:encoded></item></channel></rss>