Seetong · Report

🎯 Seetong 问题雷达 17:00 第244期

时间窗口:2026-10-20 09:00:32~17:06:35(Asia/Shanghai)

📌TL;DR 核心要点

  • 🔴 Android 8.4.1.6 在 HONOR 平板访问 TS8108D35、固件 4.6.1.8 的 NVR 卡回放时,KMP 回放会话在线取流已返回成功,却连续 10 秒收不到首帧并自动重试。反馈 258544 的 Logan 中,16:45、16:46、16:50 至少三次出现 startNvrReplay ret=0 后 card playback frame timeout, frameGapMs≈10000;同一设备同一通道在此前 1.71 秒完成原生预览首帧,说明设备在线且取流链路可用,故障已收敛到 KMP 回放渲染器或首帧事件路由,严重度 60 / 100,现象置信度强、根因置信度中。
  • 🟠 本期没有第二个达到 60 分门槛的新问题。Android 进程重启、HarmonyOS 回放与监控异常、HarmonyOS 旧画面问题均在 24 小时内存在同域任务或现成证据链,本期按去重规则不重复展开。
  • 258544:Android 8.4.1.6、HONOR ROL-W60、河北唐山,10-20 17:01:03 反馈:NVR TS8108D35 升级到 4.6.1.8 后,用平板经常不能回放,有时能看也会跳秒 3~4 秒;实时预览正常,手机端使用较少但“好像也没事”。

🔥最近一个月 Top 问题

按严重度与复发期数排序,已把跨期同类反馈归集;负责人由问题代码锚点对应的 Git 提交历史(blame / 近期主要提交者)反查;数据窗口:最近 30 天(截至 2026-10-20)。

#问题(严重度降序)严重度平台版本负责人问题原因
1Android 8.4.1.6 及 HarmonyOS 1.1.1.11 单设备随机离线、P2P 恢复失败
18 期 · 157 条反馈
100Android · HarmonyOS1.1.1.11 / 8.4.1.6 / 1.1.1陈宝旺、冉博麟、唐胜、李国涛257582、257639 已确认是服务端心跳长期停更并伴随 P2P 离线,App 只是按离线状态展示;问题更可能在设备端、设备网关/P2P 服务或固件恢复机制,而不是 Android 播放器单点故障。
2Android 与 iOS 8.4.1.6 报警功能突然失效与通知不达
1 期 · 3 条反馈
90Android · iOS8.4.1.6陈宝旺、许源现有客户端样本表明 Android 通知权限与 token 注册均成功,故障更接近“服务端未生成报警或推送任务未送达”,但神策缺少报警生成与推送到达事件,iOS 样本又混合了通知权限关闭,当前不能完成单点定因。
3HarmonyOS 画中画状态导致切换设备后仍显示前一路画面
1 期 · 3 条反馈
90HarmonyOS1.1.1.11 / 1.1.2.3张跃译多个 HarmonyOS 画面共享一个无代次、无串行化、无旧控制器清理的 PipManager,切换设备时旧创建任务和新选择竞争,最终把第一路 XComponent、savId 或恢复状态保留下来。
4升级后回放体验整体退化
4 期 · 18 条反馈
85Android · iOS8.4.1.6 / 8.3.14.2唐胜、许源、欧阳荣、谭伟8.4.1.6 对回放链路做了多处改动(时间条 UI、通道切换进度对齐、报警-录像联动),导致回放体验多点退化;Logan 显示取流层无崩溃,问题在"UI/状态对齐 + 报警录像关联"而非连接失败。
5KMP 回放页未申请屏幕常亮,回放中手机自动息屏
11 期 · 29 条反馈
84Android · HarmonyOS8.4.1.6 / 8.4.1 / 8.4.2唐胜、陈宝旺、许源、谭伟KMP 回放页的屏幕常亮能力已在代码中完整实现(KMP 公共层 → 桥接层 → Android 宿主层齐备),但承载该实现的提交只落在 feature_v8.4.2 一条分支上,feature_v8.4.4、master、hotfix_v1.1.1 全部不含,因此所有已发布版本(Android 8.4.1.6 / HarmonyOS 1.1.1.11)在运行时都走不到 FLAG_KEEP_SCREEN_ON,回放过程中发生系统级息屏。
6SD 卡跌至不可读写或反复未初始化,录像回放被直接阻断
3 期 · 9 条反馈
80Android · HarmonyOS · iOS8.4.1.6 / 1.1.1.11唐胜、张威、陈宝旺设备上报的 SD 卡状态在 258245 中持续处于未初始化/格式化中,在 258173 中由正常可读写跌至不可读写;App 按协议正确展示异常,根因更可能在 SD 卡、卡槽/供电、设备存储控制器或固件挂载逻辑,而不是 KMP 页面误报。
7iOS `8.4.1.6` 云回放卡顿,首帧与失败状态可能被提前结算
2 期 · 8 条反馈
80Android · iOS8.4.1.6 / 8.3.11.3 / 8.4.106陈宝旺、欧阳荣、谭伟iOS 云回放容器允许解析完成后在 1.2 秒无首帧时提前向 KMP 返回成功,同时把 IJK 播放错误与正常结束合并处理,导致页面对真实卡顿、缓冲超时或解码失败缺少准确状态和可回溯证据;这是高度可疑的共同客户端缺陷,但仍需复现确认其是否为 3 名用户的直接主因。
8iOS 8.1.2.4 微信登录授权码重复提交触发 30100225
1 期 · 3 条反馈
80iOS8.1.2.4 / 8.1.204 / 8.4.106待定微信回调与恢复登录没有一次性 state、幂等锁和授权码消费机制,重复回跳或重试会把同一个单次授权码再次发给服务端,服务端以 30100225 拒绝后客户端仍保留旧状态。
9iOS 老版本微信登录空授权码触发 30100222
1 期 · 1 条反馈
80iOS8.1.3.5 / 8.1.305 / 8.1.503位冬微信授权回跳在当前旧版 iOS 上返回了空 code,客户端没有把它视为失败边界,仍向服务端提交空授权码,最终稳定触发 30100222。
10iOS 8.4.1.6 冷启动点击离线报警推送后未进入回放
1 期 · 2 条反馈
70iOS8.4.1.6 / 8.4.106欧阳荣、谭伟、陈宝旺当前冷启动没有留下通知响应回调或 KMP 回放路由证据,用户实际停留在普通启动链路;最可能的缺口是冷启动通知回调 / 参数分支未被当前处理逻辑承接或没有兜底,但尚不能确认是 APNs payload 缺 content、回调未到、视图条件拦截还是路由失败。

