跳到正文
W Winse Blog
dev 1 min read

视频小工具的回旋镖猝不及防:种下的善因,终究回馈自己

两个月前,给姐姐写了一个提取视频字幕的小工具,最初只是帮姐姐省点力气。没想到,两个月以后自己也用到了它,大大的减少了下载视频时的繁琐重复操作。

这次的需求是下载 YouTube 的视频合集,通常从网页下载它的高清视频,需要分别下载静音高清视频音频文件,再用剪映或者ffmpeg进行视音频的合并。挺麻烦的,一个个的保存,合并还要配对导出。

于是乎想到之前写过的提取视频字幕的小工具,包含4个环节:识别获取视频元数据、视频的下载、音频的提取、语音识别成字幕文字。 看着合集几十个视频,突然有个新的灵感:如果在下载高清视频时,顺带把音频也下载并自动合并一下,岂不是就完美的实现了“一键下载带字幕的高清视频”了?!

有了想法就去实现它!

独立开发意味着要身兼数职,既是用户、又是开发、还是设计,但各阶段的不同角色也必须分清:首先整理梳理出需求,再进行功能实现,最后改善界面优化用户体验。

这次从两个方面重构了代码:

一、字幕提取服务

新增多视频源支持,将原来的四个环节抽象重构为两个接口:Detector 和 ExtractorService

1、Detector 负责检测浏览器地址,并返回对应的提取服务。

2、ExtractorService 提取服务是应用的核心,包括以下环节:

1)拦截网络请求,返回视频元数据

2)根据元数据显示视频列表

3)实现元数据的序列化反序列化

4)视频字幕处理流水线

* 首先把元数据写入到数据库,加入到处理队列

* 处理流程:下载视频、提取音频、语音识别生成字幕

二、字幕管理

虽然视频处理是后台的核心,但用户真正感受好不好用,更多取决于后续管理操作体验。对字幕管理功能进行了如下的改善:

  • 状态管理:为了避免状态太多用setState导致混乱,提取出一个controller来替代,使用ChangeNotifier+Provider管理状态和界面的更新。

  • 优化界面:增加分类和标签的功能

  • 扩展功能:批量删除、批量导出字幕、批量拷贝视频、批量修改分类,以及排序等。

导出视频合集

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

导出效果对照:

尽管我这是用来下载视频,用它来做油管视频搬运助手 也是完全可以的,感觉蛮方便。功能再扩展一下:字幕加上时间戳,登录bilibili等直接上传,咔咔咔,就完美了,一键油管视频搬迁。

总结

最初写字幕提取工具,只是出于一份爱一份心意。没想到,两个月后,它像一支回旋镖一样,绕了一圈最终又回到自己手中,解决了自己的新的需求。

这让我更深刻地体会到:开发的价值,不仅在于代码本身,更在于种下的每一个善意的小因子,终会在未来的某个时刻,以意想不到的方式回馈自己。

小工具如此,人生亦然。

在 GitHub 上讨论

欢迎通过 GitHub Issue 留言或反馈。每条讨论都会关联到对应文章的源文件路径。

2025-10-08-视频小工具的回旋镖猝不及防:种下的善因,终究回馈自己.md

Related posts