Article
视频小工具的回旋镖猝不及防:种下的善因,终究回馈自己
两个月前,给姐姐写了一个提取视频字幕的小工具,最初只是帮姐姐省点力气。没想到,两个月以后自己也用到了它,大大的减少了下载视频时的繁琐重复操作。
这次的需求是下载 YouTube 的视频合集,通常从网页下载它的高清视频,需要分别下载静音高清视频 和音频文件,再用剪映或者ffmpeg进行视音频的合并。挺麻烦的,一个个的保存,合并还要配对导出。

于是乎想到之前写过的提取视频字幕的小工具,包含4个环节:识别获取视频元数据、视频的下载、音频的提取、语音识别成字幕文字。 看着合集几十个视频,突然有个新的灵感:如果在下载高清视频时,顺带把音频也下载并自动合并一下,岂不是就完美的实现了“一键下载带字幕的高清视频”了?!
有了想法就去实现它!
独立开发意味着要身兼数职,既是用户、又是开发、还是设计,但各阶段的不同角色也必须分清:首先整理梳理出需求,再进行功能实现,最后改善界面优化用户体验。
这次从两个方面重构了代码:
一、字幕提取服务
新增多视频源支持,将原来的四个环节抽象重构为两个接口:Detector 和 ExtractorService。
1、Detector 负责检测浏览器地址,并返回对应的提取服务。

2、ExtractorService 提取服务是应用的核心,包括以下环节:
1)拦截网络请求,返回视频元数据
2)根据元数据显示视频列表
3)实现元数据的序列化反序列化
4)视频字幕处理流水线
* 首先把元数据写入到数据库,加入到处理队列
* 处理流程:下载视频、提取音频、语音识别生成字幕

二、字幕管理
虽然视频处理是后台的核心,但用户真正感受好不好用,更多取决于后续管理操作体验。对字幕管理功能进行了如下的改善:
-
状态管理:为了避免状态太多用setState导致混乱,提取出一个controller来替代,使用ChangeNotifier+Provider管理状态和界面的更新。
-
优化界面:增加分类和标签的功能
-
扩展功能:批量删除、批量导出字幕、批量拷贝视频、批量修改分类,以及排序等。

导出视频合集
用url地址的list标识来筛选,把相关视频归为同一个分类。然后选择这个类别,按时间正序排列。最后导出所有视频,就能得到名称规整、带有数字前缀的视频合集了。

导出效果对照:

尽管我这是用来下载视频,用它来做油管视频搬运助手 也是完全可以的,感觉蛮方便。功能再扩展一下:字幕加上时间戳,登录bilibili等直接上传,咔咔咔,就完美了,一键油管视频搬迁。
总结
最初写字幕提取工具,只是出于一份爱一份心意。没想到,两个月后,它像一支回旋镖一样,绕了一圈最终又回到自己手中,解决了自己的新的需求。
这让我更深刻地体会到:开发的价值,不仅在于代码本身,更在于种下的每一个善意的小因子,终会在未来的某个时刻,以意想不到的方式回馈自己。
小工具如此,人生亦然。
Related
Related posts
-
有一种自由叫做程序员的自由:把公众号文章镜像回自己的博客
2026-06-02
-
树莓派 OpenClaw Browser 看不见摸不着?给它配个 VNC 图形环境,踏实安心的Debug
2026-03-09
-
从使用者到创造者:用 AI 构建你的专属 VS Code 工具链
2026-02-27
-
杀鸡焉用牛刀:DuckDB 正取代部分 Spark 场景
2026-02-16