SRT字幕烧录实战:用 Rendi 自动生成带字幕 MP4

用 Rendi 把审核通过的 SRT字幕永久烧录进 MP4。本文从 FFmpeg API 提交、字幕样式和异步任务状态讲到输出验收与字节计费,解释硬字幕与可选字幕轨该怎么选,并给出可直接运行的 Node.js 示例、轮询与 webhook 做法,以及批量处理前的必做检查,适合把字幕渲染接入自动化流程的内容团队与机构。

Friday, September 11, 2026Omid Saffari
SRT字幕烧录实战:用 Rendi 自动生成带字幕 MP4

把审核通过的视频和校对完成的 SRT字幕制作为带字幕的 MP4,无需在自己的基础设施中部署视频处理节点。Rendi 可以把常规 FFmpeg 字幕滤镜作为 API 任务执行:提交后会返回 command ID,渲染成功后即可取得已存储的输出文件。这里的边界很明确:它只负责把现有字幕烧进画面像素,不会转写语音,也不会判断字幕内容是否正确。

先说结论:SRT字幕该烧录还是外挂?

如果无论播放器如何处理字幕轨,每位观众都必须看到相同字幕,就应当烧录 SRT。若观众需要关闭字幕、切换语言或使用播放器的无障碍控制,则应保留独立 SRT。

使用 Rendi 时,可靠的流程是:

  1. 对照检查最终视频与 SRT。
  2. 将两个文件放在 Rendi 能抓取的 URL 上,或先把本地文件上传到 Rendi。
  3. 提交文档规定的 FFmpeg 字幕命令。
  4. 轮询 command ID,或通过 webhook 接收最终结果。
  5. 在继续提交更多任务前,检查 MP4 元数据并完整观看输出。

这个顺序很重要。即使编码成功,只要字幕提前出现、人名写错,或文字被平台界面遮住,成片依然不合格。

建筑式流程图:VIDEO 与 SRT 进入 POST 阶段,随后显示 SUCCESS 并输出 MP4
Rendi 将两个已审核输入转成异步 FFmpeg 任务,并在任务达到 SUCCESS 后提供完成的 MP4。

Rendi 实际负责什么

Rendi 负责执行,不负责编辑。你提交的仍是本来会在本地运行的 FFmpeg 指令,只是改为通过 HTTP API 执行。可以把一次请求理解成加工单:输入别名告诉机器原料在哪里,FFmpeg 字符串规定要做什么,输出别名则为成品命名。

当前请求结构要求提供 ffmpeg_command 和 output_files。输入键必须以 in_ 开头,输出键必须以 out_ 开头,这些名称还要以双花括号形式出现在命令中。提交成功后会返回 command_id,它就是这项任务的取件凭证。

最简单的做法,是把视频和 SRT 放在公开 HTTP URL 或有时限的签名 HTTP URL 上,并让文件名出现在 URL 末尾。笔记本电脑上的本地路径不能充当输入 URL。Rendi 也提供用于本地文件的 multipart 直接上传流程,支持最大 5 TB 的文件,但那是另一个准备步骤。

烧录字幕与可选字幕轨是两种交付物

烧录字幕会成为每一帧解码画面的一部分。它的显示效果更可控,但这个决定也是永久的:改一个错别字就要重新渲染视频,观众也无法隐藏字幕。

可选字幕轨与画面保持分离。Rendi 自己的字幕示例建议在 MP4 中使用 mov_text 作为软字幕轨,并省略视频滤镜。这样既保留观众的控制权,也不会把文字烙进画面。

建筑式对比图:一侧是嵌入视频画面的烧录字幕,另一侧是作为独立轨道保存的可选字幕
烧录字幕意味着始终显示(ALWAYS ON),可选字幕意味着可以切换(CAN TOGGLE)。渲染前先确定交付方式。

我的判断标准很直接:如果必须保证视觉一致,就为审核母版或社交平台交付文件烧录字幕。同时保留原始 SRT;凡是涉及无障碍、搜索、翻译或观众选择的场景,都应提供可选字幕轨或外挂字幕文件。

花钱渲染前,先把 SRT 查清楚

最省钱的渲染,就是无需重做的那一次。请用 SRT 对照最终剪辑版,而不是更早的导出版本。逐项确认字幕顺序、起止时间、人名和数字的拼写、刻意安排的换行,以及有代表性的重音字符或非拉丁字符。还要留意字幕是否撞上画面下方的图文条,或离底边太近。

