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

iOS开发:能否通过AppScreenSource仅共享特定UIView?

仅共享ARView而非整个屏幕的实现方案

方案一:基于AppScreenSource裁剪画面

AppScreenSource本身捕获整个屏幕,但你可以通过裁剪捕获帧只保留ARView区域的内容:

  • 先获取ARView在全局坐标系下的frame
  • 在捕获到屏幕帧后,根据该区域裁剪出ARView对应的图像部分
  • 将裁剪后的帧传递给共享会话

示例代码思路:

// 假设已实现AppScreenSource的捕获回调
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
    guard let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else { return }
    let ciImage = CIImage(cvImageBuffer: imageBuffer)
    
    // 获取ARView的全局坐标区域
    let arViewGlobalRect = arView.convert(arView.bounds, to: nil)
    // 适配CIImage坐标系(左下角为原点)
    let cropRect = CGRect(x: arViewGlobalRect.origin.x, 
                          y: UIScreen.main.bounds.height - arViewGlobalRect.origin.y - arViewGlobalRect.height,
                          width: arViewGlobalRect.width, 
                          height: arViewGlobalRect.height)
    
    let croppedImage = ciImage.cropped(to: cropRect)
    // 将裁剪后的图像转换为可共享格式(如CGImage或Data),再发送给其他用户
}

方案二:直接捕获ARView内容

跳过AppScreenSource,直接从ARView获取画面,无需裁剪更精准:

  • 用ARView.snapshot()同步获取快照,但频繁调用可能影响性能
  • 更高效的方式是利用Metal直接捕获ARView的渲染纹理:ARView底层基于Metal渲染,可获取其MTLTexture并转换为图像帧用于共享

示例代码思路:

// 捕获ARView的Metal纹理并转为UIImage
func captureARViewFrame() -> UIImage? {
    guard let metalLayer = arView.layer as? CAMetalLayer,
          let currentDrawable = metalLayer.currentDrawable else { return nil }
    
    let texture = currentDrawable.texture
    let ciImage = CIImage(mtlTexture: texture, options: nil)?.oriented(.up)
    guard let cgImage = CIContext().createCGImage(ciImage!, from: ciImage!.extent) else { return nil }
    
    return UIImage(cgImage: cgImage)
}

可定时调用该方法获取画面并发送,若追求实时性,可结合Metal纹理共享机制直接传递纹理数据,减少格式转换开销。

方案三:使用ReplayKit自定义捕获区域

ReplayKit支持指定捕获区域,可直接限定为ARView范围:

  • 初始化RPScreenRecorder后,设置cropRect为ARView的全局rect
  • 录制内容将仅包含ARView区域,再把录制帧传递给共享会话

注意:iOS 11及以上支持该功能,需提前处理权限申请。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:18:36