Laogege's Journal

我的第一次开源之旅:从一个简单需求到两个开源项目

今天是个特别的日子 —— 我正式发布了人生中的前两个开源项目!🎉

作为一个独立开发者,我一直在思考如何为开源社区做出贡献。这次的契机来自一个实际的业务需求:如何高效地为用户生成专业的故事动画视频?

故事的开始:app.sumatman.ai 的技术挑战

几个月前,我在开发 app.sumatman.ai 时遇到了技术挑战。这个产品允许用户输入一句话,就能自动生成一个完整的故事动画。每个故事由 10-20 个场景组成,每个场景包含:

  • 🎨 插画风格的场景图片
  • 🎙️ 专业的画外音配音
  • 📝 同步字幕
  • 🎬 Ken Burns 视觉特效(缩放、平移等)

这不是传统意义上的视频,而是一种插画动画——通过静态图片加上动态效果、字幕和配音组合而成的故事视频。

初期产品效果不错,但随着用户增长,我面临了一个严峻的问题:服务器处理效率。单个故事可能需要处理 10-20 个场景,每个场景都要将图片、音频和字幕合成为视频片段,这对服务器资源要求极高,尤其是需要放大和缩小动态特效的时候。

于是我决定采用 AWS 按需扩容的方案:当用户需求量大时,程序自动创建 AWS 实例来处理视频生成任务,完成后自动销毁实例。这样既能应对高并发,又能控制成本。

这个想法最终衍生出了两个开源项目。

开源项目一:Video Generation API

项目地址https://github.com/preangelleo/video-generation-docker

诞生背景

为了实现按需扩容,我需要将视频生成的核心逻辑——将图片、音频和字幕合成为视频——封装成一个独立的 Docker 镜像。这样就能在任何 AWS 实例上快速部署和运行。

它能做什么?

这个 API 专门解决插画动画的生成需求:

  • 🎬 智能视频合成 - 自动将图片和音频完美同步
  • 📝 专业字幕渲染 - 支持中英文,带半透明背景框,电影级别的字幕效果
  • 🎨 Ken Burns 特效 - 让静态插画"动"起来,通过缩放、平移创造视觉层次
  • 🚀 Docker 化部署 - 一行命令即可在任何环境运行
  • 多线程并发处理 - 单个实例可以串行处理 10-20 个场景

效果展示

这里有两个实际生成的动画视频示例:

这些看似专业的动画视频,实际上都是由静态插画自动生成的!

开发挑战与突破

字幕渲染挑战:最初使用 FFmpeg 内置滤镜,但效果很差——字体模糊、样式单一、中文支持糟糕。经过多次尝试,我最终基于 OpenCV 实现了一套完整的字幕渲染系统。OpenCV 作为强大的计算机视觉库,不仅能处理视频帧,还提供了精确的文字渲染能力,让我能够实现专业级的字幕效果,包括自定义字体、半透明背景、精确的文字定位和渲染质量控制。

这样表述更准确,因为:

  1. OpenCV 是一个综合性的计算机视觉和图像/视频处理库
  2. 它不仅仅处理字幕,还能处理整个视频帧的合成、特效等
  3. 使用 OpenCV 是为了获得更精确的视频处理和文字渲染控制
  4. 相比 FFmpeg 的内置滤镜,OpenCV 提供了更灵活的编程接口来实现复杂的视觉效果

并发处理优化:与 Claude Code 联合开发,从原来的单线程处理升级为多线程并发处理,大幅提升了处理效率。通过智能场景检测,系统提供 4 种处理模式(基础版、字幕版、特效版、完整版),根据需求自动选择最优方案。

新的问题:云服务器成本太高!

Video Generation API 部署到 AWS 后,我发现了一个严重问题:24/7 运行的 GPU 实例成本高达 500 美元/月!我已经在 Runpod.io 运行了一台,但是人也不够。随着用户增加,就需要更多的服务器。

但实际上,大部分时候服务器都在空转。用户的动画生成需求是突发性的,可能一天只需要几个小时的计算资源,却要为全天候的服务器付费。

这催生了第二个开源项目。

开源项目二:CloudBurst

项目地址https://github.com/preangelleo/cloudburst

核心理念:真正的按需计算

CloudBurst 专为 app.sumatman.ai 这种场景设计:

  • 📈 智能监控需求 - 实时监测用户的动画生成请求
  • 🚀 自动创建实例 - 需要时立即启动 AWS 实例
  • 🐳 部署 Docker 镜像 - 自动部署 Video Generation API
  • 🎯 批量处理任务 - 单实例可处理多个故事的生成需求
  • 💰 精确成本控制 - 任务完成后立即销毁实例,按秒计费

