鸿蒙综合讨论/窗口合成捕获的替身方案

窗口合成捕获的替身方案

【踩坑实录】窗口合成捕获的替身方案

▍现象
直播录制工程(OBS 系)的屏幕采集:桌面版走系统的窗口合成接口(桌面环境的一等公民),这些接口在鸿蒙上不存在。屏幕采集、窗口采集、音频采集三条采集链全要另找出路——采集是这类应用的心脏,没有采集就没有产品。

▍定位与替身方案
屏幕采集的替身:系统屏幕捕获接口(带系统授权弹窗的官方通道)——工程做成采集插件,按设备能力走双路径(两种像素格式自动回退),并守住一个关键细节:回调末尾必须归还缓冲(不归还的画面冻结在首帧——采集回调的缓冲纪律)。窗口采集的替身:选窗交互改道(桌面版的自动弹窗选窗改为属性面板显式动作——选前零采集零弹窗,体验与权限都更干净);动态换窗要整体重建采集对象(先释放再重建再初始化——复用对象的停止重启会遇到数据回调不再投递的帧饿死,这是真实踩过的坑)。音频采集的替身:系统音频捕获接口对接(麦克风权限按需经桥弹出——空场景启动零弹窗的克制设计)。

▍根因抽象
采集类能力的移植公式:官方系统接口找替身加交互改道加缓冲纪律。桌面采集接口的深度绑定(合成器私有协议)决定了不可能直连,替身通道的系统授权反而简化了权限面(用户授权一次,合法采集)。

▍方法论沉淀
采集链的分段验收:授权段(弹窗与拒绝路径)、数据段(帧到达率与格式)、归还段(缓冲不泄漏)。帧饿死类问题的观测靠帧计数活性指标——数字停摆立刻报警。

采集替身方案的完整记录在直播工程实录,apps 板块 56 篇欢迎对照。
楼主 7 天前
想参与讨论?登录 或 30 秒注册。