DualCam

双摄录像为什么会中途停止、降档或掉帧

同时开两颗摄像头再加一路视频编码,是你能让手机干的最重的活之一。当双录提前结束或者明显卡顿时,原因几乎总是四种之一:机器热了、存储不够了、你要的设置超出了多路采集的硬件预算、或者系统把摄像头收走了。它们表现不同,解法也不同。

好消息是:做得规矩的 App 会在这些情况发生时把文件正常收尾,所以被打断的一条只是变短,而不是变成损坏文件。DualCam 在上述每一种情况下都会正确关闭文件。

发热:长镜头提前结束最常见的原因

iOS 会报告一个全设备范围的温度状态,并且是分级上升的。DualCam 在其中两级上有动作。到达「严重」级时,如果你还没开录且选的是 1080p,它会先把你降到 720p——因为在已经很烫的手机上开始一条重负载长镜头,结果通常就是被打断。如果此时你已经在用 1080p 录制,它只会警告你,而不会在文件写到一半时抽掉分辨率。

到达「临界」级时,录制会停止。文件会被收尾保存,并附上说明原因的提示。这一步没有办法强行覆盖,也不应该有:到那个程度系统已经在给处理器降频了,继续采到的帧也不值得留。

真正有用的做法

  • 把手机壳摘掉,尤其是厚壳和不导热的壳。这是最大的一根杠杆。
  • 能避免就别在烈日下、屏幕全亮的状态下拍。
  • 不要刚快充完、或者还插着线就开始长镜头。
  • 长镜头用 720p。每一路的像素吞吐减半,是实打实的负载下降。
  • 把二十分钟拆成几条。两条之间手机有机会把热散掉。

存储:它会在你拿到坏文件之前先停

双录产出的是一个体积正常的视频文件,但它是连续写入的,而且不会在磁盘写满时礼貌地停下。因此 DualCam 会提前检查剩余空间:至少要有 200 MB 空闲才允许开始录制,正在录制时若剩余空间跌破 100 MB 则停止。留这段余量是为了让文件能干净地关闭,而不是在写到一半时被截断。

按 App 约 10 Mbps 的录制码率算,视频大约每分钟吃掉 75 MB,因此 1 GB 空闲约合十三分钟。要拍长镜头就先腾空间;「快满了」不是你想在一条无法重拍的素材录到第十二分钟时才发现的状态。

硬件成本:设置放不下的时候

多路采集会话带有一份硬件成本,必须落在预算之内。输入变量就是两颗摄像头各自的分辨率和帧率。如果你把分辨率调高、配出来的组合超出预算,这个会话就是不可行的——不是变慢、不是降质,就是不可行。

DualCam 的处理是「重配—实测—回退」:你改完分辨率后,它检查新配置的成本,若超预算就把之前的分辨率恢复回去,并告诉你这个设置在本机不可用。这就是为什么 1080p 在某台受支持的 iPhone 上可选,在更老的一台上却被悄悄拒绝。这是逐设备的限制,不是 bug。

中断:系统把摄像头收走

iOS 可能因为和你的 App 毫无关系的原因挂起采集会话。DualCam 会逐条具名地把原因显示出来,而不是抛一个笼统的错误;如果此时正在录制,它会先把文件收尾保存,再让会话下线。

  • App 进入后台——后台的 App 拿不到摄像头。
  • 另一个 App 抢走了摄像头——最典型的是接了一个视频通话。
  • 多个前台 App——系统不会把摄像头交给分屏或侧拉的排布。
  • 系统压力——设备负载或温度高到摄像头被直接收回。

实用版本:重要的镜头开拍前先开勿扰模式,录制中途不要切换 App。

这里说的「掉帧」通常指什么

两路摄像头都锁定在每秒 30 帧,迟到的视频帧会被丢弃而不是排队等待。对实时采集来说这是正确的取舍——一帧来得太晚、已经赶不上这次合成,那它比没有更糟,因为把它排进队列只会让整条流水线更落后。所以高负载下看到的卡顿,是系统在保护时间轴,不是 App 弄丢了你的素材。真看到了,解法和发热一样:降分辨率、给机器降温、把镜头拍短些。

延伸问题

停下来的时候会丢掉这条录像吗?

不会。上述所有情况下文件都会被收尾并保留——你得到的是一条更短的视频,不是一个损坏文件。录像会进入 App 自带的媒体库,你可以在那里回看,再决定保存或分享。

为什么比用系统相机热得多?

因为它干的事情多得多:两条摄像头链路而不是一条、每一帧都要过一次 GPU 合成、再对结果做一次硬件编码。拿它和单摄录制比效率并不公平。

背夹电池或者无线充电会让情况更糟吗?

充电本身产热,而发热正是长时间双录的主要约束。条件允许的话,用电池录、录完再充。

想直接开录?

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

前往 App Store 下载