在 app.sumatman.ai 中的应用

在我的动画生成平台中,CloudBurst 承担着关键作用:

  1. 用户提交故事生成请求 - 平台接收到用户的"一句话变故事"需求
  2. 智能任务分配 - 系统将多个用户的请求打包成批次
  3. 按需启动实例 - CloudBurst 自动创建 AWS 实例并部署 Video Generation API
  4. 并行处理场景 - 每个实例处理 10-20 个场景的视频生成
  5. 自动清理资源 - 任务完成后立即销毁实例

成本节省效果

真实运营数据:

  • 传统方式:24/7 GPU 实例 = 500 美元/月
  • 使用 CloudBurst:处理相同工作量 = 20 美元/月
  • 节省比例:96% 的成本削减!
💡
生成 60 个故事场景视频片段,总耗时 25 分钟,成本仅 0.20 美元。

技术特性

  • 🤖 全自动化工作流 - 从实例创建到销毁,无需人工干预
  • 💰 实时成本追踪 - 集成 AWS Pricing API,精确到秒的费用计算
  • 🔧 智能资源管理 - 自动处理 AWS 配额限制,智能切换实例类型
  • 📊 API 友好 - 返回结构化 JSON 数据,完美集成到业务系统

两个项目的协同作用

在 app.sumatman.ai 的技术架构中:

  • Video Generation API = 核心引擎(处理单个场景的视频合成)
  • CloudBurst = 资源调度器(管理 AWS 实例的生命周期)

用户在前端输入一句话,后端系统通过 CloudBurst 调度 Video Generation API,最终为用户生成一个完整的故事动画。整个过程对用户完全透明,但大幅降低了运营成本。

开源的价值

将这两个项目开源,是因为我相信它们能解决更广泛的问题:

适用场景

内容创作者

  • 教育机构批量制作教学动画
  • 播客主将音频内容转化为视觉故事
  • 儿童内容创作者制作有声绘本

技术团队

  • 需要集成视频/动画生成功能的产品
  • 希望优化云计算成本的项目
  • 构建按需计算架构的应用

创业公司

  • 预算有限但需要专业内容生产能力
  • 不想维护昂贵基础设施的团队
  • 需要快速验证创意的项目

未来规划

对 app.sumatman.ai 的支持

这两个开源项目将持续为 app.sumatman.ai 提供底层支持,随着用户增长和需求变化不断优化:

  • Video Generation API:支持更多动画效果、支持自动生成语音、支持自动生成字幕等
  • CloudBurst:支持更多云服务商、GPU 实例、竞价实例以进一步降低成本

技术演进计划

  • 🌐 多云支持 - 扩展到 Google Cloud、Azure
  • 🎯 智能调度 - 基于历史数据优化资源分配

快速开始

Video Generation API

docker pull betashow/video-generation-api:latest
docker run -p 5000:5000 betashow/video-generation-api:latest

CloudBurst

git clone https://github.com/preangelleo/cloudburst
cd cloudburst
pip install -r requirements.txt
# 查看 example_usage.py 开始使用

加入开源社区

这是我开源之旅的开始。如果你:

  • 🐛 发现了问题 - 请在 GitHub Issues 中反馈
  • 💡 有改进建议 - 欢迎提交 Feature Request
  • 🔧 想贡献代码 - Pull Request 永远欢迎
  • 觉得有用 - Star 是最大的鼓励

写在最后

从 app.sumatman.ai 的实际需求出发,到两个开源项目的诞生,这个过程让我深刻体会到:真正有价值的开源项目往往来源于真实的业务挑战

每当看到用户通过 app.sumatman.ai 轻松创建出专业的故事动画,背后的技术栈能够稳定高效地运行,我就为这次开源决定感到自豪。

感谢所有关注和支持的朋友。让我们一起推动技术的开放和创新,让更多人能够享受到技术进步带来的便利!


项目链接:

联系方式

  • GitHub: @preangelleo
  • 项目讨论:在 GitHub Issues 中找我

第一次做开源,期待你的反馈和建议!🙏

Author image
About Laogege
Menlo Park Website
Angel Investor, Creator, Speaker, Coder & Lifelong Learner
You've successfully subscribed to Laogege's Journal
Great! Next, complete checkout for full access to Laogege's Journal
Welcome back! You've successfully signed in.
Unable to sign you in. Please try again.
Success! Your account is fully activated, you now have access to all content.
Error! Stripe checkout failed.
Success! Your billing info is updated.
Error! Billing info update failed.