网络质量:两个入口,别用错
onConnectionQualityChange 已经做过等级判定与抖动抑制,只在等级真的变了才回调。
直接拿 onQualityReport 的原始采样去驱动 UI,图标会不停闪。ConnectionQuality 有五档:unknown / excellent / good / poor / lost。
QualityEvaluation 同时给三个维度:
需要自己合并两个等级时用
worseQuality(a, b)。
UI 上区分上下行是有意义的:
uplink 差是你的问题(提示”你的网络不稳定”),
downlink 差可能是对端或中间链路的问题。只显示 overall 会让用户误判。原始采样字段
QualitySample(report.pub / report.sub 各一份):
活跃说话人
level 是音量级别,可以用来做”说话时头像发光”的强弱效果,而不只是二值状态。
这是服务端算出来的集合,不是客户端逐路分析音量 —— 所以在云端混音
(
RemoteAudioMixTrack)模式下依然可用,那种模式下客户端根本拿不到分路音频。Simulcast 层切换
大小流切换由服务端按带宽决定,客户端也可以主动切。TrackInfo.simulcasts 里有各层信息
(rid / width / height / fps / maxBitrate),variant 为 true 的是副层。
发布端配置多层用 VideoPublishOptions.simulcasts,副层可以直接用现成的
cameraSmallStreamPreset()。
影响弱网表现的两个发布参数
trackPriorityBitrateWeight(priority) 可以查某个优先级对应的权重值。
上游
@ohos/webrtc 目前没有暴露 networkPriority / bitratePriority,
所以做不到”弱网时优先保音频、先牺牲视频”这种跨轨道的全局策略。
TrackPriority 只在视频轨之间起作用。编解码能力核对(发版与排障必做)
videoCodecReport() 会把收发两个方向的能力连同 sdpFmtpLine 一起列出来,例如:
一个最小的质量指示器
poor 时提示用户,lost 时按断线处理(但注意 SDK 会自己重连,
真正断开要看 onDisconnected)。