SuperAPI AI 工具集

camera-streaming

智能体与模型

查看项目

更新于 10-15 21:40

技能介绍

用途:在 iOS 上通过 DAT SDK 实现眼镜相机串流与拍照。先创建并启动 DeviceSession,再用 addCamera(config:) 附加 Camera,通过 camera.stream 控制串流、拍照、观察帧、状态与错误。串流中的 PCM 音频需使用 audio-streaming 技能。

主要能力:StreamConfiguration 可配置视频编码、分辨率与帧率。分辨率:.high 720x1280、.medium 504x896、.low 360x640;frameRate 为 UInt,有效值 2、7、15、24、30 FPS;VideoCodec 有 .raw(已解码帧,可用 frame.makeUIImage() 渲染)与 .hvc1(压缩 HEVC 帧,需自行解码 sampleBuffer 预览)。无参构造默认 .raw、.medium、30 FPS。VideoFrame 可用 .makeUIImage() 或 .sampleBuffer;PhotoData 含 .data 与 .format。

使用方式:先检查相机权限,checkPermissionStatus(.camera) 为静默查询,requestPermission(.camera) 会切换到 Meta AI 应用,应在用户确认后再调用。附加相机前 DeviceSession 必须处于 started 状态。用 stream.statePublisher、videoFramePublisher、errorPublisher 监听,监听令牌需保持存活,可用 ListenerTokenBag 与 AnyListenerToken.store(in:),结束时 clear()。stream.start() 启动;camera.stop() 停止相机并级联停止其 stream 子级、从会话分离相机;deviceSession.stop() 停止父会话,级联方向为父到子。串流中拍照用 stream.capturePhoto(format:),返回 Bool,false 表示未开始(如已有拍照进行中),不会收到 photoDataPublisher 事件。

适用场景:需要实时预览、按帧处理或串流中抓拍静态照片的 iOS 应用。

限制:分辨率与帧率受 Bluetooth Classic 带宽约束,SDK 会自动先降分辨率再降帧率,且不低于 15 FPS;更低设置可提升单帧画质。错误类型包括 .permissionDenied、.deviceNotConnected、.hingesClosed、.thermalHot、.batteryLow、.photoCaptureFailed,建议直接展示 error.localizedDescription。独立高质量拍照(分辨率、质量、传输进度与独立生命周期)应使用 camera-capture 技能。