不要在心里把 AI 转写混进这个步骤。语音识别可以在上游生成 SRT 初稿,但只有文字与时间轴经过人工或可信审核流程批准后,文件才应进入这里。Rendi 在这个环节只负责渲染。

用 Rendi 提交带样式的 SRT字幕烧录任务

下面的 Node.js 示例使用 Rendi 的公开视频样本和 SRT 样本,因此运行时只需要 RENDI_API_KEY。请求体采用 Rendi 当前 OpenAPI 中的字段名和别名规则。force_style 会生成带黑色描边和底部边距的白色字幕,libx264 与 AAC 则按 Rendi 的字幕方案输出 MP4。

JavaScript
const headers = {
  "X-API-KEY": process.env.RENDI_API_KEY,
  "Content-Type": "application/json",
};

const submit = await fetch("https://api.rendi.dev/v1/run-ffmpeg-command", {
  method: "POST",
  headers,
  body: JSON.stringify({
    input_files: {
      in_video: "https://storage.rendi.dev/sample/big_buck_bunny_720p_16sec.mp4",
      in_srt: "https://storage.rendi.dev/sample/subtitles.srt",
    },
    output_files: { out_1: "subtitled.mp4" },
    ffmpeg_command:
      "-i {{in_video}} -vf \"subtitles={{in_srt}}:force_style='FontSize=22,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,BorderStyle=1,Outline=2,Shadow=0,MarginV=36'\" -c:v libx264 -crf 20 -c:a aac -b:a 192k {{out_1}}",
  }),
});

if (!submit.ok) throw new Error(await submit.text());
const { command_id } = await submit.json();

for (;;) {
  const poll = await fetch(
    `https://api.rendi.dev/v1/commands/${command_id}`,
    { headers: { "X-API-KEY": process.env.RENDI_API_KEY } },
  );
  const job = await poll.json();
  if (job.status === "SUCCESS") {
    console.log(job.output_files.out_1);
    break;
  }
  if (job.status === "FAILED") throw new Error(job.error_message);
  await new Promise((resolve) => setTimeout(resolve, 2000));
}

字幕滤镜会改动画面帧,因此必须重新编码视频。样式、编码器和质量都可以调整,但每次改动都应视为新的输出,并重新验收。Rendi 官方的 FFmpeg 速查表还说明了如何通过 fontsdir 与 FontName 使用自定义字体。批量应用前,务必用实际字体和字形集合进行测试。

实际验证了什么

2026 年 9 月 11 日,上述 API 端点、请求字段、别名规则、状态值和响应字段均对照 Rendi 当前的 OpenAPI 文件完成检查。同一个字幕滤镜也在本地使用 FFmpeg 8.0.1,针对 Rendi 的公开视频和 SRT 样本实际运行过。最终生成了一段 16 秒、1280 × 720 的 MP4,视频为 H.264、音频为 AAC;视频第 5 秒的一帧中可以清楚看到预期字幕。

由于当前环境没有 Rendi API key,因此没有提交 Rendi 云端任务。代码已按请求结构核对,FFmpeg 操作也已在本地验证,但本文不声称完成过云端执行。

短任务用轮询,长任务用 webhook

Rendi 的状态端点可能返回 QUEUED、PROCESSING、PREPARED_FFMPEG_COMMAND、FAILED 或 SUCCESS。POST 被接受并不代表视频已经完成。必须等待最终状态;失败时显示 error_message,成功后再读取输出。

Rendi 建议,对预计约 30 秒或更短的任务使用轮询,更长的任务则使用 webhook。webhook 携带的已完成命令数据与轮询相同。用于生产环境时,完成处理器应保持幂等、快速返回;如果 webhook 最终投递失败,还要保留轮询作为恢复路径。

敏感输出可以在付费套餐中设置 is_private: true,并在轮询时申请预签名 URL。默认使用公开存储。私有文件没有永久公开 URL,申请的下载链接最长只能有效 7 天。

批量处理前,先验收输出

SUCCESS 只证明 FFmpeg 已经完成,并不证明字幕合格。机器可读的响应和实际画面都要检查。

先确认 output_files.out_1 存在,而且其中的 storage_url 可以打开。把返回的时长、尺寸、编码和文件格式与交付目标逐一核对。然后完整观看视频,重点检查第一条字幕、最后一条字幕、语速最快的对话、换行、人名、数字,以及剪辑点或图形叠加附近的字幕。

