用途:在进入通用性能分析前,端到端排查 Kit 应用直播流性能问题,如卡顿、冻结、丢帧。核心做法是同时采集服务端 Kit 日志与浏览器端 WebRTC 证据,再围绕卡顿/冻结事件按时间戳关联分析。
主要能力:
- 采集 Kit 证据:以 StreamSDK 事件追踪和详细文件日志运行 Kit 应用;怀疑分辨率不匹配时使用 --no-window。Windows 命令:.\repo.bat launch -- --no-window --/exts/omni.kit.livestream.app/primaryStream/enableEventTracing=true --/log/channels/omni.kit.livestream.streamsdk=verbose --/log/fileLogLevel=verbose;Linux 命令:./repo.sh launch -- --no-window --/exts/omni.kit.livestream.app/primaryStream/enableEventTracing=true --/log/channels/omni.kit.livestream.streamsdk=verbose --/log/fileLogLevel=verbose。需要扩展上下文时还可启用 --/log/channels/omni.kit.livestream.webrtc=verbose 与 --/log/channels/omni.kit.livestream.app=verbose。
- 提取已知失败标记:使用 rg 搜索 copy fence 超时、视频流未连接、无法以某分辨率推流、NVST_R_BUSY、客户端断开等标记,并据此判断可能原因与下一步检查(如渲染/GPU 停顿、WebRTC 会话未建立、分辨率变更、编码器或网络背压等)。
- 采集浏览器证据:连接前打开 chrome://webrtc-internals,卡顿后用 Create dump 查看丢包、抖动、丢帧、解码时间、码率、冻结、NACK/PLI 及 ICE 候选对;对 ~/proj/ov-web-rtc 可用 npm run dev 运行开发客户端并捕获控制台日志,可添加 onStreamStats 回调输出 fps、rtd、avgDecodeTime、frameLoss、packetLoss、带宽、码率、分辨率、编解码器等。
- 后续性能分析:仅在日志表明涉及服务端时使用 Tracy,并附加相应 profiling 参数;采集机制参考 profiling 技能,trace 分析参考 nsys-analyze。StreamSDK 源码不可用时不要承诺其内部 zone,应将日志时间戳与周边 Kit zone(如 SharedFrameBuffer::waitForCopy、SharedFrameBuffer::streamBuffer、渲染 zone 与帧标记)关联。
报告结构:汇总 Kit 运行参数与日志路径、浏览器产物(控制台统计与 webrtc-internals dump)、卡顿事件时间线、匹配到的标记与瓶颈类别(渲染/GPU、会话/网络、分辨率/配置、StreamSDK/编码器背压、客户端解码),以及下一步动作。
限制:资料未提供具体收费、平台支持范围或效果保证;部分内部实现细节在源码不可用时无法确认。