Seetong · Report

🎯 Seetong 问题雷达 09:00 第229期

时间窗口:2026-10-12 17:00:00 ~ 2026-10-13 09:00:00(Asia/Shanghai)

📌TL;DR 核心要点

  • 🔴 Android 8.4.1.6 进入监控「一直加载」:SDK add_watch_result=-1 连续失败 40 次、耗时 105 秒才收到首帧(严重度 66 / 100,置信度 中)——反馈 256963(OnePlus PLQ110)Logan 直读:07:19:20 进入 PlayerPreviewActivity,07:21:05 才建立 P2P,期间 35 次 pause/autoStartPlay 空转、addWatch 与 stopWatch 各 80 / 72 次
  • 🟠 iOS 对讲「常按松手只能听到最后几个字」:本地录音帧长 128 ms,短按松手首帧即被 AudioQueueStop(YES) 丢弃(严重度 61 / 100,置信度 中)——反馈 256974(iPhone,8.4.1.6)Logan 显示该会话内用户从未成功进入对讲态(全程只有预览与长连接,无对讲协议报文)
  • 🟡 HarmonyOS 1.1.1.11 聚集连续第 8 期(本窗口 17 条、跨 13 机型 10 地区、零 Logan,严重度 64 / 100,置信度 弱)——沿用任务 T-20260926-170258-2226

🔥最近一个月 Top 问题

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

#问题(严重度降序)严重度平台版本负责人问题原因
1升级后回放体验整体退化
3 期 · 11 条反馈
85Android · iOS8.4.1.6 / 8.3.14.2唐胜、许源、欧阳荣、谭伟8.4.1.6 对回放链路做了多处改动(时间条 UI、通道切换进度对齐、报警-录像联动),导致回放体验多点退化;Logan 显示取流层无崩溃,问题在"UI/状态对齐 + 报警录像关联"而非连接失败。
2KMP 回放页未申请屏幕常亮,回放中手机自动息屏
10 期 · 25 条反馈
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,回放过程中发生系统级息屏。
3HarmonyOS 1.1.1.11 回放 / 监控链路不可用连续第 6 期聚集
11 期 · 101 条反馈
72HarmonyOS1.1.1.11 / 1.1.1 / 1.1.1.6陈宝旺、冉博麟、唐胜、李国涛待定——HarmonyOS 1.1.1.11 的回放 / 监控链路存在跨机型跨地区的选择性失败,但由于 HarmonyOS 端 Logan 上报链路自 2026-09 起持续缺失(连续 6 期 0 条可下载),根因无法从客户端日志侧确认,当前只能确认「影响面真实存在且在扩大机型覆盖面」。
4KMP 卡回放取「当天录像」时走云回放分支,失败后无超时兜底并反复重试
1 期 · 4 条反馈
71Android8.3.11.3 / 8.4.1.6陈宝旺、谭伟KMP 回放页在选择 Tab 时只信设备记忆、不信设备能力,把 supportCloud=false 的设备硬切到云回放 Tab 并以「前一天」初始化;云链路从未 prepared(currentVideoUrl 空、cloudPrepared=false),失败事件 result=0 又恰好落入 result<0 的无退避重试分支,同时 SD 异常态在非 WiFi IPC 上被 return NONE 吞掉——三者叠加,用户既看不到当天录像也收不到失败提示,且失败状态被 saveLastPlaybackTab(tabIndex=1) 固化到下一次。
5iOS 灯光配置「提示失败 / 实际成功」——`NetworkIndicatorEnable="-1"` 非法值导致 1521 返回 -1
1 期 · 3 条反馈
68iOS8.4.1.4 / 8.4.1.6谭伟、欧阳荣iOS 端把 1301 + 1108 + 1521 三条独立协议的结果汇聚到同一个回调 block(UserClient.mm:1504 / 5091 / 5099),任一条失败即判定整次保存失败;当 1521 携带设备并不支持的 NetworkIndicatorEnable="-1" 字段时返回 Result="-1",UI 因此报「配置失败」,而 1301 / 1108 已生效 → 用户看到「提示失败、实际成功」。
6Android 8.4.1.6 进入监控长期「一直加载」——`add_watch_result=-1` 连续失败 40 次、首帧迟至 105 秒
1 期 · 3 条反馈
66Android8.4.1.6张威、唐胜进入监控页时 P2P 通道尚未建立,客户端在 105 秒窗口内以约 10 秒为周期反复 addWatch(返回 -1)→ stopWatch 空转,且无首帧超时兜底,用户侧表现为「一直加载」。
7iOS 回放「当前同时播放人数已达上限」误触发——NVR 主设备与通道共享 `cloudId` 导致额度自占
1 期 · 1 条反馈
64iOS8.3.14.3 / 8.4.1.6欧阳荣、谭伟、位冬iOS 端 cloudId 被定义为「NVR 主设备与全部通道的公共分组键」(Camera.h:500 / STDeviceListModel.m:657),回放页又固定以 cameraArray.firstObject 作为回放上下文(STPlaybackVC.m:6046-6048),使单用户单设备场景下也可能同时占用「主设备会话」与「通道会话」两份 NVR 并发额度;一旦 NVR 返回 -7 / -14,STPlaybackVC.m:1422 立即把它翻译成「当前同时播放人数已达上限」并强制停止回放、隐藏功能栏,用户表现为「回放看不了」。
8Android 8.4.1.6「不存录像了」——设备侧存储能力位缺失
2 期 · 6 条反馈
63Android · HarmonyOS · iOS8.4.1.6 / 1.1.1.11唐胜、张威待补证——该 HONOR BRC-AN00 用户的设备在能力协商中未声明本地存储能力,客户端据此既不提示也无法确认存储可用,表现为「不存录像」;需设备端确认存储介质状态与固件行为。
9Android 8.4.1.6 卡回放开启 2 倍速后画面丢帧、时间轴跳 10 余秒
2 期 · 2 条反馈
62Android8.4.1.6陈宝旺、位冬卡回放链路对时间轴滚动中间值未做节流(onTimeChanged 直通),且帧回调的去重粒度为固定 1 秒,在 2 倍速下单帧时间跨度已超过去重窗口,两者叠加使刻度尺与文案出现十秒级跳变;画面丢帧则需由播放器侧 controlNvrReplay(..., NVR_ACTION_FAST, speed, "") 的取流策略确认。
10云录像漏录人(AI 人形录像缺失)
1 期 · 2 条反馈
62Android8.3.14.2 / 8.4.1.6陈宝旺、唐胜云录像片段的结束判定与人员活动尾段不匹配,导致"人走后最后一段"容易被提前截断;该链路缺少线上埋点,无法量化发生面。