通过这轮审核后,才能把同一套样式预设送进队列。把源视频版本、SRT 版本、FFmpeg 命令、Rendi command ID、输出文件 ID 和审核决定存放在一起。这样才能把零散的渲染结果变成一套生产系统。

成本看字节,不看时长

Rendi 按输入媒体与输出媒体的合计大小计量。它的价格示例把 1 GB 输入加 0.5 GB 输出计为 1.5 GB 处理量。严格按这个示例计算,Free 套餐的 50 GB 额度可以完成 33 个完整任务,并剩余 0.5 GB;入门 Pro 套餐的 250 GB 则可完成 166 个完整任务,并剩余 1 GB。

建筑式字节预算算式:1 GB 输入加 0.5 GB 输出等于使用 1.5 GB,旁边列出 Free 50 GB 与 Pro 250 GB 额度
Rendi 计量其读取与写出的字节数。只看视频时长无法判断成本。

这些任务数量只是根据 Rendi 示例得出的算术结果,并非字幕处理基准数据。真实的字幕烧录 MP4 可能更大,也可能更小,取决于源文件、编码设置和输出。预测处理量前,应先测量自己的输入加输出总量。

Free 套餐每月 $0,包含 50 GB 处理量,单条命令的运行上限为 1 分钟。入门 Pro 套餐每月 $25,包含 250 GB,并把单条命令上限提高到 10 分钟。Rendi 完整价格解析已经介绍了更高 CPU 配置和不限运行时长的方案,这里无需重复整张价格表。

真正值得比较的是操作方式。Kapwing Pro 按年付费时标价为每位成员每月 $16,按月付费则是 $24。偶尔处理一个视频,图形化编辑器更省事;如果字幕收尾已经成为一项可重复的系统步骤,由已批准素材触发并全程留痕,而且无需再让人打开编辑器,Rendi 就更合适。

最值得自动化的 7 类工作流

最适合的并非所有需要添加字幕的人,而是已经有审核通过的 SRT,并不断重复最终渲染的团队。

排名最受益的团队具体工作流价值所在
1持续发布短视频的社交内容团队批准转写稿,应用已保存的字幕样式,在每次最终剪辑完成后渲染 MP4,再把结果送审省去反复上传、设定样式、导出和下载,同时让各平台版本保持一致的视觉效果
2交付审核母版的本地化机构将每种语言已批准的 SRT 与同一源视频配对,分别烧录审核 MP4,并保留原始字幕文件客户可以按观众最终看到的效果检查时间与位置,机构则保留可编辑的语言资产
3课程库持续扩大的课程运营方课程母版与 SRT 获批后触发带字幕衍生版本,再核对返回的时长与尺寸把字幕收尾变成受控发布步骤,不必为每节课手动操作编辑器
4剪辑视频片段的播客工作室把内容复用队列中已批准的片段和已修正的 SRT 送入同一字幕预设编辑可以把精力放在开头吸引力和剪辑上,而不是重复最后的字幕导出
5维护产品演示的支持团队每当已批准的脚本或界面录屏发生变化,就重新渲染带字幕的演示可以用源文件、字幕版本、command ID 和审核后输出追踪每次修改
6使用 n8n、Make 或 Zapier 搭建流程的自动化机构从工作流提交 Rendi 任务,通过轮询或 webhook 等待,再把已存储 URL 传给下一个已批准步骤无需在受限的自动化运行环境中执行 FFmpeg,也能加入媒体处理能力
7调取历史素材的媒体团队找到正确的源片段,附上已批准的 SRT,生成固定字幕审核版或社交平台版本把素材检索连接到交付,又不混淆搜索与渲染;检索部分可参阅 Reelback 评测

值得做的 3 个产品

1. 品牌安全的批量字幕收尾工具

这是最值得做的产品方向。可以为内容团队和机构搭建一个目标单一的门户:接收视频 URL、已批准 SRT、命名的样式预设,提供审核页面与可下载 MP4。产品卖的是可重复执行与审批能力,而不是一个无所不包的编辑器。

美国每月约有 1,900 次搜索指向 add subtitles to a video,而 Kapwing Pro 按年付费时每位成员每月起价为 $16。这类需求足以带来用户,反复出现的团队工作流又足够具体,可以支撑一款聚焦的产品。

最小可售版本需要签名 URL 输入、SRT 校验、少量锁定的品牌预设、Rendi 任务提交、webhook 处理、输出元数据,以及人工接受或拒绝。难点在于建立壁垒:给一次 FFmpeg 调用套个表单很容易被复制,持久价值必须来自审批历史、可复用品牌规则、版本匹配和可靠的故障恢复。

