当前位置:首页 > 科研成果库

你手指划过去,屏幕为什么慢半拍?聊聊人机交互技术里那个藏不住的延迟

2026-10-24 10:36:59小研科研成果库12

先别急着骂屏幕,延迟是一条流水线

上周在车里调空调。按下语音键,屏幕亮起一个转圈。一秒多。我盯着那个圈,脑子里已经开始跑延迟预算表了。手指都抬起来了,反馈才来。这种“慢半拍”不是玄学,拆开看,挺具体。

你手指按下去,到像素变色,中间隔着一串环节。触摸屏采样,触控IC上报,系统输入分发,应用逻辑处理,合成器合成,显示扫描,液晶像素响应。每一段都吃时间。像一条传送带,从指尖送到眼睛。传送带越长,越容易堵。

很多人只盯刷新率。60Hz屏幕,一帧16.7毫秒。120Hz,8.3毫秒。看着挺快。可这只是一段。触摸采样呢?240Hz触控采样,间隔4.2毫秒。听着也快。但采样完要滤波、防误触、排队上报。应用主线程一卡,几十毫秒没了。合成器再等一个VSync,又十几毫秒。像素翻转再几毫秒。加起来,几十毫秒到上百毫秒,不稀奇。

延迟不是某一个器件的锅,是一条链路的预算问题。这句话我常跟做产品的人说。别只问屏幕多少赫兹。得问:触摸到上报多久?应用处理多久?合成到显示多久?每个环节的抖动多大?

触摸屏输入延迟测量示波器波形图触摸屏输入延迟测量示波器波形图

我拿示波器测过一块开发板。手指点下去,触控中断拉低,到屏幕背光变化,波形上能看出几段台阶。中间那段最烦,应用线程被日志拖住,忽长忽短。你看参数表看不出来。真机一跑,原形毕露。

触控采样率高,为什么还是不跟手?

这是特别常见的误会。触控采样率高,只说明“问手指问得更勤”。不代表“答得快”。

举个手边例子。滑动列表。手指动,列表跟。这个跟手,靠的是触摸事件连续上报,加上渲染帧率稳。可你点一个按钮,按钮变色慢,那是另一条路。按下事件要进应用,应用改状态,再画出来。中间要是走了网络请求,或者等一个动画队列,那就不是触控采样率能救的。

还有滤波。为了防误触,厂商会加算法。手掌边缘、水渍、抖动,都要滤。滤得狠,稳,但延迟高。滤得轻,跟手,但误触多。这是取舍。没有白拿的跟手。

Android这套输入链路里,事件从内核到应用,要过输入分发。应用主线程忙,事件就排队。Choreographer等VSync,再走绘制。绘制完,SurfaceFlinger合成。合成完,显示扫描。每一跳都有节奏。你看到的“卡一下”,可能是某一跳没赶上趟。

刷新率高不等于延迟低,触控采样率高也不等于跟手。这俩指标管的是不同段落。买手机看参数,别只看一个数。得看系统调度、动画曲线、应用实现。对吧,参数是给人看的,延迟是给人感受的。

VR和车机,把延迟的遮羞布扯掉了

手机上的几十毫秒,很多人能忍。VR不行。头一转,画面得跟着转。慢了,眼睛和身体打架。晕。这个指标叫运动到光子延迟,MTP。做VR的人常挂在嘴边的一个数是20毫秒以内。超过,难受的人就多。

怎么压?IMU采样快,1kHz,一毫秒一次。预测头姿。你转头,系统预测你20毫秒后的朝向,先画出来。再重投影,把旧帧掰到新视角。预测准了,顺。预测错了,画面抖,边缘拉扯。所以VR里不是单纯堆硬件,是预测算法和显示链路一起抠。

VR头显运动到光子延迟测试场景图VR头显运动到光子延迟测试场景图

车机更现实。倒车影像,挂挡到画面出来,慢半秒,人就不敢动。语音唤醒,等一秒多,用户会以为没听见,再喊一遍。触控空调,按下去没反馈,手指会重复点。重复点就多点。这不是交互细节,是安全冗余。

还有云游戏、远程手术、工业遥操作。网络RTT、编码、解码、显示,全算进去。你在这头推摇杆,那头机械臂动。中间隔着一百毫秒,操作员就得提前量。累。风险也跟着来。

说实话,做底层人机交互技术的工程师,很少追求“零延迟”。零不了。物理摆在那。采样要时间,显示要时间,人眼也有处理时间。能做的是把预算切清楚,把抖动压下去,把即时反馈做出来。按下高亮,声音先到,动画跟上。用户感知的延迟,和仪器测的延迟,不是一回事。

几个特别常见的误会

几个特别常见的误会几个特别常见的误会

其一,动画快就是响应快。不是。动画可以很顺,但逻辑没开始。你点完,界面先飞入一个加载态,数据还没动。这叫视觉抚慰,不叫响应。

其二,延迟越低越好。也不对。太低,系统对噪声太敏感,误触、抖动、预测翻车都来了。交互要稳。稳和快之间要调。

其三,音频视频同步可以随便。人耳对音画不同步挺敏感。差几十毫秒,有人就能看出来。蓝牙耳机延迟,SBC老编码能到一百多毫秒,低延迟模式能压到几十毫秒。看视频有补偿,打游戏就露馅。

用户感知的流畅,是视觉、触觉、听觉对齐的结果。光追一个指标,容易偏。

边界在哪?别追零延迟

边界在哪?别追零延迟边界在哪?别追零延迟

延迟预算得按场景分。普通触控,按下有即时高亮,一百毫秒内给反馈,多数人能接受。要求高的交互,五十毫秒内更舒服。VR的MTP,二十毫秒内是目标。远程操作,得看网络和机械响应,不能只看屏幕。

边界还有一层:预测会错。乐观UI先改状态,请求失败再回滚,用户会愣一下。手势识别提前触发,可能误操作。多模态融合,语音加手势,听着酷,融合错了更烦。这些不是算法单点能解决的,是交互设计、系统调度、硬件响应一起背锅。

所以下次你觉得屏幕慢半拍,别急着骂。先看是哪段流水线堵了。是触摸采样?是应用主线程?是合成?是显示?还是你等的那次网络请求?拆开看,很多“玄学”都能落到毫秒上。人机交互技术这行,有意思的地方也在这。手指和像素之间,藏着好多看不见的台阶。