A Timelapse of Timelapse

Matthias Endler

Timelapse 的縮時紀錄

原文由 Matthias Endler 發布,訂閱此部落格

Timelapse 是一款小巧的 macOS 開源螢幕錄影工具。它每秒擷取一張螢幕截圖,最後再合成為一部影片。

為了慶祝今天這個得來不易的 1.0 版本發布,我在此呈現這個專案一路走來的「縮時」紀錄。走到這一步,整整花了十年的時間。

2011 年 — 故事的起點

老實說,我已經不記得當初為什麼要寫這個工具了。我猜,大概是自己有錄製螢幕的需求吧……

2011 年 5 月剛開始這個專案時,我正在攻讀資訊科學碩士。或許是課業上需要這個工具;不過,更有可能的是,我只是想找個藉口,拖延作業不做。

那段時間我寫了很多這類的小工具,主要是為了解決自己的需求、學習新的程式語言,或純粹為了好玩。

其中包括一個替 Subway(美國連鎖速食店)做的隨機三明治產生器、受 WriteRoom 啟發、以鍵盤操作的繪圖應用程式 DrawRoom,以及那個每個工程師都一定會寫、還賣給客戶的制式 CMS 系統。令人意外的是,沒有一個算是真正成功。

DrawRoom 是我差不多同時期寫的工具,堪稱一件真正的藝術品。時至今日,它只有五次 commit 和一顆 GitHub 星星(還是我自己按的,別笑……)。
DrawRoom 是我差不多同時期寫的工具,堪稱一件真正的藝術品。時至今日,它只有五次 commit 和一顆 GitHub 星星(還是我自己按的,別笑……)。

但我可以確定的是,當時我對現有的所有螢幕錄影工具都不滿意。它們大致可以分成三類:

  • 需要付費、或可能會回傳資料的專有軟體。
  • 在 macOS 上無法使用的工具。
  • 在論壇或 GitHub Gist 上流傳、脆弱又一次性的小腳本,而且很少能像宣稱的那樣正常運作。

剩下的工具裡,沒有一個具備縮時功能;於是我決定自己動手寫一個。

這聽起來很轟轟烈烈,但實際上我只花了一天就把它寫完了。在 2011 年 5 月 11 日英勇地提交了五次 commit 之後,它就這樣被閒置了七年……

2018 年

過了很長一段時間,才終於發生了什麼值得一提的事。

2018 年 1 月,彷彿憑空出現一般,第一位使用者提交了一個錯誤回報,標題是hung when creating the avi 😱。原來是一位來自加拿大的遊戲開發者 juul1a,正嘗試用這個工具來記錄她開發獨立遊戲的進度——這不是很酷嗎?

為了幫她解決問題,我決定做一次大整理,總算寫下了使用說明,加上 requirements.txt,並將工具從 mencoder 移植到 ffmpeg

經過這一輪整理,timelapse 總算可以正式上檯面了。🎬 以下是她用縮時功能錄製的影片片段:

在那個時候,這個工具還很不穩定,只能透過指令列使用,但我已經開始看到把它做成一個像樣的應用程式的潛力;只是我一直抽不出時間

2018 年 10 月,我決定在 Hacktoberfest 期間尋求協助。我開了幾個 issue,並加上 hacktoberfest 標籤,希望能找到貢獻者。

然後,我就開始等待。

首先,Shreya V Prabhu 透過在影片檔名中加入時間戳,修復了新錄影會覆蓋掉舊檔案的問題,相關修改在 timestamp to the video name。接著 Abner Campanha 和 Shane Creedon(已不在 GitHub 上)建立了基本的測試架構。Gbenro Selere 則為 Travis CI 新增了 CI 流程。這真的奏效了,專案的狀況在那之後好轉了許多!

2019 年

一年過去,Kyle Jones 新增了貢獻指南,而我則把 CI 流程搬到了剛推出的 GitHub Actions 上。

Chaitanya 修復了一個在停止錄影時會導致程式卡死的錯誤,方法是將影片產生從 threads 改為獨立的 process。他持續讓程式碼變得更加穩健,並成為核心貢獻者,負責審核 pull request 和處理版本發布。

多虧了 orcutt989,這個應用程式現在開始在 Python 3.6 中使用 type hints

gkpln3 新增了對多螢幕設定的支援。程式永遠會擷取滑鼠所在的那個螢幕。

2020 年

時間快轉到今天,在將近十年之後,我們總算利用超棒的 py2app 打包工具,做出了真正的 macOS 應用程式。這應該能讓非開發者也能輕鬆使用這個工具了。

回到未來

我們的小小旅程就到此告一段落了。

一路走到 1.0 花了很長的時間。這個專案見證了開源協作的美好,我很驕傲能與來自世界各地的貢獻者一起合作。它不一定得是個能改變人生的專案,也能讓一群樂於動手打造東西的人聚在一起。如果故事就此結束,我也覺得很好了。不過,我想應該還沒結束。敬下一個十年!

🎬 在 GitHub 上下載 timelapse

彩蛋

開頭的那支影片,是我完成這篇文章過程的縮時。
真的很有後設感。

本文章由 muse-spark-1.2-contributor 進行翻譯

留言