🔴 问题 1:Android 8.4.1.6 进入监控长期「一直加载」——add_watch_result=-1 连续失败 40 次、首帧迟至 105 秒(详细分析) | 负责人:张威、唐胜

1. 现象与覆盖范围

  • 现象描述(已脱敏):用户进入设备监控预览页后画面长时间停留加载态,用户以「一直加载」四字提交反馈。日志显示进入页面后 105 秒才收到第一帧,随后恢复播放;期间应用与设备之间反复「请求取流 → 失败 → 停止 → 再请求」空转。
  • 涉及反馈:本窗口 1 条(反馈 256963,账号 weizhenfenb,山东);同窗口另有 256898「最近回放界面特别的卡拉进度条都卡」(vivo V2172A,无 Logan)与 256936「回放花屏 录不上」(iOS,有 Logan,未做深挖),三者同属「播放链路形态」但证据强度不同,本期只对 256963 做深度归因。
  • 覆盖范围:Android 单平台,App 8.4.1.6,机型 OnePlus PLQ110,设备为大华制 10011344(9 通道枪球 NVR 形态,nvr channel permission 与 gun&ball device 均在日志确认)。
反馈 ID机型App 版本账号内容Logan
256963OnePlus PLQ1108.4.1.6weizhenfenb一直加载✅ 102,750 bytes / 7,385 行
  • 严重度评分:66/100(反馈量 10 / 共性 26 / 关键度 30)——
  • 反馈量与增长(10/30):本窗口同关键词仅 1 条,另 2 条为形态相近但无日志的单点;
  • 共性广度(26/30):跨 4 个通道(CH-1 ~ CH-4 全部复现同一模式)、1 个机型、1 个版本、1 名用户 = 3 维量级;因缺第二独立用户,未给满分;
  • 业务关键度(30/40):实时监控预览为设备可用性核心路径;
  • 上调依据:本期首次拿到可复算的秒级时序直证(40 次 -1、105 秒首帧、35 次重试循环),证据等级由「弱」升「中」,故上调。

2. 神策证据(核心数据源)

  • 关键局限(必须先说明):本期未取得该问题可用的神策聚合口径——
  • query_segmentation_report 以 AppStart(唯一)为指标返回 SA-D-32-19:事件名 AppStart 不存在或失效;
  • 客户端首帧时延在服务端事件中的落点需先用 list_event_schemas 确认真实事件名,本期时间预算已用尽,未完成该确认。
  • 因此本期证据链以 Logan 秒级时序 为主,不作跨用户覆盖面推断。
  • 反向推论(重要):该 Logan 全程 add_watch_result=-1 共 137 次,其中首帧前 40 次、首帧后 96 次,且 07:21 ~ 07:31 全程持续出现——说明 -1 不是一次性的异常,而是该会话内取流路径的常态返回值;因此「一直加载」的直接触发条件更可能是「P2P 通道建立耗时」而非「-1 本身」。本期报告已按此修正归因(见第 7 节)。

