DualCam

iPhone 双摄录像为什么要等好一会儿才能开始

打开双摄 App 到两路画面都跑起来之间、或者按下录制到文件真正开始写之间,有一小段停顿是正常现象,不是只有你会遇到的问题。让两颗摄像头同时工作,对手机来说要做的准备比只开一颗多,而这些准备必须先完成,两颗摄像头才能真正出画面。

接下来要说清楚的是:怎么分辨这种正常的停顿和一个真正卡住的会话,以及怎么把这段延迟用起来,而不是干等着跟它较劲。

为什么两颗摄像头比一颗启动得慢

普通的采集会话只需要配置并启动一路输入。多路会话要同时给每一路都做这件事,而且是在一个共同的约束下做:会话里每一颗摄像头都必须运行在明确支持多路的格式上,所有输入加起来的负载还要落在同一个硬件预算之内。哪些格式够资格、这个组合装不装得下、装不下该退回哪一档——这些判断都发生在会话真正开始出画面之前,而不是运行途中。

这不是某一个 App 特有的情况。苹果自己给 AVCaptureMultiCamSession 开发者的建议就是:启动一个多路会话明显比启动一个普通会话慢,并建议把这部分工作放到主线程之外去做,好让界面能显示“正在处理”而不是直接卡死。双摄 App 的相机页面出现短暂的加载状态,正是这条建议被落实的样子。

这笔成本只付一次,不是每条都要付

这部分配置工作发生在打开相机页面的时候,或者发生在某个操作强迫会话重新配置的时候——比如切换录制分辨率,这会改变需要重新协商的格式组合,这也是为什么分辨率那篇文章会提到,切换设置之后手机会重新测算一次这笔成本。真正开始录制则是更轻的一步:两颗摄像头已经在跑、已经在出画面的前提下,开始新的一条基本上只是新建一个文件、开始写入,而不是重新搭一遍会话。

这在实际拍摄里的意思是:如果你要连续拍好几条短素材,留在相机页面里比每次都退出 App 再重新打开要快,因为退出正是把会话已经做好的准备工作扔掉的那一步。

与其跟延迟较劲,不如用倒计时

DualCam 的倒计时——关闭、3 秒、5 秒或 10 秒——正是为这种间隙准备的。它在开录前就要设好,因为一旦开始录制就会锁定,把它用来消化这段停顿:倒数归零的时候,会话已经有时间稳定下来,你也已经有时间走进画面。把启动的这点停顿当成必须干等的死时间,按下录制就立刻开口说话,这种感觉上的“卡顿”,很多时候比停顿本身更让人烦躁。

什么时候不只是启动慢

停顿之后很快出现流畅、已经合成好的预览,是正常情况。相机页面一直黑屏,或者预览一直不稳定下来,说明问题出在别处:相机硬件已经被别的 App 或正在进行的通话占用、手机已经烫到开不了第二路采集、或者存储空间不够写文件。这些情况各有各的解法,「双录为什么会中途停止或掉帧」那篇里讲得更细——能在录制途中打断一条视频的那些条件,同样也能让它一开始就没法启动。

延伸问题

同一次使用 App 的时间越长,这段延迟会不会越来越长?

不会。真正费成本的是配置会话本身,这发生在打开相机页面、或某个设置强迫重新配置的时候,跟你已经录了多少条没有关系。在同一次打开的会话里连续拍好几条,通常都很快,因为两颗摄像头已经在跑了。

切到 1080p 会让启动的停顿变长吗?

有可能。更高分辨率的格式要塞进同一个硬件预算里更吃力,协商起来会多花一点时间,在部分机型上甚至根本装不下——DualCam 会在你切换之后重新测算这笔成本,装不下就退回原来的档位。

用了倒计时,还能在开始前改版式吗?

可以。版式、画中画所在的角、大小和形状,以及滤镜,都可以在开始录制之前设置好。分辨率、静音和倒计时本身,才是一开录就锁定的那几项。

想直接开录?

DualCam 让 iPhone 前后摄像头同时工作,边拍边合成为一个 MP4。免费、无需注册、无广告,素材不出手机。

前往 App Store 下载