Timelapse 的延时摄影
Timelapse 是一款小巧的开源 macOS 屏幕录制工具。它每秒截取一张屏幕截图,最后生成一部影片。
为了庆祝它今天出人意料地发布了 1.0 版本,我在此呈现这个项目历程的一次“延时摄影”。走到今天,足足花了十年时间。

2011 年——一切的开始
老实说,我已经不记得当初为什么要写这个工具了。想来大概是因为自己需要一款屏幕录制工具吧……
2011 年 5 月我启动这个项目时,正在攻读计算机科学硕士学位。也许是为了大学才需要这个工具;不过,更大的可能是,我只是在为不去做作业找借口。
那段时间,我写了很多类似的小工具。主要是为了解决自己的需求、学习一门新的编程语言,或者纯粹为了好玩。
其中包括为 Subway(美国快餐连锁店)做的随机三明治生成器、DrawRoom——一款受 WriteRoom 启发的键盘驱动绘图应用,以及卖给客户的必备 CMS 软件。令人惊讶的是,它们无一取得巨大成功。

不过,有一件事我确实记得很清楚:我对当时所有的屏幕录制工具都不满意。它们大致可以分为以下三类:
- 要收费或会回传数据的专有软件。
- 在 macOS 上无法使用的工具。
- 人们在论坛或以 Github gist 形式流传的小而脆弱的一次性脚本。它们很少能像宣传的那样正常工作。
剩下的工具中,没有一个提供延时摄影功能;于是我决定自己写一个。
这一切听起来很史诗,但实际上,我只花了一天时间。2011 年 5 月 11 日,在五次英勇的提交之后,它就一直在那里闲置了七年……
2018
在有任何令人兴奋的事情发生之前,已经过去了很长时间。
2018 年 1 月,似乎毫无征兆地,第一位用户提交了一个缺陷报告。标题是创建 avi 时卡死😱。原来是一位来自加拿大的游戏开发者 juul1a 试图用这个工具来记录她开发独立游戏的进展——这难道不酷吗?
为了帮她解决问题,我决定做一些常规清理,终于写下了关于如何使用这个程序的说明,添加了 requirements.txt,并将工具从 mencoder 移植到 ffmpeg。
在此之后,timelapse 已为黄金时段做好准备。🎬 以下是她带有延时摄影的视频中的一些实况片段:

那时,这个工具仍然很不稳定,只能通过命令行使用,但我开始看到基于它构建一个真正应用的潜力;我只是始终没有找到时间。
2018 年 10 月,我决定在 Hacktoberfest 期间寻求帮助。我创建了几个工单,并打上 hacktoberfest 标签来尝试寻找贡献者。
然后,我等待着。
首先,Shreya V Prabhu(施瑞娅·V·普拉布)通过为视频名称添加时间戳修复了一个新录制会覆盖之前录制的问题。然后 Abner Campanha(阿布内尔·坎帕尼亚)和 Shane Creedon(肖恩·克里登)(已不在 Github 上)创建了基本的测试结构。Gbenro Selere(格本罗·塞莱雷)为 Travis CI 添加了 CI 流水线。真的奏效了,此后项目的状况好了很多!
2019
一年过去了,Kyle Jones(凯尔·琼斯)添加了一些贡献指南,而我则将 CI 流水线迁移到了新发布的 Github Actions。
Chaitanya(柴塔尼亚)通过将视频创建从线程移至单独的进程修复了录制停止时程序会卡死的缺陷。他继续让代码库变得更加健壮,并成为核心贡献者,负责审查拉取请求和处理发布。
多亏了 orcutt989,该应用现在用上了Python 3.6 中的类型提示。
gkpln3 添加了对多显示器配置的支持。被捕获的屏幕将始终是鼠标所在的那个。
2020
快进到今天,在将近十年之后,我们终于使用出色的 py2app 打包工具创建了一个真正的 macOS 应用。这应该能让非开发者也能使用这个工具。
回到未来
我们走到了这次小小旅程的终点。
直到 1.0 已经过去了很长时间。这个项目是开源协作奇迹的见证,我很自豪能与来自世界各地的贡献者一起参与其中。它不必是一个改变人生的项目,也能让喜欢一起创造的人们聚集在一起。如果故事就此结束,我也可以接受。不过,我对此表示怀疑。致敬下一个十年!
彩蛋
开头的视频是我完成本文的延时摄影。
真是太元了。
随机一篇博客