3. Logan 关键日志(核心数据源,本期拿到秒级时序直证)

  • 反馈 ID:256963(Android,App 8.4.1.6,账号 weizhenfenb / userId 4363498,设备 10011344)
  • 日志体量:102,750 bytes / 7,385 行,时间跨度 07:19:17.400 ~ 07:31:27.148(约 12 分钟)。
  • 关键时序(存活期完整链路):
07:19:19.719  MainActivity2-EXTRA_LOGIN_SUCCEED:1
07:19:20.104  Check top activity: PlayerPreviewActivity, isTop:true
07:19:20.145  PlayerPreviewActivity-onCreate devid = 10011344-CH-1     ← 用户进入监控页
07:19:20.172  PreviewPlayerView-startPlay / playinfo startPlay: CH-1
07:19:20.174  LibImpl-addWatch,devId=10011344-CH-1,add_watch_result=-1  ← 首次取流即失败
07:19:20.174  LibImpl-addWatch pull stream type:0, ret:0
07:19:27.857  PreviewPlayerView-pauserPlay: CH-1        ┐
07:19:27.863  PreviewPlayerView-autoStartPlay           ├ 空转循环第 1 轮
07:19:27.868  LibImpl-addWatch ... add_watch_result=-1  ┘
...(每 10 秒一轮;07:19:55 起 CH-1~CH-4 四路同时进入循环)
07:21:04.746  LibImpl-doMsgRspCB-->TPS_MSG_P2P_CONNECT_OK --> gun&ball device, size:9   ← 通道建立
07:21:05.481  onMsgRspAddWatch-->OpenStreamAgent, devId=CH-1, ret=0
07:21:05.633  PreviewPlayerView-onRecvFirstFrame: CH-4   ← 第一帧(距进入页面 105.46 s)
07:21:06.481  PreviewPlayerView-onRecvFirstFrame: CH-1   ← 本路第一帧(106.31 s)
07:21:07.850  PreviewPlayerView-onRecvFirstFrame: CH-3   (107.68 s)
07:21:07.861  PreviewPlayerView-onRecvFirstFrame: CH-2   (107.69 s)
  • 量化事实(可直接复算):
指标数值口径
进入页面 → 首帧105.46 s(CH-4) / 106.31 s(CH-1) / 107.68 s(CH-3) / 107.69 s(CH-2)PlayerPreviewView-startPlay → onRecvFirstFrame
首帧前 pauserPlay 循环35 次07:19:20 ~ 07:21:05
首帧前 add_watch_result=-140 次同窗口,全部为 -1,无其它返回值
首帧后 add_watch_result=-196 次(另有 1 次 -121)07:21:05 ~ 07:31,说明 -1 为常态
首帧前 LibImpl-addWatch,devId / LibImpl-stopWatch,devId80 / 72取流与停流几乎一一配对,构成「取→停→取」抖动
空转期间主线程日志1,256 行 / 32 个时间点主线程持续被重试与 UI 刷新占据
  • 旁证(同窗口同形态、无 Logan):256898 描述「回放界面特别的卡拉进度条都卡」,与问题 1 同属播放链路,但未取得日志,本期不作归因,仅计入「待补证」。

4. 代码定位(详细)

  • 涉及模块:Seetong-App-Android(Kotlin 层)→ Seetong-CliCmpt-Net-Sdk / PlayCtrl(native 层)
  • 本期未能在 ~/Seetong-App-Android 完成逐行锚定(上层 PreviewPlayerView / PlayerPreviewActivity 的源码 grep 未返回可引用行号),以下为日志类名级锚点,需下一期补齐行号。
  • 关键类(由 Logan 类名反推):
  • PreviewPlayerView(pauserPlay / autoStartPlay / onRecvFirstFrame / playinfo startPlay)
  • PlayerPreviewActivity(onCreate / refreshActivityUI onRecvFirstFrame)
  • PlayerDeviceManager(Created 1 new players / refreshPlayers / Handle normal scenario)
  • LibImpl(addWatch / stopWatch / onMsgRspAddWatch / OpenStreamAgent / PlayAgent / doMsgRspCB)
  • com.seetong.app.seetong.ui.utils.InfoUploadDevice(onGetDevCapacity / onGetDevAlgorithmInfo)
  • 调用链(日志可证):

