美,就是它本来的样子。
我热爱旅行和潜水,是因为能看到那些美,我也喜欢把它分享出去。我不喜欢的,是一个个晚上都花在给片段调色、打磨上。我不觉得美需要“改进”:它本来就在那里。过去相机和屏幕装不下它的全部,只能把它压缩进它们能显示的范围,这就需要做出创作上的取舍。现在不必了:有了 Log 和 HDR,技术已经足以把美原样带到屏幕上。只是要这样去用它。
相机越来越好,文件越来越难办。
这些年相机越来越好,它们的文件却不再是普通的视频了。用上相机的全部本事,你得到的是灰色的 Log 画面、陀螺仪数据、遥测数据和精彩时刻标记,普通播放器都读不懂。把这些全关掉,视频又比相机本来能拍出的更平淡。
夹在中间的,只有厂商自己的 App:在手机上看,就像透过钥匙孔往里瞧。你从此离不开它,还常常附带着你从没想要的账号、云服务或订阅。
色彩,就像眼睛记住的那样。
在水下,颜色从来都不对。用相机的普通模式拍,画面不是太紫、太褐,就是太绿:都不是眼睛记住的样子。后来我接触到了相机的 Log 模式。用一个懂 Log 的播放器来看,效果好了一些,虽然仍不完美。可是能读懂 Log 的,只有厂商自己的手机 App:又回到了钥匙孔。
厂商会公布如何把自家的 Log 转换成普通的 SDR 画面,却从不说怎么转换成 HDR。不过,社区已经把它测量出来了。Zeb Gardner 弄清了 GoPro 和 DJI 的 Log 实际上是怎样表现的,并制作了能准确转换它的免费 LUT。当我用这些 LUT 把潜水视频转成 HDR、在 MacBook 上播放时,画面中性而真实,一开始我简直不敢相信自己的眼睛:终于,它看起来就是我当时看到的样子。我希望每个人都能看到这样的画面。于是我写信给 Zeb,他很友善地同意让播放器使用他的 LUT。
这和厂商 App 给你的不一样。从 DJI 的 App 导出时,我的潜水视频阴影被压成一片黑,珊瑚变得生硬,透着哥特式的阴森,蓝色也蓝过了头,饱和度过高。我想要的是中性的画面,而 Zeb 的测量给了我这个。
但套用 LUT 需要 DaVinci Resolve 或 Final Cut Pro 这样的专业软件,而且得先花钱买。只是为了看看自己拍了什么,就把片段导入剪辑软件,感觉像是杀鸡用牛刀。这成了做这个播放器的第一个理由:双击一个 Log 片段,它立刻就以 HDR 漂亮地播放出来。
水下,一切都在晃。
在水下,一切都在晃。相机有了自带防抖的时候,我兴奋极了,直到发现它在水下不管用。我也从来不想要那种得用两只手端着的大套件。对我来说,潜水本身最重要:身在其中,四处看看,感受那个地方。相机只占一只手,不能再多,否则乐趣就没了。
和我聊过的潜水员都很笃定:数字防抖在水下不管用,也不可能管用。我学过物理,所以去找了原因。相机靠陀螺仪做的防抖,预设了镜头如何折射光线,而水改变了这一点:镜头表现得像一支焦距长了约三分之一的镜头。于是相机每转动一下,画面的移动都比防抖预期的多出约三分之一,它没补偿到的部分就成了抖动。按水的折射来校正镜头,抖动就没了。
有一阵子我用过球面罩(dome port):一种在镜头前装着半球形窗口的潜水壳。这样光线是正对着从水进入空气的,不会被折射,连相机自带的防抖都能正常工作。可球面罩是塑料的,很容易刮花,体积又大,里面的空气还会把你往水面上拉。作为权宜之计,它管用,但不是我想要的。
2024 年 4 月,我把这套数学带到了开源防抖项目 Gyroflow。和它的开发者们一起,我们几天就把问题解决了,Gyroflow 也有了水下设置:勾选 Lens is underwater(镜头在水下),潜水视频就稳了。同一天,我在 GoPro 的实验性功能 GoPro Labs 里向 GoPro 提出了这个需求。大约半年后,Labs 推出了 Dive Mode,让 HyperSmooth 适应水的折射。从那以后我一直在用,确实管用。不过,它至今还没有进入相机的常规设置。
后来,妻子送了我一台 Osmo Action 6。它的大尺寸传感器在水下能收进多得多的光,但它的防抖也有同样的问题。2026 年 5 月,我向 DJI 提出了同样的修正。在它到来之前,这个播放器先替它做了。
我想,这是一次幸运的组合:物理、技术,再加上对潜水的热爱。
一个全都能做的播放器。
我一直密切关注技术,尤其是 AI。某个时候我发现,它已经好到能让我这样编程知识有限的人做出一个真正的 App。于是我做出了自己想要的播放器,由 Anthropic 的 AI Claude 担任我的编程搭档。双击一个片段,它立刻开始播放:Log 呈现色彩、以 HDR 显示,画面稳定,镜头针对水做了校正,画面边缘的彩色镶边也去掉了。无需渲染,无需导入。
我是为自己做的。后来我发现,有那么多人拍着同样的素材,遇到同样的问题。所以我让它支持更多相机,用我以前的 GoPro 片段做了测试,然后把它开放出来。这一路上,我也一直在把改进回馈给 Gyroflow 本身。
开源,以及接下来。
这是我的第一个开源项目,我自己也很好奇它会走向哪里。它是免费的,也会一直免费。不过,它确实要占用我的时间。如果你觉得它有用、愿意支持它,我会很高兴,也很感激:有了支持,我就能为它投入更多时间,支持更多相机。
发现了 bug,或者你的相机它还不认识?请在 GitHub Issues 里告诉我。