Seetong · Report
🎯 Seetong 问题雷达 09:00 第255期
时间窗口:2026-10-25 17:00:41~2026-10-26 09:00:31(Asia/Shanghai)
TL;DR 核心要点
- 🟠 iOS 8.4.1.6 的 KMP 回放页出现“进入后点不动或卡死”复发。本窗口新增两名独立用户;反馈 259584 的 Logan 能确认报警推送成功进入 PlayBackPage,首轮云回放也能在约 1 秒内完成解析、解码和首帧渲染,但随后 59 秒内页面被连续创建 3 次,并出现一次 2304×1296 与 3840×2160 参数不一致的解码错误。现有代码仍允许解析后 1.2 秒无首帧时直接回报成功,并把播放错误与正常结束混为同一结束事件,严重度 70 / 100,根因置信度 中。
- 反馈 259584:2026-10-25 21:33:46,iOS 8.4.1.6,iPhone 系统 27.0.1,河南濮阳,原文为“一打开录像回放或者报警回放软件直接卡死”,并提供了 Logan 和附件。
- 反馈 259586:2026-10-25 21:45:42,iOS 8.4.1.6,iPhone 系统 17.6.1,山东聊城,原文为“点进去基本失灵,点都点不动卡死了”,未提供 Logan。
最近一个月 Top 问题
按严重度与复发期数排序,已把跨期同类反馈归集;负责人由问题代码锚点对应的 Git 提交历史(blame / 近期主要提交者)反查;数据窗口:最近 30 天(截至 2026-10-26)。
| # | 问题(严重度降序) | 严重度 | 平台 | 版本 | 负责人 | 问题原因 |
|---|---|---|---|---|---|---|
| 1 | HarmonyOS `1.1.2.3` 多用户离线与核心视频链路失效 21 期 · 175 条反馈 | 100 | Android · HarmonyOS | 1.1.1.11 / 8.4.1.6 / 1.1.2.3 | 唐胜、陈宝旺、冉博麟、谭伟 | HarmonyOS 客户端把 P2P 瞬时离线写成本地持久状态,并在后续在线判断中优先使用这个旧值,可能导致设备已恢复在线却仍显示离线;回放离线态和播放错误透传不足则放大了用户的“看不到画面”体验。 |
| 2 | Android 与 iOS 8.4.1.6 报警功能突然失效与通知不达 1 期 · 3 条反馈 | 90 | Android · iOS | 8.4.1.6 | 唐胜、许源 | 现有客户端样本表明 Android 通知权限与 token 注册均成功,故障更接近“服务端未生成报警或推送任务未送达”,但神策缺少报警生成与推送到达事件,iOS 样本又混合了通知权限关闭,当前不能完成单点定因。 |
| 3 | HarmonyOS 画中画状态导致切换设备后仍显示前一路画面 1 期 · 3 条反馈 | 90 | HarmonyOS | 1.1.1.11 / 1.1.2.3 | 张跃译 | 多个 HarmonyOS 画面共享一个无代次、无串行化、无旧控制器清理的 PipManager,切换设备时旧创建任务和新选择竞争,最终把第一路 XComponent、savId 或恢复状态保留下来。 |
| 4 | 升级后回放体验整体退化 5 期 · 20 条反馈 | 85 | Android · HarmonyOS · iOS | 8.4.1.6 / 1.1.2.3 / 8.3.14.2 | 唐胜、许源、欧阳荣、谭伟 | 8.4.1.6 对回放链路做了多处改动(时间条 UI、通道切换进度对齐、报警-录像联动),导致回放体验多点退化;Logan 显示取流层无崩溃,问题在"UI/状态对齐 + 报警录像关联"而非连接失败。 |
| 5 | KMP 回放页未申请屏幕常亮,回放中手机自动息屏 12 期 · 31 条反馈 | 84 | Android · HarmonyOS | 8.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,回放过程中发生系统级息屏。 |
| 6 | Android 实时预览无首帧却被标记为“视频播放中”,并无限重试 6 期 · 14 条反馈 | 80 | Android · iOS | 8.4.1.6 / 8.4.1.4 | 唐胜、欧阳荣、谭伟、张威 | 预览页把“取流请求已提交”或“设备在线状态消息”误当成播放成功,而没有把首帧到达作为唯一成功门禁;add_watch_result=-1 后仍持续 10 秒重试并显示“视频播放中”,导致用户长时间等待且无法获得明确失败反馈。 |
| 7 | SD 卡跌至不可读写或反复未初始化,录像回放被直接阻断 3 期 · 9 条反馈 | 80 | Android · HarmonyOS · iOS | 8.4.1.6 / 1.1.1.11 | 唐胜、张威、陈宝旺 | 设备上报的 SD 卡状态在 258245 中持续处于未初始化/格式化中,在 258173 中由正常可读写跌至不可读写;App 按协议正确展示异常,根因更可能在 SD 卡、卡槽/供电、设备存储控制器或固件挂载逻辑,而不是 KMP 页面误报。 |
| 8 | iOS `8.4.1.6` 云回放卡顿,首帧与失败状态可能被提前结算 2 期 · 8 条反馈 | 80 | Android · iOS | 8.4.1.6 / 8.3.11.3 / 8.4.106 | 陈宝旺、欧阳荣、谭伟 | iOS 云回放容器允许解析完成后在 1.2 秒无首帧时提前向 KMP 返回成功,同时把 IJK 播放错误与正常结束合并处理,导致页面对真实卡顿、缓冲超时或解码失败缺少准确状态和可回溯证据;这是高度可疑的共同客户端缺陷,但仍需复现确认其是否为 3 名用户的直接主因。 |
| 9 | iOS 8.1.2.4 微信登录授权码重复提交触发 30100225 1 期 · 3 条反馈 | 80 | iOS | 8.1.2.4 / 8.1.204 / 8.4.106 | 待定 | 微信回调与恢复登录没有一次性 state、幂等锁和授权码消费机制,重复回跳或重试会把同一个单次授权码再次发给服务端,服务端以 30100225 拒绝后客户端仍保留旧状态。 |
| 10 | Android `8.4.1.6` 在线状态不一致导致卡录像无法打开 1 期 · 1 条反馈 | 80 | Android | 8.4.1.6 | 张威 | 客户端继续使用一份已陈旧约 8 小时的在线缓存,同时又允许单次 P2P 离线事件直接覆盖设备状态;状态模型没有区分云端心跳、P2P 连通和播放出帧,导致用户看到“在线但录像打不开”,且回放页缺少可恢复路径。 |
问题 1:iOS 8.4.1.6 KMP 回放页卡死复发 | 负责人:欧阳荣、谭伟、陈宝旺、位冬
现象与覆盖范围
- 反馈
259584:2026-10-25 21:33:46,iOS8.4.1.6,iPhone 系统27.0.1,河南濮阳,原文为“一打开录像回放或者报警回放软件直接卡死”,并提供了 Logan 和附件。 - 反馈
259586:2026-10-25 21:45:42,iOS8.4.1.6,iPhone 系统17.6.1,山东聊城,原文为“点进去基本失灵,点都点不动卡死了”,未提供 Logan。 - 两条反馈相隔 12 分钟,来自不同系统版本、地区和账号。症状都指向“进入回放后页面失去响应”,不是单纯无录像、设备离线或明确网络报错。
- 同期 2026-10-19 已有 4 条、3 名独立用户报告 iOS
8.4.1.6云回放卡顿或无法观看,跨 iPhone 系统16.x/17.x/18.x。本次属于同一问题族的再次出现,不重复计算旧样本为新增反馈量。 - 严重度评分:70 / 100。反馈量 10(本窗口 2 名独立用户)、共性广度 30(iOS、
8.4.1.6、两个 iOS 系统版本、两个省级地区)、业务关键度 30(录像与报警回放主链路)。 - 去重判定:超过 24 小时的详细分析可重新进雷达;沿用既有 P1 任务
T-20261020-090554-09c5,不新建重复任务。HarmonyOS 离线或回放异常、Android 回放息屏仍在 24 小时重复窗口内,本期只保留为延续线索。
神策证据
- iOS
8.4.1.6在 2026-10-25 的DeviceVideoPlayback为 2,602,692 PV,带明确业务错误码 71,619 PV,占 2.752%;2026-10-26 截至查询时为 496,566 PV / 18,013 PV,占 3.628%。 - 同版本
CloudPlayback在 2026-10-25 为 52,594 PV,非200业务码 25,000 PV,占 47.534%;2026-10-26 截至查询时为 10,123 PV / 5,059 PV,占 49.975%。 - 10 月 25 日卡回放错误码前三为
SA10600623,556 PV / 11,595 UV、SA10600123,033 PV / 18,459 UV、SA1060077,356 PV / 4,933 UV;云回放前三为3060020118,008 PV / 10,748 UV、SA1060046,562 PV / 4,954 UV、SA106001277 PV / 257 UV。 - 上述业务码总量未出现断崖,且
SA106006/SA106001/SA106007分别偏向时间轴、录像获取或设备离线,不能直接解释“页面点不动”。神策现有事件也没有主线程耗时、页面交互响应时间或 KMP 渲染队列字段,因此只能证明回放业务规模与错误背景,不能替代 Logan 对卡死现场的判断。 - 按 iOS
8.4.1.6、2026-10-19 至 2026-10-26 观察,卡回放明确业务错误占比在 2.75%~3.63%,云回放非200业务码占比在 45.71%~49.98%。该比例在本次反馈窗口前后基本连续,不支持“服务端回放在同一时刻整体中断”,也不排除特定设备、片段或客户端状态机触发。
Logan 关键日志
- 反馈
259584的 Logan 共 140,809 行 / 762,137 字节,覆盖 2026-10-25 00:40 至 21:33;同条反馈附件Log0.txt/Log1.txt共 102,136 行。 - 21:12:25 点击
人形侦测 - 大门外面离线报警推送后,KMPRouter.m记录openPlaybackPage devId=45441989 fromOfflinePush=1 fromAlarmReplay=1并创建 KMPPlayBackPage,内存约 85.955 MB;并非通知入口完全失效。 - 21:12:28~29 依次出现
prepareVideo、playVideo、FFP_MSG_PREPARED、FFP_MSG_VIDEO_DECODED_START和FFP_MSG_VIDEO_RENDERING_START,画面尺寸1920×1080,证明这一次云回放已实际出帧,不能把问题写成“所有回放均黑屏”。 - 21:31:14、21:31:43、21:32:13 又分别创建 KMP
PlayBackPage,内存依次约 268.815 MB、220.252 MB、206.049 MB。21:31:46 出现decode error, width=2304, height=1296, param width=3840, param height=2160,说明至少一次会话发生视频参数与解码参数不一致。 - 21:32:30 页面记录
stop for page disappear,21:32:31 完成releasePlay、unbindView和onDestroy;21:33:02 旧进程[29733]进入后台,约 0.2 秒后新进程[29740]启动。日志没有 watchdog、未捕获异常或崩溃栈,因此当前不能区分用户主动重启与系统终止,只能确认现场发生了进程切换。 - 反馈
259586未提供 Logan,无法确认它是否经过同一条 KMP 路由、是否出现解码参数不一致或主线程阻塞。两名用户描述一致,但现有直接技术证据主要来自259584。
代码定位
- 涉及模块:
Seetong5.0_ios/Seetong_tps/KMP/Router/KMPRouter.m、KMP/View/KMPCloudPlaybackVideoView.m、KMP/View/KMPPlayBackVideoView.m、Classes/TPS/View/IjkPlayerVideoView/IjkPlayerVideoView.m。 KMPRouter.m:299-317:PlayBackPage每次都新建STKuiklyRenderViewController并直接入栈,入口没有按devId + alarmTime + 当前页面做单飞或重复点击门禁。短时间重复打开时会叠加 KMP 页面、IJK 状态机和视频资源。KMPCloudPlaybackVideoView.m:544-578:playVideo每轮都会重建播放器并登记请求序号,但页面本身的推栈尚未建立幂等保护;页面多发并不意味着播放器状态能安全并发收敛。KMPCloudPlaybackVideoView.m:57、:490-505:解析完成后固定等待 1.2 秒,即使首帧仍未到达也调用kmp_resolvePendingPlayCallback:YES。这会让业务层误以为播放已成功,页面可能仍卡在不可交互或无画面的状态。IjkPlayerVideoView.m:722-749:IJKMPMovieFinishReasonPlaybackError与IJKMPMovieFinishReasonPlaybackEnded进入同一结束回调;上层KMPCloudPlaybackVideoView.m:862-896随后使用同一完成事件,业务层无法区分正常结束、解码失败和播放错误。KMPCloudPlaybackVideoView.m:684-722:releasePlay与unbindView在主线程同步执行停止、清理过渡帧、取消回调和停止 IJK。正常路径可以完成,但缺少各阶段耗时与超时观测,无法判断哪一段在“点不动”时占用主线程。- 当前
feature_v8.4.2_lan分支 HEAD44ef9c45e仍保留 1.2 秒成功兜底及错误/正常结束合流;近期提交没有针对本次“页面交互卡死”完成修复。主要代码责任人可定位到欧阳荣与谭伟。
根因结论
- 置信度:🟡 中。两名用户的现象独立重复,代码存在明确的状态机缺口,但目前只有一条反馈有可读现场,且日志未捕获主线程阻塞或崩溃栈。
- 一句话根因:iOS KMP 回放链路没有把“页面入口幂等、首帧确认、错误终态、资源释放”统一成唯一状态机;解析后无首帧仍可被标记成功、错误可被当成正常结束,重复进入还会叠加页面与播放器实例,最终表现为 loading 结束但页面仍不可操作或卡死。
- 关键证据链:两名不同系统版本和地区的 iOS
8.4.1.6用户均描述回放页点不动 →259584日志证明 KMP 页面可进入且曾成功出帧,但短时间连续创建 3 次并出现解码参数不一致 → 源码直证 1.2 秒无首帧可回报成功、错误与结束共用事件、路由无重复打开保护 → 友盟未记录同版本卡顿或崩溃尖峰,进一步说明需要客户端内部可观测性而不是只看 APM。 - 明确不下的结论:不能据此认定所有 iOS 回放都会卡死,不能把 47% 的云回放非
200业务码直接当作真实失败率,也不能把259584的进程切换认定为系统崩溃或用户主动重启。
建议下一步
- 分配给:欧阳荣负责 iOS KMP 回放状态机与路由门禁,谭伟复核 IJK 错误透传和资源释放;沿用任务
T-20261020-090554-09c5,状态保持P1 / captured。 - 优先修复:
PlayBackPage以devId + alarmTime + playbackMode做入口单飞,页面存在或正在创建时复用现有实例;loading 只能在首帧、明确失败或最终超时三者之一结束时关闭,禁止prepared_fallback返回成功。 - 错误分层:把 IJK 的
PlaybackError、正常结束、页面离场和用户停止拆成互斥事件,并透传devId、请求序号、片段 URL、解码宽高、已播放时长、错误码和重试次数。 - 响应性观测:记录
openPlaybackPage推栈耗时、prepareVideo、playVideo、首帧、解绑、停止和页面离场耗时;主线程连续阻塞超过 500 ms 时上报专用 watchdog 事件,避免下一次仍只能依赖用户文字反馈。 - 回归矩阵:iOS
8.4.1.6真机覆盖 iPhone 系统17.x/27.x、云回放与卡回放、报警推送冷启动、正常首帧、解析成功但无首帧、快速双击入口、连续进入退出 20 次、解码参数异常、前后台切换和弱网恢复;验收要求页面可交互、每个请求只有一个终态、退出后无残留播放器。 - 回访:优先联系
259584/259586,补采第二次卡死发生时刻、是否点击返回无响应、是否强制结束 App,以及对应设备和回放时间点。
本期扫描全量
| 分类与处置 | 反馈数 | 反馈 ID |
|---|---|---|
| 🟠 iOS KMP 回放卡死,进入问题 1 | 2 | 259584、259586 |
| 🔁 24 小时内已分析问题族 | 15 | Android 回放息屏 1:259619;HarmonyOS 离线、无画面或回放异常 14:259527、259557、259559、259570、259573、259585、259592、259603、259604、259608、259609、259618、259639、259640 |
| 🟡 单点功能、离线、录像或固件异常 | 15 | 259523、259530、259536、259540、259542、259593、259597、259611、259617、259626、259629、259633、259637、259638、259643 |
| 🟤 咨询、建议或无效文本 | 4 | 259549、259558、259565、259615 |
已折叠 1 条普遍性网络问题(含-102/-101/-1002与中/英/俄/法/西/葡/土/阿/日多语言网络提示模板,如Проверьте телефонную сеть、Please check your mobile network);全量明细见同名 Markdown 知识库。
反馈接口返回total=126 / fetched=126 / complete=true / pages=3。上表按主问题唯一归类,合计 126 条;259521是窗口内首条,259646是末条。259603/259604与259639/259640分别为同一用户短时重复提交,仍按记录数保留在全量表中。
心愿单亮点
| 心愿单 ID | 平台与版本 | 诉求 | 价值判断 |
|---|---|---|---|
| 5517 | Android / 8.4.1.6 | 同一录像机切换不同通道时,保留刚浏览的回放时间,而不是回到约一小时前 | ⭐⭐⭐ 直接影响多通道回看效率,可与本期回放状态持久化一并评估 |
| 5519 | HarmonyOS / 1.1.2.3 | 设备断电时主动通知,便于野外汇看场景及时发现异常 | ⭐⭐⭐ 与低功耗设备、报警和通知可靠性直接相关 |
| 5514 | Android / 8.4.1.6 | 支持手机远程配置国标参数,减少必须到局域网电脑操作的成本 | ⭐⭐⭐ 工程安装与运维效率诉求明确 |
| 5511 | Android / 8.4.1.6 | 增加分享人员访问日志,包含查询时间和次数 | ⭐⭐ 有利于设备共享后的安全审计,但需确认服务端权限模型 |
心愿单接口返回 total=16 / fetched=16 / complete=true / pages=1;其余为低信息量、重复或无明确产品化价值的建议。
数据源状态与待补证
- 反馈平台:✅ 正常。完整拉取
126/126条,并断点后的时间窗口内记录全部纳入分类。 - 心愿单:✅ 正常。完整拉取
16/16条。 - 神策:⚠️ 部分可用。
DeviceVideoPlayback/CloudPlayback业务量和错误码查询成功;现有事件没有主线程阻塞、页面点击响应、KMP 状态机终态或卡死标记,不能直接量化本问题发生率。 - 友盟:⚠️ 未形成有效旁证。iOS
8.4.1.6的今日与近 7 天卡顿类型、崩溃类型均为 0;这只能说明 APM 未捕获相应异常,不能排除页面无响应。 - Logan:⚠️ 部分可用。
259584的 Logan 与附件可读,确认 KMP 路由、播放器创建、解码错误和进程切换;259586未提供 Logan,不能把两人的现场强行归为同一代码分支。 - 代码仓:✅ 已只读核对
Seetong-App-iOS当前feature_v8.4.2_lan分支,工作区无未提交改动;在线包与当前分支的逐文件二进制对应关系仍需发布侧确认。 - TAPD:⏭️ 未调用。当前为功能性回放问题,先用客户端日志、神策和代码链路定界,不以历史 Bug 搜索替代直接证据。
- 待补证:
259586的现场日志;259584卡死瞬间是否出现主线程 watchdog;两次反馈对应设备、片段和网络类型;prepared_fallback是否曾在真实用户上先于首帧完成;当前线上包是否包含KMPRouter入口单飞修复。
下一期 = 第256期 = 2026-10-26-H17.md(今天下午 17:00;窗口 2026-10-26 09:00:31~17:00)