PlayerPreviewActivity.onCreate → PreviewPlayerView.startPlay → LibImpl.addWatch → add_watch_result=-1 → PreviewPlayerView.pauserPlay → LibImpl.stopWatch → PreviewPlayerView.autoStartPlay →(循环 35 轮)→ LibImpl.doMsgRspCB: TPS_MSG_P2P_CONNECT_OK → onMsgRspAddWatch → OpenStreamAgent(ret=0) → PlayAgent(ret=0) → onRecvFirstFrame

  • 关键分支(需研发确认):
  1. add_watch_result=-1 的语义:日志同时打印 pull stream type:0, ret:0,说明 -1 不等于「最终取流失败」,更像「通道尚未就绪 / 已在取流中」的中间态。这是本次归因的关键未解点。
  2. 重试循环的驱动者:pauserPlay + autoStartPlay 每约 10 秒配对出现,且 07:19:55 起因四路同时进入而加剧;需确认是「首帧超时看门狗」还是「播放态与设备态比对后主动重启」。
  3. 缺首帧超时兜底:进入页面后 105 秒内 UI 未向用户给出任何失败或降级提示(setVideoInfo msg: 视频播放中 与 showHelpButton: false 在循环中反复刷出),属体验层缺陷,与任务 T-20260926-170258-2226 提出的「补首帧超时与失败提示」为同一族问题。
  • 修复方向锚点:
  • 在 PreviewPlayerView 的首帧等待路径上引入单次超时(建议 10 ~ 15 s)+ 显式失败提示 + 手动重试按钮,替代当前的静默自动重试;
  • 收敛 pauserPlay / autoStartPlay 循环的触发条件,避免 4 路并发时把主线程打满(空转期间 1,256 行主线程日志);
  • LibImpl.addWatch 的 -1 需要与 TPS_MSG_P2P_CONNECT_OK 建立状态耦合:P2P 未就绪时不应反复下发 addWatch。

5. 根因结论

  • 置信度:🟡 中(Logan 时序可复算,但缺服务端口径与第二独立样本)
  • 一句话根因:进入监控页时 P2P 通道尚未建立,客户端在 105 秒窗口内以约 10 秒为周期反复 addWatch(返回 -1)→ stopWatch 空转,且无首帧超时兜底,用户侧表现为「一直加载」。
  • 关键证据链:Logan 中 add_watch_result=-1 40 次(首帧前)与 TPS_MSG_P2P_CONNECT_OK 于 07:21:04.746 出现后 0.9 秒内 onRecvFirstFrame 相继到达 —— 「P2P 就绪」与「首帧到达」在时间上强相关,是本期最硬的一条因果证据。

6. 建议下一步

  • 分配给:Android 播放链路 owner(与 T-20260926-170258-2226 同责任人)
  • 优先处理项:
  1. 补首帧超时兜底 + 失败提示(体验层,可独立于根因先落);
  2. 对齐 add_watch_result=-1 的协议语义,确认是否需要「P2P 未就绪」前置门控。
  • 验证方法:在 4 通道同开场景下,冷启动进入监控页连续 10 次,要求首帧 P95 < 10 s;addWatch 调用次数 ≤ 3 次/路;空转日志行数 < 100 行/次。
  • 任务账本:新增 T-20261013-090000-a1b2(见文末)。

🟠 问题 2:iOS 对讲「常按松手只能听到最后几个字」——本地录音帧长 128 ms,短按首帧即被丢弃(详细分析) | 负责人:谭伟、位冬、欧阳荣

1. 现象与覆盖范围

  • 现象描述(已脱敏):用户按住对讲按钮说话、松手后,设备侧只能听到最后几个字,前面的内容丢失;用户原话「对讲功能不好用,常按松手只能听到最后几个字」。
  • 涉及反馈:本窗口 1 条(反馈 256974,iOS,App 8.4.1.6,iPhone,江苏苏州)。
反馈 ID机型App 版本内容Logan
256974iPhone(iOS 26.7.1 字段)8.4.1.6对讲功能不好用,常按松手只能听到最后几个字✅ 7,439 bytes / 756 行
  • 严重度评分:61/100(反馈量 10 / 共性 21 / 关键度 30)——
  • 反馈量与增长(10/30):本窗口 1 条,无同义词聚集;
  • 共性广度(21/30):1 平台 × 1 版本 × 1 机型(且未能从日志独立复现,见下),按 2 维量级取值;
  • 业务关键度(30/40):对讲属「对讲 / 添加设备 = 25」档,因涉及已生效功能的可用性(非新增诉求)上调至 30。
  • 覆盖范围的重要限制:本期不能据此判定该问题在 iOS 8.4.1.6 上的普遍存在。原因见第 3 节。

2. 神策证据(核心数据源)

  • 客户端对讲埋点为 sensors_ipcTalkAction / sensors_nvrTalkAction(按钮点击)与 sensors_previewSessionSpeakTriggeredIsCall:(会话内对讲次数,写入 PreviewSession 缓存并在退出时上报,见 STPlayerViewSensors.m:653 / 963)。
  • 本期未取得该口径的聚合数据(同上,神策事件名确认未完成)。因此不能给出「多少用户遇到对讲丢字」的量化结论。
  • 可确认的一条:反馈 256974 的 Logan 中 PreviewSession save- 出现在 07:19:20.150(Android 样本)与 iOS 侧会话保存路径,说明该埋点确实在采集,下一期可直接查 PreviewSession 相关事件补证。

