1. 从video-use这个标题说起它到底想解决什么问题第一次看到video-use这个标题我脑子里蹦出来的第一个念头是这大概率不是一个单纯的播放器项目而是一套围绕视频怎么被用起来的工具链。事实也确实如此。把 video-use 拆开看它要回答的核心问题很朴素——手头有一堆素材、一段文案、一个想法怎么用尽量少的重复劳动把它变成一条能发出去的视频。传统做法是什么打开剪辑软件拖时间线手动对齐字幕一段段配音导出再压一遍。一条三分钟的视频熟练工也得折腾一两个小时。而 video-use 这类项目的思路是把视频生产拆成几个可编程的环节——脚本生成、语音合成、素材拼接、字幕烧录、编码导出——每个环节交给一个专门的工具再用一层编排逻辑把它们串起来。这套链路里几个关键词反复出现Claude Code负责想和编排ffmpeg负责干重活ElevenLabs负责开口说话Remotion负责用代码画画面。它们各自解决一段拼起来就是一条自动化的视频流水线。这篇文章适合谁看如果你是会写点代码、想批量做视频的开发者或者你是做内容但被重复剪辑折磨到崩溃的运营再或者你只是好奇AI 做视频到底是怎么落地的那这篇都值得往下读。我不会只讲概念会把每一步的命令、参数、踩过的坑都摊开说。提示本文涉及的 ffmpeg、Remotion、ElevenLabs 都是通用工具具体版本和 API 可能随时间变化实操时以官方最新文档为准。2. 整体设计思路为什么是这四个工具的组合2.1 视频生产的本质是一条数据流水线很多人把做视频当成创作但从工程角度看它其实是一条数据转换流水线文本 → 音频 → 时间轴 → 画面帧 → 编码文件。每一段转换都有明确的输入输出只要接口定义清楚就能自动化。video-use 的设计哲学就是抓住这条流水线把人从每个环节里抽出来只在最需要判断的地方介入。比如脚本要不要改、配音语气对不对、画面节奏顺不顺这些交给人而字幕对齐、格式转换、批量导出全部交给机器。为什么选这四个工具而不是别的我拆开讲。2.2 Claude Code把编排这件事交给一个能读代码的助手Claude Code 在这里扮演的角色不是生成视频而是生成并执行生产视频的代码。你可以把它理解成一个坐在你终端里的工程师你说帮我把这段文案配上语音、加上字幕、导出成竖屏 1080x1920它会去写调用 ffmpeg 和 ElevenLabs 的脚本然后跑起来。选它的理由很实际视频流水线里最烦的不是某个单点操作而是胶水代码——把 A 的输出喂给 B处理路径、编码、异常。这类代码写起来枯燥、改起来频繁正好是 AI 助手最擅长的活。而且 Claude Code 能直接在你的项目目录里读写文件、执行命令省去了复制粘贴到聊天框再复制回来的来回。2.3 ffmpeg视频处理领域绕不开的瑞士军刀只要涉及视频ffmpeg 几乎无法回避。它是命令行工具能力覆盖转码、裁剪、拼接、加水印、烧字幕、抽帧、推流。video-use 里所有对视频文件动手的操作底层基本都是 ffmpeg。为什么不用图形化软件因为批量和可复现。图形软件点一次是一次ffmpeg 写一条命令就能跑一千个文件。而且命令本身就是文档下次照着跑就行不依赖某个软件的版本和界面。2.4 ElevenLabs让机器配音听起来不像机器配音是视频体验的分水岭。早期 TTS 一听就是电子音观众三秒就划走。ElevenLabs 的价值在于音色自然、情感可控、支持多语言生成出来的语音接近真人。在 video-use 里它负责把脚本文字转成音频文件再交给 ffmpeg 合成到视频里。2.5 Remotion用 React 写视频让画面也能编程Remotion 是个很有意思的东西——它让你用 React 组件来描述视频画面。也就是说视频的每一帧都是一个 React 渲染结果。好处是画面可以数据驱动。你有 100 条文案就能生成 100 条结构相同、内容不同的视频不用手动改。这四个工具的分工可以这样理解工具角色输入输出Claude Code编排者自然语言需求可执行脚本ElevenLabs配音员脚本文本音频文件Remotion画面设计师数据 组件视频帧序列ffmpeg后期工人各种素材成品视频2.6 为什么这套组合能跑通关键在于每一环都有稳定的命令行或 API 接口。Claude Code 能调命令行ffmpeg 是纯命令行ElevenLabs 有 HTTP APIRemotion 有 CLI。接口稳定意味着流水线可复现不会因为某个软件更新界面就全盘崩溃。这是选择工具时最容易被忽略、却最重要的一条标准。3. 环境准备把四个工具装到位3.1 安装 Claude Code 并接入你的工作流Claude Code 的安装方式在不同系统上略有差异。以常见的 Linux 或 macOS 环境为例通常通过包管理器或官方提供的安装脚本完成。Windows 用户如果遇到兼容性问题建议在 WSL 里操作体验会顺很多。安装完成后第一件事是在项目目录里初始化。进入你的 video-use 项目文件夹运行 Claude Code它会读取当前目录结构之后你让它写脚本、改配置它都能基于真实文件来操作而不是凭空猜。注意Claude Code 在部分区域可能不可用安装前先确认你的环境是否在支持范围内。如果提示不可用不要反复重试先解决环境问题。关于接入 DeepSeek这类需求本质是替换底层模型。做法通常是在配置里指定模型端点和密钥。这一步的坑在于不同模型对工具调用的支持程度不一样有些模型能很好地调用命令行工具有些则容易幻觉出不存在的命令。实测下来涉及大量文件操作和命令执行的任务选工具调用能力强的模型会省心很多。3.2 ffmpeg 安装别用太老的版本ffmpeg 的安装渠道很多。Windows 上常见的是下载编译好的压缩包比如带 essentials 字样的构建解压后把bin目录加到系统 PATH 里。Linux 上用包管理器一条命令搞定macOS 用 Homebrew。这里有个血泪教训不要用系统自带的老版本 ffmpeg。很多新特性比如某些硬件加速编码器、新的滤镜在老版本里根本没有你会对着文档调半天参数最后发现是版本问题。装完先跑一句确认版本ffmpeg -version如果输出里看不到你需要的编码器用ffmpeg -encoders查一下。比如你要用 GPU 加速就得确认h264_nvenc或h264_vaapi在列表里。提示重装系统后 ffmpeg 命令失效八成是 PATH 没配。把 ffmpeg 的 bin 目录重新加进环境变量重启终端即可不用重装。3.3 ElevenLabs 的 API 准备ElevenLabs 走的是 HTTP API。你需要注册账号、拿到 API Key然后把它放进环境变量别硬编码在脚本里export ELEVENLABS_API_KEY你的密钥调用时选好 voice_id音色和 model模型。音色决定了谁在说话模型决定了说得自不自然、支不支持多语言。这两个参数是配音质量的关键后面会细讲。3.4 Remotion 项目初始化Remotion 是个 Node 项目初始化方式类似常见的脚手架npx create-videolatest它会生成一个带示例组件的项目结构。核心目录里每个视频就是一个 React 组件你用Sequence、AbsoluteFill这些内置组件来编排画面和时间。跑npx remotion studio能在浏览器里实时预览改代码即时刷新调试体验很好。3.5 把四个工具串起来的目录结构我习惯这样组织项目清晰且好维护video-use/ ├── scripts/ # Claude Code 生成的编排脚本 ├── audio/ # ElevenLabs 生成的配音 ├── assets/ # 图片、背景音乐、logo ├── remotion/ # Remotion 画面工程 ├── output/ # ffmpeg 导出的成品 └── config.json # 音色、分辨率、路径等参数把参数抽到config.json里好处是换一个视频项目时只改配置不动脚本。这是从能跑到好用的关键一步。4. 核心环节实操从文案到成片4.1 第一步用 Claude Code 生成生产脚本假设我手上有一段 300 字的文案想做一条竖屏短视频。我会直接对 Claude Code 说读一下 config.json把 script.txt 里的文案用 ElevenLabs 转成配音保存到 audio/ 目录然后用 ffmpeg 把配音和 assets 里的背景视频合成烧上字幕导出竖屏 1080x1920 的 mp4 到 output/。Claude Code 会去读文件、写脚本、执行。这里的关键是把需求说清楚输入在哪、输出到哪、什么格式、要不要字幕。说得越具体它写的脚本越接近你要的。它生成的脚本大概长这样示意import os, json, requests, subprocess cfg json.load(open(config.json)) text open(script.txt).read() # 1. 调 ElevenLabs 生成配音 resp requests.post( fhttps://api.elevenlabs.io/v1/text-to-speech/{cfg[voice_id]}, headers{xi-api-key: os.environ[ELEVENLABS_API_KEY]}, json{text: text, model_id: cfg[tts_model]}, ) open(audio/voice.mp3, wb).write(resp.content) # 2. ffmpeg 合成 subprocess.run([ ffmpeg, -y, -i, assets/bg.mp4, -i, audio/voice.mp3, -vf, scale1080:1920:force_original_aspect_ratioincrease,crop1080:1920, -shortest, output/final.mp4 ])这段脚本不复杂但把整条链路串起来了。注意-shortest参数它让输出时长以最短的输入为准避免背景视频比配音长导致结尾拖沓。4.2 第二步配音参数怎么调才自然ElevenLabs 的配音质量八成取决于三个参数voice_id、model_id、stability。voice_id音色。中文内容建议选支持中文的音色否则会有奇怪的口音。model_id模型。多语言模型适合中英混排纯中文内容用专门的模型可能更自然。stability稳定性。数值低语气起伏大、更有感情但可能不稳定数值高平稳但偏机械。做口播类内容我一般调到中间偏下。还有一个容易忽略的点文本预处理。数字、英文缩写、标点直接丢给 TTS 经常读错。比如2024可能被读成两千零二十四AI可能被逐字母念。稳妥做法是在送进 TTS 前把文本里的数字和缩写替换成你想要的读法。这一步用 Claude Code 写个简单的替换脚本就能搞定。实操心得先拿一小段文本试音确认音色和读法没问题再批量生成。批量跑完才发现音色不对返工成本很高。4.3 第三步ffmpeg 合成与字幕烧录ffmpeg 合成是整条链路里参数最多、最容易出错的一环。我把它拆成几个常见操作。画面缩放与裁剪竖屏视频要把横屏素材填满用scale加crop组合ffmpeg -i input.mp4 -vf scale1080:1920:force_original_aspect_ratioincrease,crop1080:1920 output.mp4force_original_aspect_ratioincrease保证画面铺满不拉伸crop再把多余部分裁掉。烧录字幕把 srt 字幕烧进画面ffmpeg -i input.mp4 -vf subtitlessub.srt:force_styleFontSize24,PrimaryColourHFFFFFF output.mp4force_style里能调字号、颜色、描边。中文字幕常见问题是字体缺失导致方块需要在系统里装好中文字体或者用fontsdir指定字体目录。音频替换与混音把原视频静音、换成配音ffmpeg -i video.mp4 -i voice.mp3 -map 0:v -map 1:a -c:v copy -shortest output.mp4-map 0:v -map 1:a明确指定视频取第一个文件、音频取第二个文件-c:v copy表示视频流不重新编码速度快、画质无损。格式转换比如把 m3u8 转成 mp4ffmpeg -i input.m3u8 -c copy output.mp4-c copy直接复制流不转码几秒就能完成。4.4 第四步用 Remotion 做数据驱动的画面如果视频画面是固定的模板、只是文字和图片在变Remotion 就派上用场了。你写一个组件接收数据作为 propsRemotion 就能批量渲染出 N 条视频。一个最简单的字幕组件示意import { AbsoluteFill, useCurrentFrame } from remotion; export const Caption ({ text }) { const frame useCurrentFrame(); return ( AbsoluteFill style{{ justifyContent: flex-end, alignItems: center }} div style{{ fontSize: 48, color: #fff, opacity: frame 10 ? 1 : 0 }} {text} /div /AbsoluteFill ); };useCurrentFrame()拿到当前帧号你可以据此做淡入淡出、位移等动画。渲染命令npx remotion render Caption out/video.mp4Remotion 的优势在于画面逻辑和内容分离。改文案不用碰组件改样式不用碰数据。做系列化内容时这个特性省下的时间非常可观。4.5 第五步导出参数与画质权衡导出时最纠结的是画质和体积的平衡。核心参数是 CRF恒定质量因子ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k output.mp4CRF数值越小画质越好、体积越大。18 接近无损23 是默认平衡点28 以上明显糊。短视频平台一般 20-23 就够。preset编码速度与压缩率的权衡。medium是平衡点slow压得更小但更慢fast反之。音频码率口播类 128k 足够音乐类可以上 192k。注意如果目标平台会二次压缩你导出时画质留点余量别压得太狠否则平台再压一遍就糊成一片。5. 常见问题与排查技巧实录5.1 ffmpeg 报错速查表ffmpeg 的报错信息往往很硬核新手容易懵。我把常见的整理成表报错关键词常见原因解决方向Invalid argument参数拼写错、滤镜语法错逐段检查滤镜链逗号冒号别混No such filter版本不支持该滤镜升级 ffmpeg 或换等价滤镜Unknown encoder编码器未编译进版本换编码器或换构建版本moov atom not found文件损坏或未完整下载重新获取源文件Fontconfig error字幕字体缺失安装字体或指定 fontsdir5.2 字幕不同步怎么办字幕和配音对不上是自动化流程里最常见的问题。原因通常有三类TTS 实际时长和预估不符、字幕切分粒度和语音不匹配、帧率不一致。排查顺序先用ffprobe看音频真实时长再检查字幕文件的时间戳。如果字幕是按字数平均切的那基本对不准——语音的停顿和文字长度不成正比。稳妥做法是让 TTS 返回逐词时间戳很多 TTS 服务支持再据此生成字幕对齐精度会高很多。5.3 推流延迟问题有人会问 ffmpeg 推流到流媒体服务器延迟高怎么办。延迟来源通常是编码缓冲、GOP 长度、传输协议。降低延迟的思路缩短 GOP关键帧间隔、减小编码缓冲、用低延迟的传输方式。但要注意延迟和稳定性是跷跷板压得太狠容易卡顿。具体参数得根据网络环境实测调。5.4 Claude Code 用不顺的几个坑命令幻觉模型可能编出不存在的命令。养成习惯第一次跑新脚本时先看它要执行什么别直接放行。路径问题相对路径和绝对路径混用容易出错。统一用项目根目录的相对路径或在配置里定义基准目录。上下文丢失长任务里模型可能忘记前面的约定。把关键约定写进项目里的说明文件让它每次都能读到。5.5 批量生产的稳定性技巧批量跑一百条视频最怕跑到第 80 条崩了。我的做法是每条视频独立成任务失败不影响其他中间产物落盘配音、字幕都存文件崩了能从断点续跑加日志每条任务的输入输出和耗时都记下来出问题好定位。实操心得批量任务先拿 3 条试跑确认全流程没问题再放量。省下的返工时间远超试跑成本。6. 工具选型的取舍与扩展方向6.1 什么场景适合这套方案这套 video-use 流水线最适合结构化、可模板化的视频口播、知识科普、产品介绍、数据播报。这类视频画面规律、文案驱动自动化收益最大。反过来强创意、强剪辑节奏的内容比如影视混剪、复杂转场目前还是人工更靠谱。工具能帮你省掉重复劳动但替代不了审美判断。6.2 各环节的可替换方案工具不是绑死的。配音除了 ElevenLabs也有其他 TTS 可选画面除了 Remotion也能用 ffmpeg 直接拼图编排除了 Claude Code也能自己写脚本。选型的核心标准就一条接口稳定、可脚本化。只要满足这条换谁都行。6.3 性能与成本考量批量生产时成本主要来自两块TTS 调用费用和渲染算力。TTS 按字符计费文案越长越贵所以脚本要精炼。渲染方面Remotion 渲染吃 CPU量大时可以考虑分布式渲染或云渲染。ffmpeg 编码如果支持硬件加速NVENC、VAAPI速度能提升数倍值得配置。6.4 后续可以怎么扩展这套流水线跑通后能往上叠的东西很多接入数据源自动生成文案、根据热点自动选题、多语言版本一键生成、A/B 测试不同封面。核心思路不变——把重复的环节自动化把判断的环节留给人。我自己跑下来最大的体会是别一上来就追求全自动。先把单个环节跑通、跑稳再逐步串联。每一步都验证过整条链路才可靠。急着一步到位往往卡在某个不起眼的参数上耗掉一整天。