Seetong · Report
🎯 Seetong 问题雷达 17:00 第256期
时间窗口:2026-10-26 09:00:31~2026-10-26 17:00:54(Asia/Shanghai)
TL;DR 核心要点
- 🟠 Android 8.4.1.6 海外预览出现 HEVC 解码器零宽高初始化失败。用户连续 3 次反馈“国内能看、国外看不了,加载不动”;附件日志在 15:25:08 直接记录 width=0、height=0 被传给 MediaCodec,随后以 BAD_VALUE 失败,调用链落在 PreviewPlayerView.playVideo → LibImpl.onMsgRspAddWatch → PlayCtrlAgent.OpenStreamAgent。同一日本地区当天仍有 647 次设备连接事件、295 名用户,暂不支持“区域整体不可用”,严重度 90 / 100,根因置信度 中。
- 反馈 259684:2026-10-26 14:05:38,Android 8.4.1.6,OPPO PKU110,日本茨城县,原文为“国内观看正常,国外看不了,加载不动”。
- 反馈 259686:14:12:16,同一用户原始为“国内可以看。国外不可以”。
最近一个月 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 `8.4.1.6` HEVC 预览以零宽高启动解码器 1 期 · 3 条反馈 | 90 | Android | 8.4.1.6 | 张威、唐胜、谭伟 | Android 8.4.1.6 在首次 TPS_AddWachtRsp 尚未提供有效 HEVC 宽高时,仍立即调用 OpenStreamAgent 创建 MediaCodec,系统以 BAD_VALUE 拒绝零宽高配置,而客户端没有等待后续媒体参数或建立明确失败终态。 |
| 3 | Android 与 iOS 8.4.1.6 报警功能突然失效与通知不达 1 期 · 3 条反馈 | 90 | Android · iOS | 8.4.1.6 | 唐胜、许源 | 现有客户端样本表明 Android 通知权限与 token 注册均成功,故障更接近“服务端未生成报警或推送任务未送达”,但神策缺少报警生成与推送到达事件,iOS 样本又混合了通知权限关闭,当前不能完成单点定因。 |
| 4 | HarmonyOS 画中画状态导致切换设备后仍显示前一路画面 1 期 · 3 条反馈 | 90 | HarmonyOS | 1.1.1.11 / 1.1.2.3 | 张跃译 | 多个 HarmonyOS 画面共享一个无代次、无串行化、无旧控制器清理的 PipManager,切换设备时旧创建任务和新选择竞争,最终把第一路 XComponent、savId 或恢复状态保留下来。 |
| 5 | 升级后回放体验整体退化 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/状态对齐 + 报警录像关联"而非连接失败。 |
| 6 | 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,回放过程中发生系统级息屏。 |
| 7 | Android 实时预览无首帧却被标记为“视频播放中”,并无限重试 6 期 · 14 条反馈 | 80 | Android · iOS | 8.4.1.6 / 8.4.1.4 | 唐胜、欧阳荣、谭伟、张威 | 预览页把“取流请求已提交”或“设备在线状态消息”误当成播放成功,而没有把首帧到达作为唯一成功门禁;add_watch_result=-1 后仍持续 10 秒重试并显示“视频播放中”,导致用户长时间等待且无法获得明确失败反馈。 |
| 8 | SD 卡跌至不可读写或反复未初始化,录像回放被直接阻断 3 期 · 9 条反馈 | 80 | Android · HarmonyOS · iOS | 8.4.1.6 / 1.1.1.11 | 唐胜、张威、陈宝旺 | 设备上报的 SD 卡状态在 258245 中持续处于未初始化/格式化中,在 258173 中由正常可读写跌至不可读写;App 按协议正确展示异常,根因更可能在 SD 卡、卡槽/供电、设备存储控制器或固件挂载逻辑,而不是 KMP 页面误报。 |
| 9 | 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 名用户的直接主因。 |
| 10 | iOS 8.1.2.4 微信登录授权码重复提交触发 30100225 1 期 · 3 条反馈 | 80 | iOS | 8.1.2.4 / 8.1.204 / 8.4.106 | 待定 | 微信回调与恢复登录没有一次性 state、幂等锁和授权码消费机制,重复回跳或重试会把同一个单次授权码再次发给服务端,服务端以 30100225 拒绝后客户端仍保留旧状态。 |
问题 1:Android 8.4.1.6 HEVC 预览以零宽高启动解码器 | 负责人:张威、唐胜、谭伟
现象与覆盖范围
- 反馈
259684:2026-10-26 14:05:38,Android8.4.1.6,OPPOPKU110,日本茨城县,原文为“国内观看正常,国外看不了,加载不动”。 - 反馈
259686:14:12:16,同一用户原始为“国内可以看。国外不可以”。 - 反馈
259689:14:28:29,同一用户原始为“国内能看,国外看不了”,并上传设备日志。 - 三条反馈在 23 分钟内连续提交,问题稳定复现于同一用户、同一手机、同一网络位置;用户上传的附件日志覆盖 15:16~15:28,能够看到实际播放入口和解码失败现场。
- 严重度评分:90 / 100。反馈量 20(3 条)、共性广度 30(Android、
8.4.1.6、OPPOPKU110、摄像机TD53E30、日本)、业务关键度 40(远程实时查看主链路)。 - 去重判定:近 24 小时未分析过“HEVC 零宽高初始化”问题,也不是第255期 iOS KMP 回放卡死问题的同一代码路径,因此本期独立进入雷达。
神策证据
- Android
8.4.1.6在日本当天共有 647 次DeviceConnectResult、295 名用户,连接类型分布为SRFLX、RELAY、LOCAL,说明日本地区并非整体断网或服务不可达。 - 同手机型号
PKU110、同版本、同国家的账号当天有 12 次DeviceConnectResult、1 名用户;SiotDevConnectResult为 32 次、1 名用户,其中RELAY26 次、SRFLX6 次。连接链路有活动,问题发生在媒体参数进入客户端解码器之后。 - 故障设备动态 ID
39120867在MonitorFrameResult/NvrMonitorFrameResult中,10 月 23 日有 1 次出图记录,10 月 24 日与 10 月 26 日均为 0。该证据只能说明本周该设备出图稀少,最终根因仍以同用户附件日志和源码为准。 - 当天所有
NvrMonitorFrameResult共 14,421 次 / 56 名用户,服务仍有正常出图样本;NvrMonitorFrameResult未提供可用于该样本的完整版本、国家等公共字段,因此没有把全量性能均值当作单设备结论。
Logan 关键日志
- 反馈
259689附件为seetong_logcat_1.log,共 10,133 行,覆盖 2026-10-26 15:16:05~15:28。 15:25:08.764记录playVideo: 39120867 playVideo isPlayerStarted:false,用户从设备页进入摄像机TD53E30的实时预览。15:25:08.967MediaCodec 配置参数明确出现:
string mime = "video/hevc"、int32_t width = 0、int32_t height = 0。
15:25:08.969连续出现Codec reported err 0xffffffea/BAD_VALUE与configure failed with err 0xffffffea。- Java 栈为:
PlayCtrlAgent.OpenStreamAgent → LibImpl.onMsgRspAddWatch(LibImpl.java:5188) → LibImpl.doMsgRspCB(LibImpl.java:3249) → FunclibAgent.AddWatchEx → LibImpl.addWatch(LibImpl.java:1538) → LibImpl.startPlay(LibImpl.java:542) → PreviewPlayerView.playVideo(PreviewPlayerView.kt:528)。
15:25:18.573同一设备执行StopWatchAgent,从 AddWatch 到停止约 9.6 秒;日志中没有该设备首帧完成记录。随后用户连续切换多个设备,仍多次出现 AddWatch 后数秒 StopWatch。- 日志没有显示
-102、-101或明显的 P2P 认证失败。当前首要失败点是 Android 客户端把零宽高媒体参数送入了系统 HEVC 解码器。
代码定位
- 涉及模块:
Seetong-App-Android/Seetong5.0ForSeetong/Seetong5.0/app/src/main/java/com/seetong/app/seetong/sdk/impl/LibImpl.java、ui/view/video/PreviewPlayerView.kt、ui/view/video/PlayerControllerImpl.kt。 LibImpl.java:5188-5279:onMsgRspAddWatch解出TPS_VIDEO_PARAM tvp后直接序列化并调用OpenStreamAgent,没有校验video_encoder、width、height或config是否完整。LibImpl.java:5210-5232:代码已经识别 SIOT 设备可能“先返回无宽高媒体参数,再返回有宽高参数”,但这段补丁只在重复回调进入同一编码器分支时执行。首次回调若lastAddWatch为空,会绕过该分支并直接用零宽高创建解码器。LibImpl.java:5279-5293:首次OpenStreamAgent失败后仅等待 100 ms,再用同一个videoParam重试;当参数本身仍为零宽高时,重试不能恢复。LibImpl.java:5252-5253:创建解码器前就写入VIDEO_STATE_START并通知渲染层,导致上层可能先进入“启动中”状态,之后没有首帧也没有明确终态。LibImpl.java:5297:异步打开流失败时仅通过setTipText发通用媒体参数错误;入口LibImpl.addWatch早已返回AddWatchEx的同步结果,调用方不能据此确认首帧或解码成功。PreviewPlayerView.kt:528:播放器入口把异步startPlay的即时结果作为后续 UI 判断依据;后续OpenStreamAgent抛错不会转换成同一套可见的失败状态。PlayerControllerImpl.kt:60-92:控制器捕获同步异常并返回-1,但本次异常发生在其调用栈之下、稍后的原生回调线程中,现有 try/catch 覆盖不到。- 代码责任锚点集中在
LibImpl.onMsgRspAddWatch的媒体参数门禁,近期相关零宽高兼容修改为1d35eceb3,作者为张威。当前分支feature_v8.4.2、HEAD311a8b8db,工作区无未提交改动。
根因结论
- 置信度:🟡 中。技术失败链有日志和源码双重直证,但暂只有 1 名用户、1 台手机和 1 台摄像机样本。
- 一句话根因:Android
8.4.1.6在首次TPS_AddWachtRsp尚未提供有效 HEVC 宽高时,仍立即调用OpenStreamAgent创建 MediaCodec,系统以BAD_VALUE拒绝零宽高配置,而客户端没有等待后续媒体参数或建立明确失败终态。 - 关键证据链:三条同用户连续反馈稳定描述海外加载不动 → 附件日志在对应时间进入预览 → MediaCodec 明确收到
1920以外的零宽高配置并报BAD_VALUE→ Java 栈精确落在onMsgRspAddWatch → OpenStreamAgent→ 源码在传参前无宽高校验,且首次回调绕过已有 SIOT 零宽高更新分支。 - 明确不下的结论:不能认定所有 Android
8.4.1.6用户在海外都会出现该问题,也不能把问题归因于日本网络整体故障。现证据支持的是特定设备媒体参数时序触发客户端解码初始化缺陷。
建议下一步
- 分配给:张威修复 SDK 桥接与媒体参数状态机,唐胜复核预览入口、错误终态和切设备行为。
- 优先修复:在
LibImpl.onMsgRspAddWatch调用OpenStreamAgent前增加硬门禁,编码器为空、宽高任一为 0 或配置缺失时保持等待态,禁止创建 MediaCodec;只有收到完整参数后才启动解码,并设置与首帧关联的超时。 - 状态建模:把
ADD_WATCH_REQUESTED → MEDIA_PARAM_PENDING → DECODER_OPENING → FIRST_FRAME → FAILED/STOPPED拆成互斥状态。零宽高首包只能缓存,不能把VIDEO_STATE_START提前广播为可播放。 - 错误透传:把
IllegalArgumentException、BAD_VALUE、播放器重试次数、编码器、宽高、摄像机型号和请求代次上报专用事件;同一参数重试不得无条件执行。 - 兼容策略:若设备持续只返回零宽高,可根据设备能力或历史参数使用受控回退,但必须标注
fallback=true并带独立失败码,不能静默伪装成功。 - 回归矩阵:Android
8.4.1.6+ OPPOPKU110+TD53E30、国内与日本网络、主码流与子码流、H.264 与 HEVC、零宽高后补全参数、重复 AddWatch、快速切设备、前后台切换。验收要求首帧前不进入播放态,失败时 10 秒内出现明确错误,且无残留解码线程。 - 回访:联系反馈
259684/259686/259689对应的同一用户,补采国内正常与日本失败两组 Logan,确认问题是否只在跨境RELAY/SRFLX路径触发,还是零宽高参数在任意网络下均可复现。 - 任务账本:已登记
T-20261026-171007-2f49,状态P1 / captured。
本期扫描全量
| 分类与处置 | 反馈数 | 主要反馈 ID 或说明 |
|---|---|---|
| 🟠 Android HEVC 零宽高导致海外预览失败,进入问题 1 | 3 | 259684、259686、259689 |
| 🔁 24 小时内已分析或同功能族线索 | 4 | 259668、259678、259711、259712;分别关联回放或离线既有问题族 |
| 🟡 单点设备、账号、固件、配置或安全咨询 | 17 | 包含 259674 密码重置 30000213、259715/259698 恢复出厂设置、259703/259702 SD 卡未初始化、259710 安全疑虑等 |
| 🟤 产品建议、使用咨询、信息不足或无效文本 | 4 | 包含 259692 分享咨询、259664 “不现象”、259658 “Y”等 |
已折叠 1 条普遍性网络问题(含-102/-101/-1002与中/英/俄/法/西/葡/土/阿/日多语言网络提示模板,如Проверьте телефонную сеть、Please check your mobile network);全量明细见同名 Markdown 知识库。
反馈接口返回total=70 / fetched=70 / complete=true / pages=2。上表按主问题唯一归类,合计 70 条;应用市场本窗口 0 条,故未形成跨渠道问题簇。259674的30000213在源码中定义为“用户手机号不匹配”,属于可解释输入错误,不作为密码重置功能故障。259710的附件仅显示账号正常自动登录和 1 台设备离线,没有共享记录、异地登录或异常控制指令,保留为账号安全待核查,不升级为确定入侵事件。
应用市场反馈
- 华为应用市场 0 条、应用宝 0 条,评论总数 0 条、差评 0 条、中评 0 条,未形成问题簇。
- App Store 采集失败:Apple 限流,且未配置 ASC Key;Google Play 采集失败:未配置代理。
- 荣耀应用市场、vivo 应用商店、OPPO 软件商店、小米应用商店均待导入,不能视为“没有反馈”。
- 原始数据:
/Users/topsee/.openclaw/workspace/knowledge/appstore-feedback/raw/2026-10-26.json。
心愿单与产品信号
- 心愿单接口返回
total=4 / fetched=4 / complete=true。 5523建议定时切换看守视角,属于可产品化的值守场景;5521希望设备离线后自动重连,与本窗口多语言网络反馈及设备在线状态问题相关;其余为无信息文本或联系方式,未进入雷达。
数据源状态与待补证
| 数据源 | 状态 | 说明 |
|---|---|---|
| 自有反馈接口 | ✅ 正常 | total=70 / fetched=70 / complete=true / pages=2 |
| 应用市场 | ⚠️ 部分失败 | 华为 0、应用宝 0;App Store 因限流及缺少 ASC Key 失败;Google Play 因未配置代理失败;荣耀、vivo、OPPO、小米待导入 |
| 神策 | ⚠️ 部分可用 | 地区、手机型号、连接类型与设备出图量查询成功;NvrMonitorFrameResult 缺少该样本的完整版本、国家等公共字段 |
| Logan | ⚠️ 部分可用 | 259689 附件 10,133 行可读,确认 HEVC 零宽高与解码异常;259684/259686 无独立 Logan |
| 友盟 | ⏭️ 未查 | 问题表现为加载无画面,不是崩溃、ANR、闪退或卡死 |
| TAPD | ⏭️ 未查 | 当前有直接 Logan 和源码链路,不以历史 Bug 搜索替代现场证据 |
| 代码仓 | ✅ 已核对 | Seetong-App-Android 当前 feature_v8.4.2、HEAD 311a8b8db,工作区干净 |
| 任务账本 | ✅ 已登记 | T-20261026-171007-2f49,P1 / captured |
待补证
- 补采同一用户在国内正常网络与日本失败网络下的成对 Logan,区分“零宽高参数首包”与跨境连接时延的先后关系。
- 确认故障摄像机
TD53E30的固件版本、主码流编码配置和 HEVC profile;现有日志已能确认字段为零宽高,但无法确认设备为何先返回空参数。 - 核验线上
8.4.1.6包与本仓库feature_v8.4.2源码的二进制映射,避免仅凭当前分支推断线上修复状态。 259710的账号安全疑虑需要账号安全负责人私下核实共享成员、登录设备和设备访问记录;未证实前不得对外描述为“摄像头已被控制”。
下一期 = 第257期 = 2026-10-27-H09.md(明天早上 09:00;窗口 2026-10-26 17:00:54~2026-10-27 09:00)