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 已經過了很長一段時間。這個專案見證了開源協作的奇妙之處,我很榮幸能與來自世界各地的貢獻者一起投入其中。它不必是一個能改變人生的專案,也能讓喜歡動手打造東西的人聚在一起。就算故事到此結束,我也覺得心滿意足了。不過,我很懷疑就此打住。敬下一個十年!
彩蛋
開頭的影片是我完成這篇文章過程的縮時紀錄。
真是後設。
隨機一篇部落格