2. 自动化优先的字幕渲染 API

面向不想让客户接触 FFmpeg 语法的机构,提供一个稳定的 API 端点。客户发送视频 URL、SRT URL、预设名称和回调 URL;服务把预设转换成经过审核的命令,并返回标准化任务结果。

Burn subtitles into video 在美国每月有 40 次搜索,CPC 为 $8.16。搜索量很小,但意图异常明确。PAA 问题“怎样把 SRT字幕永久烧录进视频?”几乎就是一份产品需求。

MVP 需要身份验证、请求校验、Rendi 任务映射、幂等键、webhook 验证、可安全重试的状态和用量记录。难点在分发:单靠搜索无法支撑业务,而且 Rendi 已经开放底层 API。这层封装必须靠机构集成、预设、可观测性和支持服务胜出。

3. 字幕预检与双版本交付

搭建一道审核关卡,用一份 SRT 对照一份最终视频,然后从获批的文件组合中同时生成烧录字幕的审核 MP4,以及带可选字幕轨的交付 MP4。目标客户是经常无法对应字幕版本与剪辑版本的本地化、培训或媒体运营团队。

真实的 PAA 问题“怎样给视频添加 SRT字幕?”与当前搜索结果中反复出现的永久字幕和可选字幕混淆并列。这个产品同时解决两类任务,不必再让操作者独自处理容器格式的细节。

MVP 需要字幕段解析、时长对比、安全区域预览、版本 ID、两套受控 FFmpeg 方案,以及签核记录。难点在于:基础 SRT 校验只是一项功能,不足以独立成为一家公司。审核历史与交付控制必须有足够价值,才能让团队把产品留在发布流程里。

局限与客观看法

Rendi 让这套流程不必自行维护 FFmpeg 基础设施,却没有免除编辑责任。它不会修正转写稿、修复错误时间轴、选择易读的换行,也不会判断烧录字幕是否是正确的无障碍格式。

它也无法让烧录过程无损。字幕滤镜会改变视频帧,所以视频必须重新编码。质量、运行时间和输出大小都取决于命令与源文件。API 默认安全上限为 300 秒,套餐则决定你能申请的最大值。长任务或计算密集型任务,需要选择命令运行时长上限能够容纳实际编码过程的套餐。

如果只是偶尔处理一个视频,而且免费的浏览器工具已经能解决问题,就不要采用这条路径。需要观众开关字幕时,也不要烧录。未经审核的样式更不能批量运行。只有当同一套已批准的收尾规则必须可靠地作用于大量素材时,Rendi 才真正有吸引力。

下一步:先跑通一个样片

选择一段较短、已经批准的视频及其最终 SRT。把两个文件放到可抓取的 URL 上,使用选定样式运行示例请求,检查返回的元数据,再在你支持的最小屏幕上完整观看 MP4。审核通过后才能把这条命令保存成预设,然后将预设接入现有工作流中标记“视频和字幕已批准”的节点。

怎样把 SRT字幕永久烧录进视频?

使用 FFmpeg 的 subtitles 视频滤镜,把文字渲染到每一帧中,再编码一个新视频。在 Rendi 中,把源视频和 SRT 映射到 in_ 别名,把 MP4 文件名映射到 out_ 别名,提交命令并等待 SUCCESS,之后再下载并审核。

怎么把字幕烧进视频?

先准备最终视频和已批准的字幕文件。如果文字必须始终可见,就使用烧录命令;如果观众应当控制字幕,则选择可选字幕轨。在 Rendi 中,文档给出的烧录方式使用 -vf subtitles={{in_srt}},并重新编码视频。

怎样给视频添加 SRT字幕?

可以把 SRT 烧进画面像素,也可以把它作为独立字幕轨附加到视频中。烧录能在各处保持固定显示效果,但无法关闭;软字幕轨则保持可编辑、可选择。Rendi 的文档分别使用 subtitles 滤镜实现烧录,以及用 mov_text 创建可选 MP4 字幕轨。

如何用 HandBrake 把字幕烧进视频?

HandBrake 提供桌面界面,可以导入外部 SRT 并将其标记为烧录字幕,适合偶尔的手动处理。Rendi 解决的是另一类问题:当渲染属于自动化系统的一环时,通过 API 提交等效的 FFmpeg 操作。

如果希望把这类经过审核的媒体流程接入业务,可以了解 AI 生产系统。

最近更新
2026年9月11日
分类
Build

在 Google 中优先显示本站