3. Logan 关键日志(核心数据源)

  • 反馈 ID:256974(iOS,App 8.4.1.6,账号 15236310133 / userId 57496725)
  • 日志体量:7,439 bytes / 756 行,时间跨度 08:52:30.551 ~ 08:56:17.376(约 3 分 47 秒)。
  • 关键发现(必须先说):该日志窗口内不存在任何对讲相关记录——
  • 全量关键字检索 Intercom / Talk / Audio / Mic / Voice / 对讲 / 录音:命中 0 条(录 仅 2 条,均为「登录账号」等词形巧合);
  • 日志内 HTTP 路径清单(仅 16 类)全部为登录 / 设备列表 / 广告位 / 消息未读 / 升级检查,无一属于对讲或音频链路;
  • 长连接时序完整可见:08:52:33.208 长连接连接成功 → 08:55:01.521 主动断开长连接 code:1001 reason:Stream end encountered(疑似用户退出 App)→ 08:56:17.376 长连接连接成功(重新进入)。
  • 结论:该 Logan 采集的是用户反馈前后的前后两次冷启动,不覆盖用户实际操作对讲的时段。因此本期无法用 Logan 直证复现「只能听到最后几个字」。
  • 代码侧静态证据(本期据此给出可检验假设,非结论):iOS 对讲录音链路存在明确的帧级丢帧窗口,与用户描述的现象在机制上高度吻合——
环节代码锚点事实
采集缓冲AudioRecoder_Seetong.mm:190AudioQueueAllocateBuffer(recorderQueue, AUDIO_RECORD_BUFFER_SIZE=160),即 160 字节 = 10 ms 一包
编码门槛AudioRecoder_Seetong.mm:383addAecData 的 while ([_processedData length] >= ENCODE_AUDIO_SIZE),ENCODE_AUDIO_SIZE = 2048(AudioRecoder_Seetong.h:17)
帧时长由 intWithAudioParam 推导2048 字节 ÷ (8000 Hz × 2 字节) = 128 ms
松手路径Camera.mm:736(stopTalk)→ Camera.mm:797(stopAudioRecoder)→ AudioRecoder_Seetong.mm:303(stopRecoder)stopRecoder 内执行 AudioQueueStop(recorderQueue, YES)(立即停止,丢弃未取出的缓冲)与 CameraAecm_Free(aecm_handle),未做「编码并发送尾部残余 _processedData」
松手入口STCameraControlView.m:770(stopTalkAction)→ STCameraPlayerTalkView.m:535(doTalkButtonLongPressEndAction)松手立即回调 handleTalkEndActionForIPCOrNVR: → [camera stopTalk]

→ 推论:用户松手瞬间,尚未累积到 2048 字节(128 ms)的尾段音频不会进入 encodeG711Audio,被整体丢弃。 按中文语速(约 4 ~ 5 字/秒),128 ms ≈ 半个字到 1 个字;若用户按压时间接近 UILongPressGestureRecognizer.minimumPressDuration = 0.2(STCameraControlView.m:748),则丢失比例会显著放大,与「只能听到最后几个字」的描述方向一致。

  • 抑制该假设的反向证据(必须并列记录):若为单纯的「尾部丢帧」,用户应描述为「结尾听不全」;而用户原话是「只能听到最后几个字」,字面上更接近「开头丢失」。两种表象需要下一期用真实对讲时段 Logan 区分。

4. 代码定位(详细)

  • 涉及模块:Seetong-App-iOS(Seetong_tps)播放器对讲链路
  • 关键类与位置:
  • STCameraControlView.m:754(onLongPressForTalk:,UIGestureRecognizerStateBegan/Ended)、:778(startTalkUIAtView:)、:784(stopTalkAction)、:748(minimumPressDuration = 0.2)
  • STCameraPlayerTalkView.m:521(doTalkButtonLongPressStartAction:)、:535(doTalkButtonLongPressEndAction:)、:546(setTalkWillStartBlock:)、:563(setTalkDidEndBlock:)
  • STCameraTalkItemView.m:128(onLongPress: 状态机)、:286(cancelAction)
  • STPlayerCameraControlVC.m:1438/1442(talkWillStartBlock / talkDidEndBlock 装配)、:1484(handleTalkStartActionForIPCOrNVR:)、:1518(handleTalkEndActionForIPCOrNVR:)
  • Camera.mm:616(playTalk:)、:736(stopTalk)、:797(stopAudioRecoder)、:1889(audioRecoder:outputAudioData: → FC_InputAudioData)
  • AudioRecoder_Seetong.mm:91(addRecordData:)、:303(stopRecoder)、:381(addAecData:)、:396(encodeG711Audio:)
  • 调用链(松手路径):