🔴 问题 1:Android 平板 KMP NVR 卡回放持续无首帧并反复重试 | 负责人:唐胜、张威

现象与覆盖范围

  • 258544:Android 8.4.1.6、HONOR ROL-W60、河北唐山,10-20 17:01:03 反馈:NVR TS8108D35 升级到 4.6.1.8 后,用平板经常不能回放,有时能看也会跳秒 3~4 秒;实时预览正常,手机端使用较少但“好像也没事”。
  • 用户同时提供了 NVR 型号、固件版本、访问终端差异和异常表现,属于可直接复现的结构化反馈,不是“网络不好”一类泛化描述。
  • 严重度评分:60 / 100。反馈量 10(1 名独立用户);共性广度 20(覆盖 NVR TS8108D35 与 4.6.1.8,并形成“平板异常、手机相对正常”的访问终端对照);业务关键度 30(录像回放属于事后取证与历史核查主链路)。
  • 去重判定:账本中没有同条件的平板 KMP NVR 卡回放无帧任务;新建 T-20261020-170615-54cd,状态 P1 / captured。

神策证据

  • NvrDeviceVideoPlayback 在 10-13~10-20 的逐日触发为:10-13 3 次 / 3 人、10-16 6 次 / 2 人、10-18 1 次 / 1 人、10-20 截至本次查询 4 次 / 2 人;其余日期无事件。
  • 10-20 的 4 条事件均为 RELAY。其中唯一一条 dev_identify=TS8108D35-4.6.1.8-202609101915 样本的首帧字段为 736 ms,但该事件的客户端标识与反馈 258544 无法关联,不能据此判定本用户已经出帧。
  • 该事件提供 first_frame_time、first_frame_time_ms、duration、connect_type、nvr_version 等性能字段,没有 result / error_code;且全天仅 4 次,不能把事件量当作 NVR 回放总量或失败率。
  • 因此神策只能确认:同固件版本存在少量成功首帧事件,NVR 回放并非全量中断;不能覆盖本用户的平板 KMP 会话,也无法给出失败率。核心证据以 Logan 为准。