将 omidsaffari.com 添加为 Google 搜索的优先来源

把 omidsaffari.com 设为优先来源,Google 会在 Top Stories、AI Overviews 和 AI Mode 中为您优先展示。

AI Agent 怎么选?2026 年 8 款无代码智能体工具对比

AI Agent 怎么选?2026 年 8 款无代码智能体工具对比

2026 年 AI Agent 怎么选?对比 Gumloop、MindStudio、Lindy、n8n 等 8 款平台的适用任务、入门价格、免费方案与计费方式,分清席位、积分和执行次数的差别,说明团队协作、审批和 Zapier 迁移的限制,以及何时需要 API 或代码,帮助创业者按连接能力、权限与维护责任选工具。2026年10月1日Build
Lovable pricing 价格详解:套餐、点数与月度预算怎么算

Lovable pricing 价格详解:套餐、点数与月度预算怎么算

Lovable pricing 怎么算才不超预算?拆解 Free、Pro 与 Business 的月费、年付费用、每日构建额度、Cloud 与应用内 AI 用量,解释共享点数、充值价格和到期规则。用采购工具的月度预算看何时能以 $25 完成构建和运行、何时需要 $50 的 Business,以及何时升级点数档位更划算。2026年10月1日Build
Codex CLI 安全扫描指南:打通 Cloud、PR 审查与 CI

Codex CLI 安全扫描指南:打通 Cloud、PR 审查与 CI

Codex CLI 如何接入代码安全扫描?本文串起 Security Cloud 仓库扫描、PR 安全审查、本地提交前检查与 CI 的配置流程,列明五人 Business 团队的 USD 成本、Gogs 漏洞研判案例、SARIF 报告和退出码,并说明扫描用量、覆盖范围及依赖、密钥检查和人工审查仍需如何安排。2026年9月30日Build
LearnWorlds pricing 2026:Pro 方案何时更省钱

LearnWorlds pricing 2026:Pro 方案何时更省钱

LearnWorlds pricing 从每月 $29 起。本文按学员、报名费、访问权限和 AI 积分,计算 Starter、Pro Trainer 与 Learning Center 的真实成本,找出私密培训、50 人入职学院和每月 20 个付费报名分别该选哪档,并给出试用期测算人工审核成本的方法。2026年9月30日Build
Notion AI 与 ChatGPT Space 怎么选:协作文档还是项目系统

Notion AI 与 ChatGPT Space 怎么选:协作文档还是项目系统

Notion AI 与 ChatGPT Space 该怎么选?本文从共享文档、项目数据库、智能代理、权限、迁移成本和团队定价逐项拆解,说明两者在移动端编辑、导出、结构化字段与协作交接上的差异,帮助团队判断该把 Space 当作文档层,还是继续用 Notion 作为项目事实来源,再通过可回退的发布简报实测后决定是否迁移。2026年9月30日Build
Kitesurf WebMCP 实战指南:连接、执行与验证

Kitesurf WebMCP 实战指南:连接、执行与验证

这份 Kitesurf WebMCP 使用指南讲清如何通过 Chrome DevTools MCP 连接 Cloudflare Browser Run,发现并执行网页工具,再用页面状态验证结果;同时梳理 iframe、弹窗、人工确认等关键限制,并给出生产环境必需的备用路由、安全检查和可重复测试记录方法。2026年9月30日Build
OpenAI Dots 免费吗?套餐价格、试用规则与真实成本

OpenAI Dots 免费吗?套餐价格、试用规则与真实成本

OpenAI Dots 免费吗?本文梳理 ChatGPT 各套餐的 Dots 使用资格、Pro 100 每月 $100 的个人起步价、Business Premium 团队成本、上线后一个月的用量豁免、地区与桌面端限制,并解释为何 OpenAI 尚未公布优惠期后的用量条款,帮助个人与团队判断现在试用还是继续等待。2026年9月29日Build
Cloudflare Kitesurf 免费吗?价格、额度与适用场景全解析

Cloudflare Kitesurf 免费吗?价格、额度与适用场景全解析

Cloudflare Kitesurf 测试期是否真的免费?本文拆解 Workers Free 的浏览器时长、并发与 Quick Actions 限制,对照 Workers Paid 和 Browser Run 定价,并说明 WebMCP、模型费用与兼容性边界,帮你判断 AI 智能体浏览器试点能否装进免费额度。2026年9月29日Build
订阅通讯

每周日,一封信。写运转中的系统,不写热评。

每周一期。无垃圾邮件。随时退订。