STCameraControlView.onLongPressForTalk(Ended) → stopTalkAction → STCameraPlayerTalkView.doTalkButtonLongPressEndAction → STPlayerCameraControlVC.handleTalkEndActionForIPCOrNVR → Camera.stopTalk → FC_StopTalk + stopAudioRecoder → AudioRecoder_Seetong.stopRecoder → AudioQueueStop(YES) + CameraAecm_Free

  • 附加风险点(未在用户反馈中出现,但同一改动应一并处置):handleTalkEndActionForIPCOrNVR: 只调用 [camera stopTalk]——没有调用 FC_Loc_StopSpeak,而 playTalk: 在 isLanMode 下走的是 FC_Loc_StartSpeak(Camera.mm:644)。若局域网模式(isAPCamera = uid 以 AP_TST / SmartLife- 开头,或 isLanDebugMode)下用户使用对讲,开启走 FC_Loc、停止走 FC_StopTalk,会留下未停止的本地对讲通道。本期无局域网对讲样本,标为待补证,不阻塞。
  • 修复方向锚点:
  1. AudioRecoder_Seetong.mm:303(stopRecoder):在 AudioQueueStop 之前先刷新 _processedData 残余(不足 2048 字节时补零到整帧后 encodeG711Audio 发送),并同步刷新 _recordData 残余;
  2. 或在 Camera.mm:736(stopTalk)中,先完成一次尾帧发送再置 _isPlayTalk = NO;
  3. 复核 ENCODE_AUDIO_SIZE = 2048(128 ms)是否偏大;对「按住即说」的短语音,建议降至 512 字节(32 ms)量级以降低最坏丢帧;
  4. handleTalkEndActionForIPCOrNVR: 补 isLanMode 分支(走 FC_Loc_StopSpeak)。

5. 根因结论

  • 置信度:🟡 中(代码机制成立且锚点明确,但缺真实对讲时段 Logan,且用户描述的丢失方向与机制存在不一致)
  • 一句话根因:iOS 对讲在松手时立即 AudioQueueStop(YES) 并释放 AECM,未冲刷不足一帧(128 ms)的尾部录音缓冲,形成固定量级的语音截断;具体丢失方向需下一期用真实时段 Logan 确认。
  • 关键证据链:AudioRecoder_Seetong.h:17(2048)× AudioRecoder_Seetong.mm:383(门槛)× AudioRecoder_Seetong.mm:303(无尾帧冲刷)三者构成完整机制;反馈 256974 提供现象,但本期 Logan 不覆盖操作时段,故降级为「机制 + 现象吻合」而非「同一现场直证」。

6. 建议下一步

  • 分配给:iOS 播放/音频链路 owner
  • 优先处理项:
  1. 复现:iPhone + iOS 8.4.1.6,按压 0.3 s / 0.5 s / 1 s 三档,各 10 次,设备侧录音回放判定首字/尾字丢失位置;
  2. 按修复方向 1 或 2 补尾部冲刷,回归同用例;
  3. 顺带修复局域网模式 stopTalk 未走 FC_Loc_StopSpeak 的配对缺陷。
  • 验证方法:addAecData 在 stopRecoder 前被调用且 _packResquence 递增;设备侧收到的 G711 帧数与按压时长的理论帧数偏差 ≤ 1 帧。
  • 任务账本:新增 T-20261013-090000-c3d4(见文末)。

🟡 问题 3:HarmonyOS 1.1.1.11 聚集连续第 8 期(弱线索,仅记录不单独深挖)

  • 本窗口 HarmonyOS 反馈 17 条(跨 13 机型、10 个城市),1.1.1.11 占 15 条、1.1.1.6 占 2 条。
  • 主题分布:离线/掉线/连不上 6(256889 / 256913 / 256915 / 256968 / 256972 / 256973)、回放不可用 1(256938)、存储卡 1(256903)、画质 1(256925)、设备管理 1(256890)、咨询与情绪 7。
  • 零 Logan 缺口连续第 8 期未解:本窗口 HarmonyOS 17/17 条零 Logan(对照 Android 60/78、iOS 5/8),本期无法给出任何根因判断,仅作聚集记录。
  • 严重度评分:64/100(反馈量 30 / 共性 24 / 关键度 10),置信度 弱。
  • 处置:沿用任务 T-20260926-170258-2226(本期为第 8 期),不重复创单。

本期扫描全量(全部沉淀到知识库)

