每秒记录一次屏幕,听上去像是存储问题。其实这是「都一样」的问题。绝大多数秒和它前面那一秒长得一模一样,由这些构成的历史比一份更小的历史更糟:搜起来更慢,翻起来更长,而且恰恰把你真正想找的时刻埋了起来。
所以在留下任何东西之前,LockTime 会先问屏幕究竟有没有变。这个比较跑在屏幕缩成 192×192 的灰度图上——36,864 个采样点——容差为两级:压缩噪点不算变化,重绘过的窗口才算。
为什么阈值行不通
最容易想到的规则是看数量:动了超过 N 个采样点就留下这一帧。我们测了在一台什么都没干的电脑上,究竟有什么在动。
- 把指针从屏幕这头移到那头:4 个采样点。
- 菜单栏上的时钟跳过一分钟:7 个采样点。
- 在文档里敲下一个词:23 个采样点。
都是在 36,864 个里。要忽略一个时钟,N 得高过 7;要同时忽略闪动的光标、时钟和转圈的进度指示,还得更高。而你刚敲下的那句话是 23。一个为了甩掉噪声而设的阈值,甩掉的是你的工作——两者一样大。
改看闪动
默认的规则问的不是动了多少,而是动在哪里。LockTime 会学出屏幕上哪些格子是不安分的——一个光标、一个转圈的指示、一张会动的缩略图——然后不再把它们算进来。一个格子在三次不同的检查中都动过,就被认定为长期不安分,此后只有屏幕的其余部分才能触发一次捕捉。
这种学习有上限:一次检查只有在最多十二个格子动过时才会教给 LockTime 什么。翻一页、切一个窗口、滚动一份文档,成千上万个格子会同时动——那次检查什么都不教。于是一次真实的变化,永远不可能把这个应用训练成相信你整块屏幕都是噪声。
在要紧的意义上,这是无损的。你做过的事一件都不会丢。你读一页所花的那几分钟,代价是一张截图,而不是六十张。
你可以改的地方
设置里有三种模式。任何变化:只要动了一个采样点就留下这一帧。忽略会自己动的部分:上面讲的默认模式。只看明显变化:等到屏幕上有相当一部分不同了才留,适合想要一份稀疏记录的人。
旁边还有:从一秒到十分钟的间隔,以及一个在你切换应用时捕捉的开关——这样一个你只待了三秒的窗口,也会留下痕迹。