Appearance
【译】四个月内打造专业摄影 App 的可能与不可能(The Making of Kino: You Can (Not) Build a Pro Video Camera App in Four Months)【原文】
这是一个独立应用开发的真实故事:讲述我们为什么毅然决定在短短几个月内开发专业视频相机应用 Kino,记录这段旋风般的开发历程,以及期间发生的种种出人意料的转折。(A true story of indie app development: why we made the plunge to build our pro video camera app Kino in a few months, its whirlwind development, and many surprise twists.)
It’s been seven years since we launched a little side project, Halide. We built it for us: we didn’t set out to ‘disrupt’ the world of camera apps, or get rich. We wanted to build a beautiful, powerful, and delightful camera app that we would enjoy using.
距离我们推出业余项目 Halide 已经过去七年了。我们开发它纯粹是为了自己:并不是为了"颠覆"相机应用市场,也不是为了赚大钱。我们只想打造一款漂亮、强大且令人愉悦的相机应用,是我们自己也会喜欢使用的那种。
It exceeded our wildest expectations and quickly grew to become an award-winning photography app and a legitimate business. Soon, we quit our jobs to work on apps full-time. Yes, that's plural, apps.
它的成功远超我们的想象,迅速发展成为一款获奖的摄影应用,并成为了一份正经的事业。很快,我们就辞去了原来的工作,开始全职开发应用。没错,是多个应用。
From what we learned building Halide full-time, we spun out one-off projects such as Orion and Spectre (that one went places — a little long exposure app that won 2019 App of the Year). While these were fun diversions, Halide remained the focus of our company. It was what we worked on most days of the week, for the last seven years.
在全职开发 Halide 的过程中,我们积累了不少经验,并以此开发了一些独立项目,如 Orion 和 Spectre (后者更是大获成功 — 这款小巧的长曝光应用赢得了 2019 年度最佳应用大奖)。尽管这些都是有趣的尝试,但 Halide 始终是我们公司的核心。在过去的七年里,这是我们投入最多时间的项目。
There was just one thing we knew we'd never add to Halide: video. Ever since Halide 1.0, users asked for it, but we knew it wouldn't work. Photography and cinema are different mediums that call for different user experiences.
只有一件事我们确定永远不会加入 Halide:视频功能。自 Halide 1.0 发布以来,用户一直在请求这项功能,但我们深知这并不合适。摄影和电影是两种不同的媒介,需要完全不同的用户体验。
Instead, Sebastiaan and I talked about building a completely separate app, a "Halide for video." Talk never went past the "Wouldn't it be cool…" phase, because we weren't sure if we could juggle a second major app. We're a small team. Ridiculously small. One designer and developer.
相反,Sebastiaan 和我讨论过开发一个全新的独立应用,一个"视频版的 Halide"。但讨论从未超过"如果能做出来该多好"的阶段,因为我们不确定能否同时维护两个主要应用。我们的团队非常小,只有一名设计师和一名开发者。
We knew expectations were sky high, and honestly, nothing excited us about iPhone video. It felt photography was at the forefront of the camera innovations.
我们知道用户期望很高,但说实话,iPhone 的视频功能一直没有让我们感到特别兴奋。我们觉得创新主要发生在摄影领域。
Our attitude quickly changed in November 2023, and we launched our video app, Kino, six months later. This is the story of why we made the plunge, its whirlwind development, the results, and where we go from here.
直到 2023 年 11 月,我们的想法发生了转变,并在六个月后推出了我们的视频应用 Kino。这就是我们为什么最终决定尝试,以及关于这个项目快速开发的过程、取得的成果和未来发展方向的故事。
2023年秋季:"这能有多难?"(Fall 2023: "How hard could it be?")
At the end of last summer, Sebastiaan and I launched Orion, a free app that helps turn your iPad into an HDMI monitor.
去年夏末,Sebastiaan和我发布了 Orion,这是一个可以将iPad变身为HDMI显示器的免费应用。
We normally take our time with new projects. Both Halide and Spectre each took one year to ship (though, in our defense, these started as side projects). Orion was a fun challenge to see if our two-man company could ship a brand-new app in 45 days, and it went really well. It reset expectations of what we could accomplish quickly, but it felt a bit exhausting toward the end.
我们平常开发新项目都很从容。Halide和Spectre都花了整整一年才发布(虽然说,这两个最开始都是业余项目)。Orion是个有趣的挑战,我们想看看这个两人小公司能否在45天内推出一款全新应用,结果出乎意料的顺利。这次经历刷新了我们对快速开发的认知,尽管到最后确实有点累。
We expected to spend the rest of the year slowing down and turning our attention to Halide. We were in the home stretch of a brand new feature that we were very excited about, and with another month or two of work, we could bring it across the finish line.
我们本打算年底放慢节奏,把精力转回Halide。当时我们正在开发一个令人振奋的全新功能,眼看再有一两个月就能完工了。
I could also use a little breather for the rest of the year, as I expected my first kid at the end of February.
我也正好能在年底休息一下,因为我的第一个孩子预计在2月底出生。
Those plans changed moments after the Orion release, with Apple's unveiling of the iPhone 15 Pro. We watch every keynote paying close attention to changes in photography, which we'll weave into our fall Halide update. This time we were blown away by the announcement of "log video."
但这些计划在Orion发布后就被Apple发布iPhone 15 Pro的消息打乱了。我们每次看发布会都特别关注摄影方面的更新,这些更新都会被整合到我们的Halide秋季版本中。这次我们被"对数视频 (log video)"的发布震撼到了。
Log video is a very big deal. It contains much more information than conventional iPhone video, allowing ridiculous control over the final image. Apple called it Apple Log. Of course.
对数视频是一个重大突破。相比传统iPhone视频,它能记录更多信息,让用户能够对最终画面进行惊人的调控。Apple给它起名叫Apple Log,这很Apple。
As Apple Log made waves in the filmmaking community, we got a sense of déjà vu. Our minds went back to the Summer of 2016, when Apple iPhones would soon capture RAW photos, allowing incredible editing superpowers. Sebastiaan and I felt that was the right time to build Halide. Now, with Apple Log, we felt iPhone video was about to have its RAW moment.
当Apple Log在电影制作圈引发轰动时,我们有种似曾相识的感觉。回想起2016年夏天,当时iPhone即将支持拍摄原始图像格式 (RAW) 照片,让照片获得了超强的编辑能力。Sebastiaan和我觉得那是开发Halide的最佳时机。现在,随着Apple Log的出现,我们感觉iPhone视频也将迎来它的RAW时刻。
That said, there are only so many hours in the day. Could we add another major app to our portfolio without supporting ou breadwinner, Halide?
但是,时间总是有限的。在不影响我们的摇钱树Halide的情况下,我们还能再开发一个重要应用吗?
Well, Halide is overdue for a refresh. Its foundations were built seven years ago, and Apple's newer technologies would vastly improve the product. Orion wasn't just a fun side project, it was a test as to whether Apple's new technologies were mature enough to start rolling into Halide. If so, how much do they improve our productivity? The result was "yes," and "a ton." We were able to accomplish some tasks for Orion in hours that would take days in Halide.
说实话,Halide确实该更新了。它的代码基础已经有七年历史,用上Apple的新技术能让产品有质的飞跃。Orion不仅是个有趣的副项目,更是用来测试Apple新技术是否足够成熟可以整合进Halide的实验。如果可行的话,这些技术能在多大程度上提升我们的开发效率?结果是"可行",而且"提升巨大"。在Orion中,我们能在几小时内完成一些在Halide中需要好几天才能完成的任务。
But Orion wasn't nearly as complex as Halide. Our video app would let us build a foundation for the future. While our photo and video apps would never share user interfaces, we could architect them to share underlying technologies. If we do this right, we can manage the workload.
不过Orion的复杂度远不及Halide。开发视频应用能让我们为未来打下基础。虽然我们的照片和视频应用不会共用界面,但我们可以让它们共享底层技术。如果这一步走对了,我们就能很好地控制工作量。
截止日期(The Deadline)
Maybe the hardest part of our job is planning everything around Apple's schedule. We spend summers readying our apps for the Fall iOS release, which launches alongside new iPhones. Then we scramble to test our apps and support the new camera hardware. If we're lucky, we get six months a year to define our product direction.
也许我们工作中最具挑战性的部分就是要围绕 Apple 的发布时间表来安排一切。我们要花整个夏天为秋季 iOS 系统更新做准备,这个更新通常会随着新 iPhone 一起发布。之后我们还要匆忙测试应用并适配新的相机硬件。如果运气好的话,我们每年也就只有六个月时间来规划产品方向。
That said, constraints help you focus. We decided that Orion had to launch when iOS 17 dropped, because we expected lots of similar apps to pop up over time, and we wanted to be there right out of the gate. Orion had to ship in 45 days, so we made it work.
不过,限制也能帮助我们更专注。我们决定 Orion 必须与 iOS 17 同步推出,因为我们预计随着时间推移会出现很多类似的应用,而我们希望能够抢占先机。Orion 必须在 45 天内发布,所以我们全力以赴让它如期完成。
I'm not advocating crunch time, where developers work long hours for the sake of unrealistic deadlines. Quite the opposite. Deadlines force us to accept that we won't get everything done in 1.0. We have the freedom to cut as many features as needed to keep things sustainable. The old adage goes, "Work expands so as to fill the time available for its completion," but can't the same be true for work shrinkage?
我并不是在提倡"赶工期" (crunch time),即为了不切实际的截止日期而让开发者超时工作。恰恰相反。截止日期让我们不得不接受这样一个事实:在 1.0 版本中不可能实现所有功能。我们可以自由决定削减多少功能来确保项目的可持续性。俗话说:"工作会自动膨胀来填满所有可用时间",那么反过来说,工作是不是也能够根据时间来适当精简呢?
The question was whether we could ship a whole new camera app within four months, before my baby's due date. It might sound ridiculous, given Halide 1.0 took one year to ship, but Orion proved how much more productive we could be with the latest technology, and this time we were building a camera with seven years of experience in Apple's AV stack.
问题在于我们能否在四个月内,在我的孩子出生之前,推出一款全新的相机应用。考虑到 Halide 1.0 用了整整一年才发布,这个目标可能听起来很不现实。但 Orion 项目证明,借助最新技术我们的效率可以提高很多。而且这一次,我们已经积累了七年操作 Apple 音视频系统的经验。
One reason that Halide and Spectre each took a year was that we handled 100% of each project ourselves. With Orion, we worked with Anton Heestand on its wonderful over-the-top onboarding, and Cabel Sasser wrote us an intro song! It turns out we can delegate work and collaborate with friends without losing any character.
Halide 和 Spectre 各花了一年时间的原因之一是我们包揽了项目的所有工作。而在 Orion 项目中,我们与 Anton Heestand 合作开发了绚丽的新手引导界面,Cabel Sasser 还为我们创作了一首主题曲!事实证明,我们完全可以把工作分配出去,与朋友合作,同时又不失去产品的独特个性。
The biggest risk with our four-month deadline had nothing to do with code. We were worried that we didn't yet understand what we were building. There were already plenty of free apps that let you record Apple Log. What could our new app bring to the table?
我们四个月期限面临的最大风险其实与代码无关。我们担心的是可能还没有完全理解我们到底要开发什么样的产品。市面上已经有很多免费应用支持录制 Apple Log (苹果专业级视频格式)。那么,我们的新应用能为用户带来什么与众不同的价值呢?
定义产品(Defining the Product)
After surveying the app landscape, we quickly realized that every app that supports Apple Log targets advanced users. These types of users look at a high-end camera rig and go, "Wow! Cool!"
在调研应用程序领域后,我们很快发现所有支持 Apple Log 的应用都是面向专业用户的。这类用户看到高端相机设备时会发出由衷的赞叹:"哇!太酷了!"
Don’t get me wrong, we love this stuff, but we weren't excited to build a high-end tool exclusive to pros. But as we dug into the techniques of filmmaking, I had a flashback to the late 90s and early 2000s. I grew up on the cusp of digital filmmaking and had lots of fun making short movies with friends.
需要说明的是,虽然我们也热爱这些专业设备,但并不想仅仅开发一款面向专业人士的高端工具。当我们深入研究电影制作技术时,我回想起了90年代末和2000年代初的经历。我在数字电影制作的初期成长起来,那时候和朋友们一起制作短片的经历让我乐在其中。
In the mid-2000s, we used a ridiculous camera that had been modified to shoot 10-bit log footage. That hacked camera required a handful of portable hard drives that would overheat at the worst times, but these technical shenanigans piqued my curiosity, and led me down a path where I now build camera apps for a living.
在2000年代中期,我们使用过一台经过改装的特殊相机,它能够拍摄10位的 log 格式视频。这台改装过的相机需要配备多个便携硬盘,而这些硬盘总是在最不合适的时候过热,但正是这些技术探索激发了我的好奇心,最终让我走上了开发相机应用程序的职业道路。
Returning to the world of filmmaking excited me. I could build an app for 99% of people just starting who wish they could record beautiful, cinematic videos, but can't make heads or tails of "colorspaces" or "shutter angles." I had the chance to build the camera I wish I had decades ago.
重新投入电影制作领域让我感到无比兴奋。我可以为那99%的初学者开发一款应用,这些人渴望拍摄出优美的、富有电影感的视频,却对"colorspaces"或"shutter angles"这样的术语一头雾水。这给了我一个机会,去开发一款我在几十年前就梦寐以求的相机。
If we have one guiding principle, it’s the belief that "intuitive" and "powerful” do not have to be mutually exclusive. We thought our app could deliver 95% of the features demanded by high-end professionals without making the app too complex for novices. We'd start with an approachable 1.0, and carefully layering on more advanced features over time.
如果说我们有什么核心理念,那就是坚信"直观性"和"强大功能"并非不可兼得。我们相信,我们的应用可以实现95%的专业级功能,同时保持对新手友好的简单性。我们计划从一个易于上手的1.0版本开始,随着时间推移,谨慎地增加更多进阶功能。
It turned out, Sebastiaan had been quietly designing concepts for a video app for quite a while. This is how early some of Kino’s most recognizable visual elements were born, like the recording tally light ring that follows the curvature of your iPhone’s screen, or the little segmented audio levels.
原来,Sebastiaan 早已悄悄开始构思一款视频应用的设计。正是在这个早期阶段,Kino 最具标志性的视觉元素就已经诞生了,比如那个沿着 iPhone 屏幕弧度延伸的录制指示灯环,以及那个精巧的分段音频电平显示。
That said, the worst way to explore a product is with a pixel-perfect version. A beautiful UX takes extra time, and pretty images can distract you from fundamental problems. So in the interest of speed, I spent the next few weeks focusing on a functional prototype that resembled Sebastiaan's concepts. It could record Apple Log footage, connect to an external microphone, and let us quickly experiment with UI concepts.
不过,用一个完美到每个像素的版本来探索产品反而是最糟糕的方式。打造精美的用户体验需要投入大量时间,而过分精美的界面可能会让我们忽视一些根本性问题。因此为了加快进度,我在接下来的几周里专注于开发一个基于 Sebastiaan 概念的功能性原型。这个原型可以录制 Apple Log 格式的视频,支持外接麦克风,让我们能够快速测试各种界面设计理念。
In December 2023, just as our prototype built momentum, news broke that Filmic Pro— the most popular filmmaking app on the App Store— was shutting down. This left a vacuum in the ecosystem of filmmaking apps and a material loss in our tiny community of camera apps.
2023 年 12 月,就在我们的原型开发势头正好之际,App Store 上最受欢迎的电影制作应用 Filmic Pro 突然宣布停运。这不仅在电影制作应用生态中留下了巨大空白,也给我们这个小型相机应用开发社区带来了实质性打击。
Normally, we don't pre-announce products. Part of it might be Sebastiaan’s ex-Apple penchant for secrecy, to announce stuff and surprise and delight. But it also raises expectations and runs the risk of committing to features that might not work out. At the same time, the demise of Filmic was an invaluable opportunity to announce our new app and test demand. We decided to pre-announce.
通常情况下,我们不会提前公布产品。这部分可能源于 Sebastiaan 在 Apple 工作时养成的习惯——保持神秘感,在发布时带给用户惊喜。但提前公布也会抬高用户期望,还可能让我们承诺一些最终无法实现的功能。然而,Filmic 的退出为我们提供了一个绝佳的机会来宣布新应用并测试市场需求。于是我们决定提前发布消息。
First, our app needed a name, and we didn't want to repeat the pronunciation ambiguity of "Halide." (Note: Sebastiaan says Hey-lide, and I say Hal-ide, but we switch every other week.) Sebastiaan floated a name that both encapsulated ‘craft video’ and sounded friendly: Kino.
首先,我们需要给应用取个名字,而且不想重蹈"Halide"发音混乱的覆辙。(注:Sebastiaan 读作 Hey-lide,我读作 Hal-ide,不过我们每隔一周就会互换着念。) Sebastiaan 想到了一个既能体现"精心制作的视频"理念,又听起来很亲切的名字:Kino。
I spent 24 hours shooting an announcement video with our alpha build, and we launched a teaser page at shotwithkino.com.
我用了 24 小时用 alpha 版本制作了一段宣传视频,并在 shotwithkino.com 上线了预告页面。
The reception to our video was overwhelmingly positive, and it felt like we had a hit on our hands.
我们的视频获得了极其热烈的反响,这让我们觉得这款产品一定会大获成功。
Now we just had to ship it. Wait… what were we shipping?
接下来就只剩下正式发布了。不过等等...我们到底要发布一个什么样的产品呢?
12月:一键调色(December: Instant Grade)
Sometimes building products is like writing a story. Writers don't go, "Once upon a time," and finish the story in one pass. Many writers approach a blank page with ideas for characters, major plot points, and themes running through their heads. The hard part is forming loose ideas into a cohesive structure. It's called "cracking the story," and there's a similar process in building products.
有时候开发产品就像写故事。作者不会一口气从"很久很久以前"写到故事结尾。许多作者在面对空白页面时,脑海中已经有了人物、关键情节和主题的构思。最难的部分是如何将这些零散的想法组织成一个完整的结构。这在写作界称为"构建故事框架",产品开发中也有类似的过程。
We decided a good starting point was to shoot videos. When you're forced to eat your own dog food, you quickly figure out what works and what doesn't. In a meta turn of events, we made a video about making Kino.
我们决定先从拍摄视频入手。当你真正开始使用自己开发的产品时,就能很快发现它的优缺点。有趣的是,我们还制作了一个展示 Kino 开发过程的视频。
We appreciated the natural look of Apple Log footage, as it didn't have the same post-processing you see in iPhone video. The hard part is giving log footage a nice treatment. Straight out of the camera, Apple Log looks… uh…
我们很欣赏 Apple Log 格式视频的自然画质,因为它不像 iPhone 视频那样带有预设的后期处理效果。但难点在于如何恰当处理 log 格式的素材。直接从相机导出的 Apple Log 画面看起来嗯...确实不太美观。
Log footage is supposed to look that way. It just contains the ingredients that can make up gorgeous images, and it's your job to bake them. You're supposed to bring it into a high-end tool like Davinci Resolve to "color grade" it. While these tools feel empowering to professionals, to a novice, they feel as intuitive as the cockpit of a commercial airplane.
Log 格式的视频本来就应该是这样的。它就像是未经烹饪的食材,虽然看起来很原始,但包含了制作精美画面所需的所有信息,关键是要懂得如何处理。传统方法是将素材导入 Davinci Resolve 这类专业软件进行"调色 (Color Grade)"。这些工具对专业人士来说得心应手,但对新手而言就像面对飞机驾驶舱一样无从下手。
We knew Kino could be a game changer if it let everyone grade their footage right in the app with a tap, by using a handful of packaged presets.
我们意识到,如果 Kino 能让所有用户通过简单的点击操作,利用一些预设好的调色方案来处理视频,那将是一个重大突破。
But why stop there? We could let you import a preset from anywhere. Apple Log was only a month old, but pros were already selling great grade packs, ready to be imported into your favorite editing suite.
但我们的野心不止于此。我们还可以让用户从任何地方导入调色预设。虽然 Apple Log 才发布一个月,但专业调色师已经在销售各种优质的调色预设包,可以直接导入到你喜欢的剪辑软件中使用。
And if you're a high-end user, you could even author your own looks in Resolve! Speaking of the high end…
如果你是专业用户,甚至可以在 Resolve 中创作自己的调色风格!说到专业级应用...
满足专业用户需求(Tackling the High End)
On the other end of the spectrum, we had to figure out what professionals demand. We packed up and flew down to Los Angeles, where Sebastiaan booked us into the only NFT hotel in town (Sebastiaan Note: So sorry, I had no idea).
在产品定位的另一端,我们需要了解专业用户的诉求。为此我们前往洛杉矶实地调研,Sebastiaan 给我们订了城里唯一的一家 NFT 主题酒店 (Sebastiaan 注:真的很抱歉,我当时并不知情)。
It led us to interview Stu Maschwitz, Adam Lisagor, and others. We asked what they would want in an app, but it was ultimately up to us to decide what features work with our casual user experience.
我们采访了 Stu Maschwitz、Adam Lisagor 等专业人士。虽然我们询问了他们对应用功能的期望,但最终还是需要我们来权衡哪些功能适合我们的日常用户体验。
Pros wanted two things: adjustability, and consistency. Adjustability was straightforward. Like Halide, we just needed a manual mode that lets you adjust the shutter, ISO, and more.
专业用户主要有两个需求:可调节性和一致性。可调节性比较好理解,就像 Halide 一样,我们只需要提供一个可以调节快门、ISO (感光度) 等参数的手动模式即可。
Consistency was a bit more nuanced. For example, Pros want to lock exposure settings at the start of the recording. This doesn't happen with the iPhone's first-party camera, where exposure settings can change mid-recording. This means that if someone walks into your video wearing a dark shirt, the image could change its overall brightness to compensate. This feels off, and you never see it in real movies.
一致性这个需求则相对微妙一些。比如,专业用户希望在开始录制时就锁定曝光设置。这一点在 iPhone 原生相机上是做不到的,因为它的曝光设置会在录制过程中自动调整。这意味着如果有人穿着深色衣服走入画面,相机可能会自动调亮整个画面来补偿。这种效果看起来很业余,在专业电影中是绝对不会出现的。
However, locked exposure could confuse casual users. We could already imagine confused customer support emails like, "I started recording a movie inside my house, I walked outside, and everything was too bright!” They aren't wrong. Most people expect their cameras to just work.
不过,曝光锁定功能可能会让普通用户感到困惑。我们已经能预见到这样的用户反馈邮件:"我在室内开始录像,一走到户外画面就全白了!"这种抱怨也很合理,因为大多数用户都希望相机能自动调节。
Exposure locking warranted a toggle, which we'd leave off by default.
因此我们决定把曝光锁定做成一个可选功能,默认关闭。
But how would a professional know this feature exists, to begin with? We settled on an extra screen in our first-launch experience that lets you dig into all the customizable options.
但问题来了:专业用户要如何发现这个功能的存在呢?最后我们决定在首次使用引导中添加一个专门的界面,让用户可以查看所有高级设置选项。
Giving users extensive options makes things harder to test and develop, but we couldn't take a one-size-fits-all approach. We think this struck a nice compromise, and everything felt on track for our February release.
为用户提供丰富的自定义选项确实增加了开发和测试的难度,但我们也不能用同一个标准来满足所有人。我们认为目前的方案是一个不错的平衡点,项目进展顺利,有望在二月如期发布。
一月里的新挑战(January Battles)
With Instant Grade now in our early alpha, something funny happened: we began using it all the time. It wasn't because we had to, but because we loved the results. This was a good omen, since we had two months left on our schedule, and this was the point that the app should be coming together. Soon we'd have to shift gears into polishing the interface and hunting for bugs.
当我们的即时调色功能 (Instant Grade) 还在内测阶段时,有趣的事情发生了:我们开始频繁地使用它,不是因为必须,而是因为真的很喜欢它的效果。这是个好兆头,因为按照计划还剩两个月,而这正是应用程序应该开始成型的阶段。接下来我们就要转向优化界面和排查问题了。
According to Sebastiaan, there's a Dutch saying, "The last lead weighs the most." It stems from typesetters, who had to take little lead letters and set them in a clamp to write out text. Near the end of a sentence, things get heavy, and the final words are the hardest to set.
Sebastiaan 跟我们分享了一句荷兰谚语:"最后一块铅字最重"。这来自于活字印刷时代,印刷工人需要把小铅字一个个放进夹具中排版。当排到句子末尾时,累积的重量让最后几个字特别难排。这个比喻用在我们现在的处境再合适不过了。
Once an app rises in quality and things feel "real," weaknesses stand out more, and as we were about to finish off our sentence, we realized we missed a word.
随着应用质量的提升,一切看起来越来越"靠谱"的时候,问题也变得更加明显。就在我们即将完成这个项目时,我们发现遗漏了一个重要功能。
A few weeks into January, we knew something felt off. Stepping back, we realized it was onerous and silly to reach for manual exposure controls to create that signature "180-degree" look you see in films. If you aren't a camera nerd, 180 degrees means nothing, so bear with me.
一月中旬,我们察觉到了一些不对劲的地方。仔细思考后,我们意识到让用户手动调整曝光参数来实现电影中那种经典的"180度快门"效果,实在是太麻烦了。如果你不是摄影发烧友,可能不太理解"180度"是什么意思,让我来解释一下。
Just like a photograph, every frame of a film or video is exposed to light for a split second. The longer you expose an image, the more blur you see when objects move. While photographers generally avoid motion blur, in filmmaking, motion blur is a subtle detail that gives Hollywood films a certain feeling.
就像拍照一样,视频中的每一帧画面都需要一定的曝光时间。曝光时间越长,移动的物体在画面中就会产生越多的模糊效果。虽然在静态摄影中,摄影师们通常会避免这种运动模糊,但在电影拍摄中,适度的运动模糊反而能带来那种好莱坞电影特有的流畅感。
To that end, most cinematographers set their cameras to expose at half the frame rate; most movies are shot at 24 frames per second, with each image exposed at 1/48 of a second. The term "180-degree shutter" dates back to analog cameras, which had spinning wheels in front of their film gates.
为了达到这个效果,电影摄影师们通常会把相机的曝光时间设置为帧率的一半。比如,大多数电影是以每秒24帧的速度拍摄的,那么每一帧的曝光时间就是1/48秒。"180度快门"这个术语来自老式胶片相机,因为它们使用旋转快门系统。
All of this stuff overwhelms beginners. If we set out to make cinematic video accessible to everyone, we had to do more than make manual settings friendlier. Kino should just handle these settings for you. You tap the record button, and an algorithm handles the 180-degree shutter. It automated cinematic motion, so we branded it... "AutoMotion."
这些专业设置对新手来说确实太复杂了。既然我们的目标是让每个人都能轻松拍出电影级的视频,那就不能只是简单地优化手动设置界面。Kino 应该自动处理这些设置:用户只需要按下录制按钮,算法就会自动控制180度快门效果。我们把这个自动控制电影运动效果的功能命名为"AutoMotion"(自动运动控制)。
I knocked out a simple version of AutoMotion in a few hours. It only worked when the user enabled that exposure-lock feature I talked about earlier because it was easiest to calculate these settings once, at the start of the recording, rather than updating it continuously. It didn't take long to realize the feature was awesome. Combined with Instant Grade, it produced videos that really did look like they came from a cinema camera.
我花了几个小时就完成了 AutoMotion 的初版。当时它只能在用户开启曝光锁定功能时才能使用,因为在录制开始时一次性计算这些参数比持续更新要简单得多。很快我们就发现这个功能非常棒,配合即时调色功能,拍出的视频真的很有电影感。
There were just two issues. First, AutoMotion can't work in bright daylight without attaching an ND filter in front of the lens. It's just a limitation of light and physics. Hey, if Kino is a smash hit, maybe Apple could address this with some sort of integrated ND filter in the iPhone 18? Until then, users will want to know if it's active or not, so they have a chance to fiddle with lighting. We solved that by turning the "auto” button green when you're good to go.
不过我们遇到了两个问题。首先,在强光下,如果不在镜头前加装减光镜 (ND 滤镜),AutoMotion 就无法正常工作。这是光学物理的限制。也许如果 Kino 大获成功,Apple 会在 iPhone 18 中加入内置减光镜呢?在此之前,我们需要让用户知道这个功能是否可用,这样他们就能相应地调整拍摄环境。我们的解决方案是:当条件适合时,"自动"按钮会变成绿色。
The second issue came from feedback from our early testers. They expected exposure to continue to adjust during recording. And— ugh — they were right. If we were to serve beginners, "AutoMotion" had to work out of the box without toggling any advanced features. So we made the difficult decision to derail the schedule a bit to get this working with continuous auto-exposure.
第二个问题来自早期测试用户的反馈。他们希望在录制过程中曝光能够自动调整。说实话,他们说得对。如果我们想要服务好新手用户,"AutoMotion"就应该开箱即用,不需要额外设置任何高级选项。于是我们做了个艰难的决定:暂时偏离原定计划,着手开发配合自动曝光的新版本。
重新设计引导体验(Onboarding Reset)
We love to make the onboarding in our apps fun. We started with a little book in Halide that works as a manual, recalling old vintage camera manuals. In Orion, you unbox your ‘appliance’. We had big plans for Kino, but we were short on time and our plans to use a subcontractor had fallen through, which meant that we had to build it ourselves.
我们一直致力于让应用的新手引导过程变得有趣。最早在 Halide 中,我们设计了一本小册子作为使用手册,让人想起复古相机的说明书。在 Orion 中,我们则让用户体验"开箱"的乐趣。对于 Kino,我们原本有很多宏大的计划,但由于时间紧迫,加上与外包团队合作的计划未能实现,我们只能自己动手完成。
Scaling back our ambitions, we married our two past approaches: Kino would open up to a similar "manual" concept that we previously used in Halide and Orion. If we had time, we'd add a little unboxing.
为了适应现实,我们结合了之前两款应用的经验:Kino 采用了类似于 Halide 和 Orion 的"使用手册"概念。如果时间允许,我们还会加入一些开箱体验的元素。
It was also time to nail our app's overall styling. We wanted something less ‘campy’ than Orion's over-the-top 80s-electronics theme. There would be no custom VCR display typefaces, but we did take inspiration from Sony’s vintage camcorders.
这也是我们确定应用整体设计风格的好时机。我们希望设计风格不要像 Orion 那样过分强调 80 年代电子产品的夸张风格。虽然我们没有使用自定义的录像机显示字体,但确实从 Sony 经典摄像机中汲取了灵感。
With Halide and Kino being siblings, we wanted stylistic consistency, but this time with more color. Sebastiaan initially conceived of our built-in presets having small, emoji-like icons or frame previews, though he settled on more film-like packaging.
考虑到 Halide 和 Kino 是同一产品系列,我们希望保持风格统一,但这次要增添更多色彩元素。Sebastiaan 最初设想为内置预设设计小型的、类似表情符号的图标或画面预览,不过最终他选择了更接近胶片包装的设计风格。
Working with longtime collaborator and designer Jelmar Geertsma, we even created a set of retro-like feature graphics for some of the features of the app. We only ended up using these on the box you open to start the app, but that’s OK. They’re still really cool.
我们与长期合作的设计师 Jelmar Geertsma 一起,为应用的部分功能创作了一系列复古风格的特征图形。虽然这些设计最终只用在了应用启动界面的包装盒上,但效果依然很棒。
Jelmar’s work is also in other areas of the app — like in our very own family of typefaces we call Ambrotype, including a monospaced version that shines everywhere from the format settings to the timecode.
Jelmar 的设计才能在应用的其他方面也得到了充分展现 — 比如我们自主开发的 Ambrotype 字体系列,其中包括一个等宽字体版本,在格式设置和时间码显示等各个场景中都表现出色。
配置选项之殇(Death by a Thousand Configurations)
Halide introduced us to the reality that everyone shoots differently, and video brings even more choices. For instance, Hollywood filmmakers usually shoot at 24 frames per second, while respected video creators like Marques Brownlee prefer 30 FPS. Rather than present every possible option, we started with a drop-down menu that let users pick from common presets:
Halide 让我们意识到每个人都有自己独特的拍摄习惯,而视频更是带来了更多的选择可能。比如,好莱坞电影制作人通常以每秒 24 帧 (24 FPS) 进行拍摄,而像 Marques Brownlee 这样备受推崇的视频创作者则偏好每秒 30 帧 (30 FPS)。为了简化操作,我们最初设计了一个下拉菜单,让用户可以从常用预设中进行选择:
This was too limiting for pros, so if you needed more than that, we have a nice screen to build your own custom configuration:
但这对专业用户来说过于受限,因此我们又开发了一个界面,让用户能够自由构建个性化配置:
This felt perfect from a product perspective, but once you give users infinite control to customize settings, they are guaranteed to come across every weird bug in iOS.
从产品设计的角度来看,这样的方案似乎很完美,但事实证明,一旦给予用户完全自由的设置权限,他们就一定会触碰到 iOS 系统中各种意想不到的问题。
For example, we discovered that on the iPhone 15 Pro it isn't possible to shoot:
例如,我们发现在 iPhone 15 Pro 上无法同时满足以下条件:
- Apple Log video;
- at 60 FPS;
- with stabilization enabled;
- when shooting from the telephoto camera.
- 使用 Apple Log 视频格式;
- 设置 60 FPS;
- 开启影像稳定功能;
- 使用长焦摄像头拍摄。
We can't explain why that one particular camera has the issue, but if the user configured things that way, the video stream shuts down. We called these "dead viewfinder" problems. We haven’t done the math on how many permutations there are for settings across all iPhones, but suffice to say there are a lot.
我们至今无法解释为什么这个特定摄像头会出现这种问题,但只要用户按照上述方式配置,视频预览就会直接黑屏。我们将这类问题称为"取景器黑屏故障"。虽然我们没有具体计算过在所有 iPhone 机型上可能出现的设置组合数量,但毫无疑问,这个数字相当庞大。
Despite how much we thought we knew about the iPhone's AV system, we spent a good chunk of January discovering weird edge cases and searching for workarounds.
尽管我们自认为对 iPhone 的视频采集系统 (AV system) 已经相当了解,但我们仍然花费了整个一月的大部分时间来排查各种特殊情况并寻找应对方案。
二月:计划变更(February: The Schedule Changes)
January's setbacks cost weeks of our schedule. Entering February, we knew exactly what to ship with Kino 1.0, but hitting our deadline would mean sacrificing quality. The app wouldn't be polished, and we felt uneasy about how few devices we had tested.
一月的挫折让我们的进度落后了好几周。进入二月,虽然我们已经明确了 Kino 1.0 要发布的内容,但如果要赶上原定截止日期就必须牺牲产品质量。这样的话应用程序将无法达到理想的完成度,而且我们对测试覆盖的设备太少也感到忧虑。
We considered limiting Kino only to the latest devices at launch, but as it turns out the App Store doesn't have a way to limit device support at a granular level. Apple wants iPhones to have a long life, so it makes sense they make it hard for developers to opt out of supporting older devices.
我们考虑过在发布时将 Kino 限制在最新设备上使用,但后来发现 App Store 并没有提供这种精细的设备支持限制功能。这其实也情有可原,因为 Apple 希望 iPhone 能有较长的使用寿命,所以他们不会轻易让开发者放弃对旧设备的支持。
It was a tough pill to swallow, but we accepted that we weren't going to hit the 1.0 deadline that we announced. We kept our chin up and acknowledged that it happens to the best of teams. "A delayed game is eventually good, but a rushed game is forever bad."
这个决定虽然难以接受,但我们不得不承认无法按原计划完成 1.0 版本。我们保持积极的态度,也认识到这种情况即便是最优秀的团队也会遇到。就像人们常说的:"延迟发布的游戏终将变得出色,但仓促发布的游戏永远都是糟糕的。"
Rather than throw out the deadline entirely, we changed the goalposts. We'd release a feature-complete beta version to a large group of testers. Over paternity leave, the team would collect bug reports and other feedback, so I could hit the ground running when I returned. We'd target the new launch date for the end of May, coinciding with the seven-year anniversary of Halide 1.0.
我们没有完全放弃期限,而是调整了目标:先向大量测试者发布一个功能完整的测试版。在我休陪产假期间,团队将收集错误报告和其他反馈,这样等我回来就能立即开始着手处理。我们将新的发布日期定在五月底,正好与 Halide 1.0 的七周年纪念日相吻合。
With the new schedule in place, we began compiling a beta tester list, preparing release notes, writing up known bugs, and… and… well, then life had other plans.
在确定新的时间表后,我们开始着手准备测试者名单、撰写发布说明、整理已知问题等工作。但是...但是...生活总是充满意外。
On February 7, 2024, our prenatal check-up discovered my wife had run out of amniotic fluid. That's bad. We ended up shipping our son, Ethan Marc Sandofsky, that day.
2024 年 2 月 7 日,在产前检查时发现我妻子的羊水已经耗尽。情况很危急。就这样,我们的儿子 Ethan Marc Sandofsky 在当天就提前来到了这个世界。
I'm off for a bit.
我需要暂时离开一段时间。
2024年春季:最后冲刺(Spring 2024: The Final Stretch)
I’ll take over here. Hey, it’s Sebastiaan! I am the other half of the team building things. While I can’t code (much), we luckily entered Ben’s paternity leave with Kino solid enough for a beta release without his involvement.
让我来继续讲述吧。大家好,我是 Sebastiaan!我是开发团队中的另一位成员。虽然我编程能力有限,但幸运的是,在 Ben 休陪产假之前,Kino 已经发展得相当成熟,足以进行 beta 测试了。
While a deadline slipping is always a bad situation, it was also an opportunity for us to seize on extra time to build out our product more. While we’d gather feedback, index our weak spots and find bugs, I was going to work hard on the most important part of the app: helping people get great-looking shots.
虽然项目延期从来都不是好事,但这也给了我们一个机会,让我们能够利用这段额外的时间来完善产品。在收集用户反馈、找出产品不足和修复 bug 的同时,我将专注于应用程序最核心的部分:帮助用户拍摄出精彩的照片。
I like to say that there are two ways to help people get a better picture. You can create a shiny button — whether that is a preset, filter, effect, algorithm, or something else — to make an image look beautiful. This helps a lot: it can make otherwise unimpressive shots look great, is super approachable, and often simple. The problem, possibly, can be that everyone gets similar results.
在我看来,要帮助人们拍出更好的照片有两种方式。第一种是提供便捷的功能——可能是预设、滤镜、特效、算法或其他工具——来让照片更加美观。这种方式确实很有效:它能让普通的照片焕然一新,使用起来也很简单直观。但可能存在的问题是,每个人的作品都会变得千篇一律。
The second way, which is far more difficult, isn’t to make the image nicer looking. Instead of offering a button, offer teachings. Make the user better at photo- or videography. It’s far more difficult, but also more satisfying for users, and allows anyone to discover their own style.
第二种方式则要困难得多,它不是简单地美化图片,而是注重教学。我们要做的是提升用户的摄影或视频制作水平。这种方式虽然难度更大,但能给用户带来更大的成就感,也能让每个人都发掘出自己独特的风格。
Ideally, Kino would cover both of these. But it meant a lot of extra work — extra work I now had some time for...
理想情况下,Kino 应该能够兼顾这两个方面。当然,这意味着需要投入更多的工作——而现在,我正好有时间来做这件事。
在 Grade 公司(In Grade Company)
Video is far more complicated than photography, and Apple Log allowed for beautiful results that were far from homogenous with the color-grade presets I made for Kino. That being said, I mostly edit photos — video color work wasn’t my expertise.
视频制作比摄影要复杂得多,Apple Log (苹果日志格式) 能够产生非常优美的效果,这与我为 Kino 开发的调色预设有很大的不同。不过说实话,我主要是做照片编辑的——视频调色并不是我的专长领域。
I decided to reach out to the people I admired the most in the field. Some were longtime friends, like Adam Lisagor. An incredibly kind man with an inimitable studio Sandwich Video, he was eager to help — bless him. Other, newer friends like Tyler Stalman, whose presets and videos I absolutely loved also got on board with enthusiasm.
于是我决定向这个领域里我最敬佩的一些人寻求帮助。其中有一些是我的老朋友,比如 Adam Lisagor。他是一位非常友善的人,经营着独具特色的 Sandwich Video 工作室,他很热心地愿意帮忙,真是太感谢他了。还有一些新朋友,比如 Tyler Stalman,我特别喜欢他的预设和视频作品,他们也都热情地加入了进来。
Stu Maschwitz was a new acquaintance, introduced to me when we went to ask pros in our network — a fantastic, gentle, patient and hyper-talented guy who helped me a lot during my process, to the point of sitting down with me in his studio to talk about color, workflow and pipelines. I returned the favor by personally implementing his suggestions.
通过我们的人脉网络,我认识了 Stu Maschwitz——他是一位才华横溢又温和耐心的专业人士,在整个过程中给了我很多帮助,甚至邀请我到他的工作室,详细讨论色彩、工作流程和制作流程等问题。作为回报,我认真地将他的建议都付诸实践。
Then there were people I wasn’t that close with. I had never chatted with Kevin Ong or Evan Schneider, but after I explained our vision for Kino they too were interested in working with us. Evan ended up providing me with tons of helpful feedback — he is a fantastically skilled colorist and creative, and was generous with his time to help me become wiser about the craft and to help Kino be as great as it could be.
还有一些之前并不熟识的人。我此前从未与 Kevin Ong 或 Evan Schneider 交谈过,但当我向他们介绍了我们对 Kino 的愿景后,他们也对合作表现出了浓厚的兴趣。Evan 后来给了我大量宝贵的反馈——他是一位技艺精湛的调色师和创意人才,慷慨地付出时间来指导我提升专业技能,也帮助 Kino 达到最好的效果。
Then there were the teachings.
接下来就是他们的悉心指导。
Teachings, to me, don’t mean dropping a textbook or floating tips in the app.
在我看来,教学不是简单地扔给用户一本教科书,或是在应用程序中随意放置一些提示。
The best software interfaces are obvious, and empowering in their intuitiveness.
最好的软件界面应该是显而易见的,其直观性能让用户轻松掌握使用方法。
Not all concepts can be intuitive from the start, but if you think about it, there’s a name for a simple, pared-down interface or example of a complex problem: it’s a lesson. Whether it’s a scenario of two trains meeting in math class, or a simpler interface to camera exposure that shows you how the image changes as you swipe a slider, they both help you get acquainted with the fundamentals of something by absorbing the underlying concepts. It does that by only giving you a little bit at a time in an understandable way. If you remove complexity, what remains is more clear, and less overwhelming.
虽然不是所有概念一开始就能直观理解,但仔细想想,当我们把复杂问题简化成容易理解的界面或示例时,这本身就是一堂课。无论是数学课上经典的"两列火车相遇"问题,还是通过滑动控制条直观展示相机曝光效果的简化界面,它们都在帮助用户通过吸收基本概念来理解某个领域的基础知识。这种方式的精妙之处在于每次只提供少量且容易理解的内容。当你去除复杂性后,剩下的内容就会变得更加清晰,也不会让人感到无所适从。
I worked tirelessly on re-doing our onboarding, thinking of ways we could help people get started, and sketching out a set of online resources that users could immediately dig into. Covering frequently asked questions, but also writing a detailed manual for those who wanted to go deep.
我投入了大量精力重新设计我们的新手引导流程,思考如何帮助用户更好地入门,同时规划了一系列用户可以立即上手的在线学习资源。这些资源不仅回答了常见问题,还为想要深入学习的用户提供了详细的使用手册。
For my last coup, I would exceed what we’d done before: I would film some tutorial videos to help people get started.
作为收官之作,我想要突破以往的成果:计划制作一系列入门教程视频。
I am incredibly proud with how much of this we managed to get done, but my inexperience with video led me to one major realization: video is hard, and takes a ton of time. I managed to get great color grades in from myself and my dear new and old friends, and designed our best website yet with the most resources at launch, but tutorial videos didn’t fit into the crunch time.
虽然我为我们完成的众多工作感到自豪,但我在视频制作方面的经验不足让我意识到一个重要事实:视频制作既困难又耗时。我虽然成功地从自己和新老朋友那里获得了出色的视频调色支持,也设计出了我们有史以来最好的网站,在首次发布时就提供了最丰富的资源,但在紧张的开发周期内最终还是未能完成教程视频。
In early March, Ben's mother-in-law visited for a few weeks to help ease his workload at home, giving him a chance to check in and survey the major bugs. It helped ease the transition into…
三月初,Ben的岳母来访了几周,帮他分担了一些家务,这让他有时间来检查和排查主要的程序漏洞。这也帮助我们更顺利地过渡到...
4月到5月:最后冲刺(April to May: the Home Stretch)
Hey! It's Ben, and I'm back, (with a) baby!
嘿!我是 Ben,我回来了,还带着新生宝宝!
As planned, I returned to work in April, hitting the ground running. Most bugs discovered in our wide beta test were fairly mundane, but it still felt like the right call setting the launch in May, rather than pushing to make April.
按计划,我在4月份重返工作岗位,立即全身心投入。在大规模的测试版测试中发现的大多数问题都比较简单,但把发布时间定在5月而不是匆忙在4月发布,依然证明是个明智的决定。
As we fixed bugs, tested older devices, and tied up loose ends, Sebastiaan worked on the final version of ShotWithKino.com. Our friend Adam at Sandwich helped us with the final, authoritative test of Kino: using it on a real production.
在我们修复问题、测试老设备和完善细节的同时,Sebastiaan 正在开发 ShotWithKino.com 的最终版本。我们在 Sandwich 的朋友 Adam 帮助我们进行了 Kino 最具说服力的测试:在实际产品制作中使用它。
The experience was wonderful, messy, and genuine. When the crew ran into issues, we quickly fixed them and turned around a new build. It was a great way to harden Kino for its 1.0 release. There was only one remaining item on the to-do list: charging money.
这次体验精彩纷呈,虽然有些混乱,但非常真实。每当团队遇到问题,我们都能快速修复并发布新版本。这是为 Kino 1.0 版本增强稳定性的绝佳方式。待办事项清单上只剩下最后一件事:定价策略。
I doubt anyone who makes products enjoys the part where you ask for money, and it's even worse with App Stores, where people do not like paying for apps. It's no wonder that the two dominant business models are advertising and freemium.
我想任何产品开发者都不太喜欢谈钱,在应用商店里这个问题更加棘手,因为用户普遍不愿为应用付费。难怪广告和免费增值模式成为了两种主导的商业模式。
When we launched Halide in 2017, folks found it a breath of fresh air that we just charged up-front for our product in an era when subscriptions and in-app purchases were becoming the norm.
2017年我们推出 Halide 时,在订阅制和应用内购买逐渐成为主流的时代,我们只收取一次性购买费用,这让很多人感到耳目一新。
When we launched Halide Mark II in 2020, conventional wisdom said that the pay-up-front business model was dead. We decided to change things up by offering a low-cost subscription in addition to a pay-once option. Subscriptions were a huge win: let us offer free trials, Apple takes a smaller portion of sales, and predictable, recurring revenue made our business healthier and more sustainable.
到2020年推出 Halide Mark II 时,业界普遍认为一次性付费的商业模式已经过时。我们决定改变策略,在保留一次性付费选项的同时增加低价订阅选项。订阅模式取得了巨大成功:我们可以提供免费试用,Apple 抽成比例更低,而且稳定的经常性收入让我们的业务更加健康和可持续。
We considered following Halide's business model, but building a great “paywall” takes time. And honestly, we just didn't feel up for a wave a negative reviews at launch.
我们考虑过采用 Halide 的商业模式,但开发一个好的"付费提示界面"需要不少时间。说实话,我们也不想在发布时就面对一波负面评价。
Ever since Halide began offering subscriptions, we started receiving a steady trickle of negative reviews. People see that the app is free to download, and get upset to find out we charge money; adding all-caps text at the top of our listing warning people that Halide costs money did not help. On top of this, some people leave negative reviews for any apps that offer subscriptions at all, even though we continue to have a pay-once option. We have thick skin so it isn't the end of the world, because this stuff gets exhausting.
自从 Halide 开始提供订阅服务后,我们就持续收到零星的负面评价。用户看到应用可以免费下载,发现需要付费时就会不满;即使我们在应用介绍顶部用大写字母警示 Halide 是付费应用,情况也没有改善。更糟的是,一些用户会对任何提供订阅选项的应用都给出负面评价,尽管我们仍然保留着一次性付费选项。虽然我们已经习惯了这种情况,但这确实会让人感到疲惫。
If people claim they'll support non-subscription products, and they're happy to pay for products upfront, let's give it a go and see what happens. We decided to make Kino pay upfront at launch.
如果用户声称他们愿意支持非订阅产品,并且乐意预先付费,那我们不妨一试。因此,我们决定在 Kino 发布时采用一次性付费模式。
产品发布(The Launch)
On May 29, 2024, we released Kino into the world, to overwhelmingly positive reviews. It shot to the #1 top-paid app, where it remained for three days.
2024 年 5 月 29 日,我们正式发布了 Kino,获得了用户的一致好评。它迅速登上付费应用排行榜榜首,并连续保持了三天。
As for revenue, Kino made 25% more than Halide 1.0's launch, after adjusting for inflation. Sales significantly decayed after a week, but if there's anything I've learned since launching Halide 1.0, it's that the story never ends with the launch. It's the end of the story's first act.
从收入来看,经过通货膨胀调整后,Kino 的收入比 Halide 1.0 发布时高出了 25%。虽然销售额在一周后明显回落,但从发布 Halide 1.0 的经验来看,产品发布并不是故事的结束,而仅仅是第一章的完结。
The hard part comes next, as you're inundated with bug reports and feature requests, and you ask yourself "What did I get myself into?”
最具挑战性的阶段随之而来,当你被大量的 bug 反馈和新功能需求包围时,不禁会问自己"我这是接下了一个什么任务?"
Despite the 100 beta testers leading up to the launch, the larger audience introduced a slew of new bug reports. Most trouble came from users on older phones, usually when recording at 60 frames per second. Other bugs were simply random, like the image stabilization system causing trouble with our AutoMotion algorithm.
尽管发布前有 100 位测试用户参与内测,但面向更广大用户群后,我们还是收到了大量新的问题反馈。大多数问题出现在旧款手机上,特别是在每秒 60 帧的视频录制时。此外还有一些随机出现的问题,比如图像稳定系统与我们的 AutoMotion 算法产生冲突。
Luckily, WWDC arrived a few weeks later, and I showed up to Cupertino with a long list of questions in hand for Apple's AV engineers.
好在几周后苹果全球开发者大会 (WWDC) 召开,我带着一份详细的问题清单来到了位于 Cupertino 的苹果总部,向苹果的音视频工程师们寻求帮助。
It took a month to squash these major bugs, getting Kino in a stable post-launch state. Then we shifted our attention toward feature requests, which we launched last week.
我们用了一个月的时间修复这些主要问题,使 Kino 达到了稳定的运行状态。之后,我们将重心转向了用户需求的新功能开发,这些功能已于上周发布。
Kino 1.1:首次重大更新(Kino 1.1: The First Big Update)
Following our goal of serving both casual and high-end user needs, we shipped features for each group.
为了满足普通用户和专业用户的不同需求,我们这次为两类用户群体都带来了新功能。
专业功能:手动白平衡(For the Pros: Manual White Balance)
Our high-end users asked for extensive control over white balance. Much more so than Halide, where we simply let users pick from several presets — which we do because RAW images allow for full white balance control during editing anyway.
我们的专业用户希望能够更全面地控制白平衡功能。这比 Halide 提供的功能要丰富得多——在 Halide 中我们只提供几个预设选项,因为反正 RAW 图像在后期编辑时就能完全控制白平衡。
When shooting video, you might want to dial in a specific white balance that's consistent with multiple cameras, or you want to ensure that every shot in a series has the same settings. Whatever your reason, Kino supports both white balance presets, and manual configurations through our beautiful, tactile picker.
在视频拍摄时,你可能需要调整特定的白平衡来确保多个相机之间的一致性,或者想要确保一系列拍摄都使用相同的设置。无论出于什么原因,Kino 都支持白平衡预设,还提供了一个优雅直观的调节面板来进行手动设置。
点击对焦(Tap to Focus)
When researching Kino's UI, we noticed people are ultra-careful to not touch their screens during recording. After all, one errant tap could cause a sudden change in focus, ruining a shop. We made the conscious decision to launch Kino without the "tap to expose" or "tap to focus" that you see in Apple's camera app.
在研究 Kino 的用户界面时,我们发现用户在录制时都特别注意不去触碰屏幕。毕竟,一次意外的触碰可能导致焦点突然改变,破坏整个拍摄效果。因此我们最初特意没有加入 Apple 相机应用中的"点击曝光"或"点击对焦"功能。
While professionals are comfortable fiddling with a focus dial, it turns out everyone else expects the camera on their phone to support tap to focus. Even professionals prefer to tap to focus at times. So we went ahead and added a tap to focus, but with an option to disable it.
虽然专业用户习惯使用对焦转盘,但事实证明其他用户都希望手机相机能支持点击对焦功能。就连专业用户有时候也更倾向于使用点击对焦。所以我们最终还是添加了这个功能,同时提供了关闭选项。
全面提升体验(Better Both Ways)
Remember Sebastiaan’s talk about buttons and teachings?
还记得 Sebastiaan 讨论按钮和教程的内容吗?
Well, we worked on a lot more of both. We added three new Grade presets, and a short tutorial for beginners that pops up the first time you open the app.
我们在这两个方面都做了大量改进。我们新增了三个画面风格预设,并为新手添加了首次打开应用时的简短教程。
Sebastiaan also made a comprehensive tutorial video. Check out our Quick Start guide! More to come.
Sebastiaan 还制作了一个完整的教程视频。欢迎查看我们的快速入门指南!后续还会有更多内容。
Finally, we changed the default setup when you first launch the app. Previously, we things to mimic Apple's own camera app, for the sake of consistency. In retrospect, we should configure it in a way that stands out from Apple's camera. To that end, we now default Kino to shooting Apple Log with a beautiful grade applied.
最后,我们改变了应用首次启动时的默认设置。此前为了保持一致性,我们模仿了 Apple 相机应用的设置。现在回想起来,我们应该让它具有自己的特色,区别于 Apple 相机。因此,我们现在将 Kino 的默认设置改为使用 Apple Log 拍摄,并应用了精美的画面风格。
价格调整(Revisiting Price)
Kino's revenue is off to a great start, but nowhere near the level of Halide. That's to be expected, as it took several major releases for Halide to hit its stride.
Kino 的收入开局不错,但还远未达到 Halide 的水平。这在预料之中,因为 Halide 也是经过几次重大更新才达到现在的成绩。
That being said, we're going to experiment with its price. Kino is normally $20, but we launched at $10. To celebrate our 1.1 launch, we're running one more 50% off sale. With those data points, we're going to play around with prices until we find the sweet spot. That might end up being $15, or it might be $60. After that, maybe we'll be ready to assess the state of pay-up-front apps in 2024.
因此,我们准备对价格进行一些尝试。Kino 的正常价格是 20 美元,但我们以 10 美元的价格发布。为庆祝 1.1 版本发布,我们再次推出五折优惠。通过这些市场反馈,我们会不断调整价格直到找到最佳定价。最终可能是 15 美元,也可能是 60 美元。之后,我们可能就能评估 2024 年一次性付费应用的市场状况了。
关于 Kino 1.0 的总结思考(Final Thoughts on Kino 1.0)
We set out to build Kino in four months, and while we're proud we launched that beta, we did not hit that deadline. I do think we could have hit it if we hadn't struggled with quirks in Apple's AV platform, managed to delegate more things like onboarding, and didn't ship AutoMotion in our 1.0.
我们最初给自己定下了四个月内完成 Kino 的目标。虽然我们为成功发布测试版感到自豪,但还是没能按期完成。回想起来,如果不是在 Apple 的音视频平台上遇到了各种难以预料的特性,能够更好地分配诸如新手引导之类的任务,以及没有在 1.0 版本中加入 AutoMotion 功能,我们应该是能够按期完成的。
However, every project has surprises, and sometimes products are way better off by letting things gestate a bit longer. There will always be things out of your control, no matter how many resources you throw at a problem. "Nine women can't make a baby in one month.”, as they say.
不过每个项目都会遇到意想不到的情况,有时候给产品多一点时间沉淀反而是件好事。就像那句老话说的:"九个女人也不能在一个月内生出一个孩子"——无论投入多少资源,总有一些事情是无法强求的。
It's still the early days, but we're bullish on Kino's potential. There’s undoubtedly a lot of work ahead, but we're going to take a break from Kino to focus on… Halide!
尽管现在还处于起步阶段,但我们对 Kino 的发展前景非常看好。前方确实还有大量工作要做,不过现在我们准备暂时放下 Kino,把注意力转向... Halide!
We're ecstatic about Halide’s future thanks to the lessons we learned these last six months. Kino yielded new technology we can bring over to Halide, from our fresh image processing pipeline to our improved SwiftUI chops.
基于过去六个月积累的经验,我们对 Halide 的未来充满期待。Kino 项目为我们带来了很多新技术,从全新的图像处理流程到更熟练的 SwiftUI 开发技能,这些都可以运用到 Halide 中。
Just as valuable was the fresh perspective. As I mentioned at the start, we're now in the home stretch of a huge new feature in Halide, but we're picking up where we left off with a fresh set of eyes. Can the next stage of Halide strike a similar balance between novice and professional?
更重要的是,这段经历给了我们全新的视角。正如开头提到的,我们正在为 Halide 开发一个重要的新功能,现在到了最后冲刺阶段。不过这次重新开始时,我们带着新的思维方式。我们在思考:Halide 的下一个阶段是否也能在新手用户和专业用户之间找到这样的平衡点?
It's tempting to tell you more, but Kino reaffirmed our decision to err on the side of surprise. We'll talk plenty about the product when it's done. If there's anything we've learned in the last year, it's that you never know what’s ahead.
虽然很想跟大家分享更多细节,但 Kino 的经历让我们更加确信保持低调谨慎的策略是对的。等产品完成后,我们自然会详细介绍。过去一年最大的收获就是:未来总是充满变数。