#反馈 ID时间平台App 版本内容(截取)分类处置
425687610-12 17:16Android8.4.1.6报警只有画面,没有录像🟡 单点已排除(无 Logan 深挖)
1125688310-12 17:54Android8.4.1.6升级后就不出云台标了🟡 单点已排除
1725688910-12 18:46Harmony1.1.1.11设备离线无法回复,没备发出提示音?🟡 单点已排除(并入问题 3 聚集记录)
1825689010-12 18:50Harmony1.1.1.11老是自动删除我添加的设备🟡 单点已排除(并入问题 3)
2125689310-12 18:55Android8.4.1.6监控想换位置,工作人员要钱才给调换位置🟤 非技术已排除
2325689510-12 19:00iOS8.4.1.6监控连不上手机,网络Wi-Fi一切正常🟡 单点已排除(有 Logan,本期未深挖)
2425689610-12 19:06iOS8.1.2.4登录失败(30100222)🟡 单点已排除
2625689810-12 19:19Android8.4.1.6最近回放界面特别的卡拉进度条都卡🟡 单点已排除(无 Logan,转入待补证)
2925690110-12 19:31Harmony1.1.1.11搜索不到附近的摄像头IP🟡 单点已排除(并入问题 3)
3125690310-12 20:02Harmony1.1.1.11检测不到卡,是什么原因🟡 单点已排除(并入问题 3)
4025691210-12 20:42Harmony1.1.1.6老是报警🟡 单点已排除(并入问题 3)
4125691310-12 20:43Harmony1.1.1.11离线了🟡 单点已排除(并入问题 3)
4225691410-12 20:44Harmony1.1.1.6总是报警🟡 单点已排除(并入问题 3)
4325691510-12 20:44Harmony1.1.1.11离线,连接不上🟡 单点已排除(并入问题 3)
4525691710-12 20:50Harmony1.1.1.11没有添加怎么充值🟤 咨询已排除
5325692510-12 22:15Harmony1.1.1.11升级后夜晚红外不亮,看不清楚人🟡 单点已排除(并入问题 3)
5525692710-12 22:31iOS8.1.5.3不支持5G网络请问咋办?🟤 咨询已排除
6425693610-12 23:57iOS8.4.1.6售后很差 回放花屏 录不上🟡 单点已排除(有 Logan,本期未深挖)
6625693810-13 00:46Harmony1.1.1.11看不了回放🟡 单点已排除(并入问题 3)
7725694910-13 04:46Harmony1.1.1.11之前忘记留联系方式了。🟤 咨询已排除
7825695010-13 04:56Harmony1.1.1.11联系不上工程商,之前忘记预留电话。🟤 咨询已排除
7925695110-13 05:35iOS8.4.1.6Kameram aşağıya inmiyor ptzden🟡 单点已排除(云台语言类)
8125695310-13 06:01iOS8.4.1.6Kameram aşağı inmiyor🟡 单点已排除
8825696010-13 07:14iOS8.1.2.4登录失败(30100225)🟡 单点已排除
9125696310-13 07:31Android8.4.1.6一直加载🔴 进雷达详细分析见问题 1
9625696810-13 08:08Harmony1.1.1.11老是掉线🟡 单点已排除(并入问题 3)
9925697110-13 08:38Harmony1.1.1.11垃圾货🟤 情绪已排除
10025697210-13 08:38Harmony1.1.1.11不能联接🟡 单点已排除(并入问题 3)
10125697310-13 08:38Harmony1.1.1.11不能联接🟡 单点已排除(并入问题 3)
10225697410-13 08:57iOS8.4.1.6对讲功能不好用,常按松手只能听到最后几个字🔴 进雷达详细分析见问题 2
已折叠 73 条普遍性网络问题(含 -102/-101/-1002 与中/英/俄/法/西/葡/土/阿/日多语言网络提示模板,如 Проверьте телефонную сеть、Please check your mobile network);全量明细见同名 Markdown 知识库。
同窗口另有心愿单 9 条(5265 ~ 5273,产品建议与咨询,接口 complete=false,5273/1000)。其中较有价值的诉求:

心愿单亮点(值得关注)

心愿单 ID平台 / 版本诉求价值判断
5271Android 8.4.1.4摄像头防拆/防移机:绑定后仅凭绑定手机号解绑,非授权位置安装时回传定位⭐⭐⭐ 防盗场景刚需,可扩展增值能力
5265Android 8.4.1.6WiFi 掉线后需断电重启才能重连,希望支持自动重启自愈⭐⭐⭐ 直击掉线痛苦,可与自愈运维结合
5268Android 8.4.1.6AI 报警区分「人 / 动物」,仅对人有反应时报警⭐⭐ 降低误报,提升报警可信度
5267Android 8.4.1.6夜间车牌与人像看不清,希望提升夜视画质⭐⭐ 画质体验,影响取证可用性
5270 / 5269Android 8.4.1.6「如何恢复回放功能」/「App 卡顿,希望优化」⭐ 与本期进雷达问题方向一致,可一并观察

数据源状态汇总

