不會消失的錄音

我自己丢过錄音,所以做了 Shadow Recording:让程序崩溃、甚至整机內核崩溃,也带不走想法。

Building

我以前丢过錄音。应用崩溃、电池沒电、系統卡死——啪,沒了。

那種“我剛花 10 分鐘講清一件重要的事,結果全沒了”的下坠感,非常難受。

所以在开始做 Reso 時,我給自己立了一個约束:這件事绝不能再發生。

傳統做法(以及它為什麼會失败)

大多數錄音应用的流程是:
1. 开始錄音 -> 音频先缓存在內存
2. 停止錄音 -> 再寫文件到磁盤
3. 返回文件路径

問题:如果在步骤 1 和 2 之間崩溃,錄音會永久丢失。

macOS 应用會崩。电源線會被拔。Kernel panic 也會發生(虽然不常见)。

解決方案:增量寫盤

如果我们在錄音过程中就持續寫盤,而不是結束後一次性寫呢?

Shadow Recording 的做法是:
1. 錄音开始 -> 立刻創建带時間戳的 M4A 文件
2. 每當音频 chunk 到達,就追加到磁盤文件
3. 即使应用崩溃,文件也已经存在

結果:哪怕 Reso 在你說到一半時炸掉,錄音仍能保住。

實現细節

聽起來簡單,但 M4A 格式并不簡單。不能把原始音频字節直接拼接,否則文件會损坏。

我需要:
1. 使用支持增量寫入的流式編碼器
2. 確保即使中斷寫入,M4A 容器也保持“可讀有效”
3. 處理文件清理(旧 shadow 錄音不能無限堆積)

我们把 shadow 錄音保留 7 天,之後自動刪除。既提供安全兜底,也避免存儲無限增長。

我学到的

最好的功能,往往是使用者注意不到的功能。

Shadow Recording 已经從崩溃裡救回了很多錄音。但使用者不會說“這個 shadow recording 真棒”,他们只會說“Reso 很可靠”。

這正是我想要的結果。

可靠性不花哨,演示時也不抢眼,但它是信任的地基。

當你知道自己的想法是安全的,你會更敢去记錄半成品想法、實驗和錯误。

那時工具就不再只是工具,而會成為你思考过程的一部分。

這不是行銷,是我們自己踩過的坑。

下載 macOS 版 Reso

閱讀更多 Reso 開發歷程