Logan 关键日志

  • 反馈 258544 的 Logan 共 27,472 行、617,453 字节,覆盖当天的 NVR 预览与回放操作。设备列表中 NVR 43700083 为在线状态,通道 43700083-CH-2 在故障前可正常预览。
  • 16:45:48.468~16:45:50.474,原生预览 PlayerPreviewActivity 与 PreviewPlayerView 对 43700083-CH-2 连续收到首帧,证明设备在线、鉴权、P2P/RELAY 取流和视频解码主链可用。
  • 16:45:52.634,KMP 页面记录 KMPPlayBackVideoView.playVideoByTime, devId=43700083-CH-2;16:45:52.639 记录 startNvrReplay ret=0。
  • 16:46:02.634,KMP 记录 card playback frame timeout, frameGapMs=10001,随后停止当前回放并立即重试;第二次 startNvrReplay 仍为 ret=0。
  • 16:46:11.640 再次启动,16:46:21.648 再次记录 card playback frame timeout, frameGapMs=10007。
  • 16:50:40.325,同一 NVR 通道在原生预览中再次收到首帧;16:50:42.034 切到 KMP 卡回放并启动,16:50:52.031 第三次记录 card playback frame timeout, frameGapMs=10004。
  • 三次 KMP 尝试均在请求返回成功后等待满约 10 秒,日志中没有对应的 KMPPlayBackVideoView.onRecvFirstFrame,也没有可刷新卡回放帧监听的 MSG_REPLAY_SET_POSITION 业务时间戳。
  • 期间虽反复出现 receive playback play failed event, result=0,但 KMP 代码只在 result < 0 或达到并发上限时处理该事件;本次实际触发重试的是 10 秒无帧监听,不能把 result=0 误写成播放失败根因。

代码定位

  • 涉及模块:seetong-kmp/modulePlayback、Seetong-App-Android/.../kmp。
  • KMPPlayBackVideoView.kt:223-245:KMP 调用 playVideoByTime() 后进入 RecordPlayerView.startReplay();首帧与业务帧分别通过 kmp_device_record_first_frame_event、kmp_device_record_frame_event 回传。
  • RecordPlayerView.kt:234-264:开始回放前把 device.m_video 指向当前 openglesRender、设置 m_view_id=29,再异步调用 startNvrReplay();本地方法先返回 0,真实取流请求结果仅用于非零重试。
  • RecordPlayerView.kt:930-951:只有收到 MSG_RECEIVER_MEDIA_FIRST_FRAME 才进入 onRecvFirstFrame();只有收到 MSG_REPLAY_SET_POSITION 才把业务帧时间回传给 KMP。
  • CardPlayBackPageLogic.kt:2672-2724:启动 10 秒无帧监听;超时后先 stopDev(),再重置画面变换并重新执行 playOrSeek(),形成“启动成功 → 无首帧 → 停止 → 重放”的闭环重试。
  • 调用链:KMP playVideoByTime → RecordPlayerView.startReplay → LibImpl.startNvrReplay 返回 0 → SDK 首帧/业务帧消息 → RecordPlayerView.onSdkMessage → KMP 事件 → 卡回放首帧消费与无帧监听刷新。
  • 当前断点在“SDK 请求已接受”之后、“KMP 首帧/业务帧事件到达”之前。现阶段最可疑的是 KMP 渲染器与 PlayerDevice.m_video 的绑定时序、页面生命周期切换,或窗口 ID 对应的首帧消息没有路由到当前 KMP View;尚无证据认定 NVR 固件或公网链路异常。

根因结论

  • 置信度:现象 🟢 强;根因 🟡 中。
  • 一句话根因:同一在线 NVR 通道能被原生预览正常解码,但切入 KMP 卡回放后当前会话持续收不到首帧或业务帧;KMP 播放器绑定/首帧事件路由存在缺陷,导致每 10 秒停止并重试。
  • 关键证据链:用户明确“平板卡回放异常、预览正常、手机相对正常” → 日志中同一通道原生预览收到首帧 → KMP 三次 startNvrReplay ret=0 后均连续 10 秒无帧 → 代码的无帧监听按设计停止并重放,完全对应用户看到“经常不能回放或跳秒”。
  • 明确不下的结论:不把 result=0 当作失败原因,不判定为 NVR 4.6.1.8 固件全量故障,也不把该问题与 HarmonyOS 回放不可用或 Android 16 分屏进程重启合并。

建议下一步

  • 分配给:KMP 回放架构负责人陈宝旺为主,Android 回放桥接负责人唐胜配合;任务 T-20261020-170615-54cd,状态 P1 / captured。
  • 在 HONOR ROL-W60、Android 8.4.1.6、在线 TS8108D35 4.6.1.8 上复现,连续执行进入 KMP 卡回放、切换 CH-1/CH-2、暂停恢复、seek 和前后台切换,每轮至少 10 次。
  • 为每次播放增加 requestId,同时记录 KMP View 实例、openglesRender、Surface、device.m_video、m_view_id、startNvrReplay 返回码、onNvrReplayResp、MSG_RECEIVER_MEDIA_FIRST_FRAME、MSG_REPLAY_SET_POSITION、首帧耗时和当前页面生命周期。
  • 修复方向:在启动取流前确保当前 KMP View 的渲染器已经完成绑定;首帧、业务帧和失败事件都携带 requestId,丢弃旧会话回调;无帧重试达到上限后展示明确错误或回退原生播放器,禁止持续静默重放。
  • 回归矩阵覆盖平板与手机、H.265 与 H.264、原生预览与 KMP 卡回放、前后台切换、通道切换、暂停恢复和连续 seek;验收标准为在线通道 3 秒内出首帧、10 次连续切换无超时。