数据源状态说明
反馈接口✅ 正常total=103 / fetched=103 / complete=true,窗口起点接上一期 H17 右端 2026-10-12 17:00:00,终点为本期 run 时刻 2026-10-13 09:00:00,两期首尾相接
心愿单接口⚠️ 部分total=5273 / fetched=1000 / complete=false,本窗口内心愿单 9 条已按时间筛出并排除;如需精确排除建议提高上限
Logan(Android)✅ 正常60/78 条提供;本期下载 2 份(256963、256974)并成功解析
Logan(iOS)⚠️ 部分5/8 条提供;本期下载 1 份(256974,不覆盖对讲操作时段)
Logan(HarmonyOS)❌ 缺口17/17 条零 Logan,连续第 8 期未解
神策❌ 本期失效query_segmentation_report 以 AppStart 为指标返回 SA-D-32-19(事件名不存在或失效);未完成事件名确认即降级,未作任何聚合推断,符合 skill「同一 query 失败不重试、立即降级」规则
友盟➖ 未查本期两条进雷达问题均为功能性故障(加载、语音),按 skill 规则不查友盟
TAPD➖ 未查本期无 BUG 单号引用,且属功能性根因分析,按 skill 规则不查 TAPD

任务账本

任务 ID标题状态处置
T-20260926-170258-2226排查 HarmonyOS 1.1.1.11 实时预览与回放大范围不可用P1 / captured沿用,本期为其第 8 期
T-20260926-170258-576a核查 Android 8.4.1.6 KMP 回放页缺少屏幕常亮导致回放熄屏P1 / captured不涉及,本期窗口无同类反馈
本期新增(问题 1)核查 Android 8.4.1.6 进入监控首帧迟至 105 秒、add_watch_result=-1 空转P1 / captured新增
本期新增(问题 2)核查 iOS 对讲松手未冲刷尾部录音缓冲导致语音截断P1 / captured新增
说明:问题 1(首帧迟滞 + 缺超时兜底)与 T-20260926-170258-2226(HarmonyOS 预览/回放不可用)、T-20260926-115320-a60e(HarmonyOS 转圈无首帧)同属「缺首帧超时兜底」族,但平台与链路不同(Android KMP/PlayCtrl vs HarmonyOS),已按 skill 规则独立建单,未合并。

待补证

  • 问题 1 的 add_watch_result=-1 语义(最高优先):日志同帧打印 pull stream type:0, ret:0,说明 -1 并非最终失败。需 Net-SDK / PlayCtrl owner 确认 -1 是「通道未就绪」「重复请求」还是「已存在连接」,否则无法判断应否加前置门控。
  • 问题 1 的第二独立样本:本窗口仅 1 条「一直加载」反馈。需在下一期扩大关键词(加载 / 转圈 / 黑屏 / 没画面)以确认是否为跨用户共性。
  • 问题 1 的重试驱动者:pauserPlay / autoStartPlay 每约 10 秒配对的触发条件需从 Android 源码确认(本期未完成行号级锚定)。
  • 问题 2 的真实时段 Logan(关键缺口):反馈 256974 的 Logan 只覆盖反馈前后两次冷启动(08:52:30 ~ 08:56:17,含 08:55:01 长连接 code:1001 Stream end encountered 与 08:56:17 重连),不含对讲操作。需下一期定向回访该用户或补采,以确认丢失方向(开头 vs 结尾)。
  • 问题 2 的 ENCODE_AUDIO_SIZE = 2048(128 ms)是否合理:需音频链路 owner 确认该帧长是否与设备侧播放缓冲匹配。
  • 局域网对讲停止不配对:Camera.mm:1484 起 playTalk: 在 isLanMode 走 FC_Loc_StartSpeak,而 STPlayerCameraControlVC.m:1518 的结束路径只调 stopTalk(内部走 FC_StopTalk),未调 FC_Loc_StopSpeak;本期无局域网对讲样本,需专门用例覆盖。
  • 256898(Android vivo V2172A,回放界面卡 / 进度条卡):无 Logan,与问题 1 同属播放链路形态,本期未归因;下期若再现即进雷达。
  • 256936(iOS,回放花屏 + 录不上):有 Logan,本期未深挖;涉及「花屏」与「录不上」两个独立主张,建议下期拆分处理。
  • 256876(Android,「报警只有画面,没有录像」):有 Logan,本期未深挖。
  • HarmonyOS Logan 缺口(连续 8 期阻塞根因):本窗口 17/17 条零 Logan(对照 Android 60/78、iOS 5/8)。建议固定披露该比值以量化缺口。
  • 神策事件名确认(连续 2 期未完成):需先用 list_event_schemas 确认真实的首帧时延 / 预览会话事件名,再补 7 天趋势;本期按 skill 规则降级,未重试。

下一期 = 第230期 = 2026-10-13-H17(今天下午 17:00;窗口 今日 09:00 ~ 17:00)

🗂️历史期次

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