博客

Better Recorder Pro

连续互通摄像头如何成为 Mac 上的摄像源

这篇写采集模型,不是功能清单。满足 Apple 的连续互通条件时,iPhone 会以普通摄像头设备的形式暴露给 Mac 应用。Better Recorder Pro 并不私造一套连续互通协议,而是发现系统已经发布的设备。

下面的示例勾勒公开的 AVFoundation 形态与产品已声明的行为,不是专有源码原文。

设备发现

应用通过 AVFoundation 枚举视频设备。连续互通的 iPhone 通常与内置 FaceTime 摄像头、USB 摄像头出现在同一列表:

import AVFoundation

func videoDevices() -> [AVCaptureDevice] {
    AVCaptureDevice.DiscoverySession(
        deviceTypes: [.builtInWideAngleCamera, .external],
        mediaType: .video,
        position: .unspecified
    ).devices
}

用户选定设备后,录制器像对待 USB 摄像头一样,把 AVCaptureDeviceInput 接到会话里。列表里有没有 iPhone,仍取决于 Apple 的账户、蓝牙/无线局域网与系统配对规则——应用无法强行塞进一台手机。

为什么麦克风要单独选

视频和音频是不同输入。连续互通可以提供画面,同时麦克风仍是 Mac 内置麦、USB 声卡,或——仅当系统列出时——iPhone 麦克风。

func audioDevices() -> [AVCaptureDevice] {
    AVCaptureDevice.DiscoverySession(
        deviceTypes: [.microphone, .external],
        mediaType: .audio,
        position: .unspecified
    ).devices
}

选择连续互通摄像头时,Better Recorder Pro 不会自动把音频切到 iPhone。这与产品文案一致:列表出现才可选;应用不会自动占用。

屏幕、摄像头、iPhone 界面

Mac 屏幕采集走 ScreenCaptureKit(显示器或窗口)。连续互通仍是摄像头流。录 iPhone 界面是另一条管线(USB / QuickTime 设备屏幕录制),不在本版本里。

ScreenCaptureKit  → Mac 显示器 / 窗口帧
AVFoundation 视频 → 连续互通(iPhone 画面)或 Mac/USB 摄像头
AVFoundation 音频 → 选定的麦克风(可选 iPhone 麦,若已列出)
        ↓
   合成画中画(若为屏幕 + 摄像头)
        ↓
   MP4(H.264 + AAC),≤1080p30,本地目录

实际边界

  • 把连续互通画面「拉成 4K」不会得到 4K 传感器路径;本版本最高 1080p30。
  • 部分系统版本在切换前台应用时会打断连续互通,需在本机验证。
  • 预检只检查当前模式需要的权限(屏幕录制、摄像头、麦克风)。

相关链接

返回博客列表