基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
AIHT
内容
精选全部 AI 动态热点榜AI 日报收藏
分类
模型行业编程产品技术观点开源
更多
Agent 接入
返回首页开发者导航
AIHT
精选 / 资讯详情
8.0
热点
AI SCORE
技术实践2026-10-31 10:41

浏览器内分析录屏,推断手机点击位置

dev.to · AI#浏览器#视频处理#多模态
Editor brief · 编辑速览

作者结合WebCodecs与mediabunny,在浏览器内以低分辨率灰度帧差筛选交互片段,再细化分析变化过程。视频保留在本地,仅将需要模型判断的点击候选以两张静态图发送。

文章思维导图
Knowledge map
拖拽缩放
AI deep read

AI 深度解读

手机录屏能看到页面跳转,却看不到手指点了哪里。Shotcat 的作者尝试从画面变化反推触控:浏览器先用像素计算找到操作发生的时间、区分点击和滑动,再把需要判断的点击交给视觉模型定位。

这套方案值得看的是任务拆分。完整视频留在本机,模型每次只看前后两张小图。不过,它恢复的是有画面证据的操作,无法还原完整的触摸记录。

先找页面何时响应,再判断发生了什么

作者用 mediabunny 配合 WebCodecs,在浏览器里把视频解码成每秒 12 帧、宽 72 px 的灰度图。第一轮只比较相邻帧,筛出画面变化的时段。

下面的函数计算指定纵向区域内,变化像素所占的比例:

function changedShare(a: Float32Array, b: Float32Array, w: number, y0: number, y1: number) {
    let n = 0;
    for (let y = y0; y < y1; y++)
        for (let x = 0; x < w; x++)
            if (Math.abs(a[y * w + x] - b[y * w + x]) > PIXEL_DELTA) n++;
    return n / ((y1 - y0) * w);
}

要看的是 PIXEL_DELTA 那一行:灰度差超过 18,也就是 255 级灰度中的 18,才算像素变化。变化像素超过 0.4%,才算这一帧有反应。顶部 7% 和底部 3% 不参与比较,避免时钟、底部指示条自行变化造成干扰。

连续变化的帧组成一个片段。作者最初把时间接近的变化直接合并,结果漏掉了滚动后紧接着发生的点击。修正办法是:前一轮变化正在减弱时,如果变化量突然上升,就重新切出一个片段。

这里的经验很具体:时间靠近的两次变化,未必属于同一次操作。

滑动和点击,要看位移也要看先后顺序

12 fps 足够粗筛,却不适合分析快速滑动。作者观察到,快速甩动时,内容在相邻帧之间可能移动超过四分之一屏。因此,每个候选片段会再以 48 fps 解码。

判断运动的方法是移动其中一帧,寻找最能抵消两帧差异的偏移量。纵向在全屏范围比较,用来识别滚动和面板移动;横向只比较发生变化的条带,避免轮播图只动一行,却被整屏静止内容淹没。

如果平移能消除至少 40% 的差异,就把这一步判为运动。随后结合时间顺序判断:滑动通常立刻带动内容,并持续向同一方向移动;点击则通常先改变界面,再出现动画。

滑动后半秒内的移动被视为惯性或回弹,跳过处理。滑动位置直接依据运动估计,不调用模型;绘制轨迹时还要限制长度,因为惯性滚动距离可能远大于手指实际移动距离。

这些判断依赖界面响应方式。点击触发整页平移动画时,能否稳定区分,原文没有给出覆盖不同应用的验证。

模型只回答「刚才点了哪个控件」

最先变化的区域,只是定位线索,不能直接当成点击位置。

例如,点中列表某一行后,整页可能滑走。变化面积很大,真正被点的控件却很小。

作者为每次候选点击发送一对 768 px JPEG,分别展示响应前后画面,再附上最早变化区域的边界框。小框可能是按钮按下时亮起,大框则可能代表页面导航。提示词要求模型判断:BEFORE 中哪个控件会导向 AFTER,同时允许返回 tap=false,排除计时器、加载指示和视频播放。

每个时刻单独请求,并行执行。返回控件框后,将手指标在框中心;时间放在画面响应前 0.15 s,用来补偿作者认为存在的交互响应延迟。这个偏移是固定近似,原文没有说明如何适配不同应用。

作者只测试了一段真实的 8 秒录屏,其中有 5 次点击。测试关闭 Thinking,temperature 为 0.1,每次点击约消耗 2.4k tokens;按测试时价格,10 次点击约 $0.02。原文没有给出模型名称、逐次识别结果或准确率,这些数字只能作为成本线索。

键盘输入会产生密集的小变化,模型被要求跳过。点击后画面完全不变的操作,则无法被发现。

我的判断

我认同它把确定性计算排在模型前面的做法。像素比较负责缩小候选范围,视觉模型负责理解控件与页面变化之间的关系,问题更集中,也方便分别排查错误。

但「比整段视频交给模型更好」仍是作者的经验判断。没有相同录屏、相同评价标准下的成本、耗时和准确率对照,不能据此认定方案普遍更优。

隐私边界也要讲准确:完整录屏留在本机,点击前后的截图仍会发送给模型。截图里的聊天、账号或业务内容同样可能敏感。

如果能够控制被录制的应用,直接记录触摸或点击事件可以提供实际坐标;从像素反推更适合只有现成录屏的情况。尤其滑动起点来自启发式规则,轨迹只能作为演示标注,不能当作真实触摸数据。

能拿来做什么

  • 给现有产品录屏补点击提示时,可以先实现低分辨率帧差检测,验证它能否覆盖目标应用的主要操作,再接入视觉模型定位。
  • 做浏览器端视频工具时,可以参考两轮解码:用 12 fps 找候选片段,再用 48 fps 分析局部运动,把精细计算集中在需要的位置。
  • 为前端演示自动加手指标记时,应检查滚动后点击、键盘输入、无反馈点击和转场动画,并允许人工修正。原文已经表明,这些场景存在漏检或估计误差。
  • 接入模型前,应明确截图发送范围;评估效果时同时记录漏检、误报和定位偏差,不能只凭演示看起来顺畅就判断可用。
Original source

本文由 AI 通读原文后重新编写,观点部分为站内判断,细节以原文为准,来源 dev.to · AI,原文版权归原作者所有。

阅读原文
上一篇
Gemini 4 Carbon主打长程工程任务
下一篇
AI生成代码能运行,仍可能无法使用

资讯速览

dev.to · AI · 2026-10-31 10:41

AI 评分 8.0 / 10

相关标签

#浏览器#视频处理#多模态

继续阅读

  • 为大模型缓存建立可验证的失效规则
  • Gemini 4 Carbon主打长程工程任务
  • AI生成代码能运行,仍可能无法使用
  • 用接口契约约束 Agent 跨语言通信
  • 用五阶段流程管住Bedrock模型开支