You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

类AVMulticam/Dualgram应用多布局视频录制开发问题求助

基于AVCaptureMultiCam实现多布局多摄录制的落地实现方案

多布局录制卡点的核心问题是没有把「多路采集-实时合成-编码录制」三个模块解耦,直接基于AVCapture原生输出做布局调整会出现性能差、同步异常等问题,以下是经过线上验证的可行实现路径:

一、采集层基础配置(必做避坑)

  • 硬件要求:仅iPhone XS及以上、iOS 13+设备支持稳定双摄同时采集,启动前必须判断AVCaptureMultiCamSession.isMultiCamSupported,不支持的设备直接降级单摄逻辑,不要硬开。
  • 会话配置:统一使用AVCaptureMultiCamSession,不要自己创建两个独立采集会话,避免系统资源抢占。每路摄像头单独绑定AVCaptureVideoDataOutput,像素格式统一设为kCVPixelFormatType_32BGRA,两路输出的回调队列必须独立(用不同的串行队列),避免帧阻塞。
  • 音频配置:仅需配置一路AVCaptureAudioDataOutput即可,不需要给每路摄像头单独配音轨,需要双麦立体声的话提前配置AVAudioSession的采集模式为立体声即可。

二、多布局实时合成(核心逻辑,决定性能和效果)

多布局指左右分屏、上下分屏、大小画中画、单源全屏这类效果,绝对不要用CPU做帧的裁剪、缩放、拼接,1080P/60fps场景下CPU占用会超过40%,发烫后很快掉帧,按团队技术储备二选一即可:

方案1:Metal合成(推荐,和同类商业产品性能一致)

  • 提前把所有支持的布局模板的顶点坐标、纹理映射坐标预计算好存为常量,不要每帧回调时重新计算位置,画中画的圆角、边框效果直接写在Metal片元着色器里,不要后期CPU处理。
  • 自定义Metal渲染管线:将两路摄像头回调返回的CVPixelBuffer分别转成MTLTexture,按照当前选中的布局坐标,把两个纹理一次性绘制到同尺寸的目标画布纹理上,绘制完成后输出对应的CVPixelBuffer给录制模块。
  • 帧同步逻辑:两路摄像头的帧到达后做时间戳配对,仅取时间戳差值小于10ms的两帧做合成,差值过大直接丢弃较旧的帧等待新帧,避免最终录出的视频两路画面错位。

方案2:CoreImage合成(适合快速落地,性能够用)

  • 没有Metal开发经验的话可以用CoreImage实现GPU合成,提前初始化CIContext并全局复用,不要每帧新建实例。每个布局对应的滤镜链(裁剪、缩放、叠加合成)提前初始化完成,不要每帧新建CIFilter对象。
  • 用CVPixelBufferPool预申请输出用的像素缓冲池,避免每帧申请/释放内存造成卡顿,合成后的帧直接从缓冲池取pixelBuffer承接,输出给录制模块。

注意:布局切换时只需要替换合成模块当前使用的坐标/滤镜配置即可,不要重启采集或录制会话,能做到无断帧切换,和主流双摄应用的交互体验一致。

三、录制层配置

  • 不要用AVCaptureMovieFileOutput做录制,这个类不支持自定义合成帧的输入,统一用AVAssetWriter实现。
  • 单独开一条串行录制队列,合成模块输出的视频帧、采集模块输出的音频帧统一做时间戳校准(以音频时间戳为基准对齐视频帧),按顺序写入AVAssetWriter对应的音视频输入端口。
  • 录制参数和合成画布参数保持一致:比如合成输出是1080P/30fps,AVAssetWriter的视频配置就对应设为相同参数,不要做二次转码。

四、常见踩坑点

  • 双摄采集会占用较高硬件资源,启动后要实时监听AVCaptureMultiCamSession.hardwareCost,如果超过系统阈值,系统会自动断开其中一路摄像头,此时要主动降低采集分辨率(比如从4K降到1080P)或者降低帧率。
  • 小窗源切换(比如画中画模式下小窗从主摄切超广角、切前置)时,只需要替换合成模块对应位置绑定的纹理源即可,不需要重启采集会话,切换延迟可以控制在100ms以内,用户无感知。
  • 权限配置要齐全,除了常规的相机、麦克风权限,iOS14+以上如果需要同时用前后摄,要确保没有被系统的多摄权限限制拦截。

内容的提问来源于stack exchange,提问作者Sanjeev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 18:27:33