本期扫描全量

分类与处置反馈数反馈 ID
🔴 NVR 卡回放无首帧,进入问题 11258544
🟡 Android/iOS 进程重启单点,与近期进程重启任务同域观察2258538、258473
🟡 HarmonyOS 回放、录像或监控异常,24 小时内同域重复5258523、258512、258511、258477、258521
🟡 HarmonyOS 点击不同设备仍显示首个画面,24 小时内同域重复2258474、258461
🟡 设备离线、无连接或售后支持单点7258537、258535、258525、258503、258480、258465、258464
🟡 其他回放、录像或报警媒体单点4258489、258488、258483、258460
🟡 OSD 修改或同步失败,同一用户连续提交2258528、258527
🟡 设备删除、恢复出厂或重新绑定咨询7258526、258522、258504、258495、258494、258493、258492
🟡 夜视能力单点,需设备侧能力位补证1258463
🟤 广告展示诉求,转产品频控评估1258536
🟢 内容过短、语义不明或未形成缺陷证据3258513、258482、258459
已折叠 1 条普遍性网络问题(含 -102/-101/-1002 与中/英/俄/法/西/葡/土/阿/日多语言网络提示模板,如 Проверьте телефонную сеть、Please check your mobile network);全量明细见同名 Markdown 知识库。
反馈接口按 2026-10-20 查询返回 total=86 / fetched=86 / complete=true,再按 09:00:32~17:06:35 精确纳入;上表按主问题唯一归类,合计 86 条。258544 发生于 17:01:03,位于本次实际扫描终点之前。258474 与 258461、258495~258492 的连续提交分别按用户级问题聚类,不按提交次数放大严重度。

心愿单、数据源与待补证

心愿单亮点

心愿单 ID平台 / 版本诉求价值判断
5409Android / 8.4.1.6有线网络恢复后设备应自动重连,不应要求断电重启⭐⭐⭐ 直接关系离线恢复与售后成本
5407Android / 8.4.1.6去除容易误点的收费小广告⭐⭐⭐ 与同窗口 258536 反馈互相印证,需产品评估频控与关闭按钮生命周期
5406Android / 8.4.1.6希望能查看过去一年至更长的低成本云录像⭐⭐ 涉及云存储成本、套餐与长期留存
5401Android / 8.4.1.6建议研发带屏幕、可调灯光的工程宝⭐⭐ 属于安装调试工具形态的新设备机会

数据源状态

  • 反馈平台:✅ 正常。total=86 / fetched=86 / complete=true,窗口内 86 条全部纳入扫描。
  • 心愿单:✅ 正常。total=10 / fetched=10 / complete=true。
  • 神策:✅ 可查询。NvrDeviceVideoPlayback 趋势与字段检查成功;事件不含结果/错误码且本日仅 4 条,只用于说明 NVR 回放性能样本和埋点边界,不计算全局失败率。
  • Logan:✅ 核心证据完整。258544 Logan 覆盖 27,472 行,能够直接比较原生预览首帧与 KMP 回放无帧超时。
  • 代码仓:✅ 正常。已定位 KMPPlayBackVideoView、RecordPlayerView 和 CardPlayBackPageLogic 的启动、首帧事件与无帧重试链路。
  • 友盟:⏭️ 本期主问题为功能链路无首帧,不是崩溃或 ANR 趋势分析,不将崩溃率混作回放失败率。
  • TAPD:⏭️ 未调用。当前已有可复现的产品、固件和端侧日志,先用任务账本推进客户端修复,避免历史 Bug 干扰根因。

待补证

  • 258544 的 NVR 设备侧日志、固件 4.6.1.8 的升级前后对照,以及平板与手机使用相同录像时间点时的 P2P 建流、H.265 解码和首帧时间线。
  • KMP View 的实际 Surface 尺寸、openglesRender 绑定时刻、PlayerDevice.m_view_id 变化,以及首帧消息是否到达但被旧 View/旧窗口消费。
  • Android 258538 的完整进程重启日志仍缺异常栈;iOS 258473 的“app 重启”缺少可读堆栈,两者继续沿用近期任务观察,不并入本期 NVR 结论。
  • NvrDeviceVideoPlayback 仅有 4 条/日且无失败状态,建议补充 requestId、result、error_code、入口类型、首帧耗时和重试次数,否则线上无法量化 KMP 无帧率。

下一期 = 第245期 = 2026-10-21-H09.md(明天上午 09:00;窗口 今日 17:06:35~明日 09:00)

🗂️历史期次

查看全部历史期次(近 90 天)→