- RevueSDK
- InboundStatistics
Structure
InboundStatistics
收端統計(視訊 + 音訊)。
struct InboundStatisticsOverview
同一個型別服務音訊與視訊軌道。對該種軌道不適用的欄位是 nil、不是 0 視訊軌道的 audioFrameRate、audioLevel。讀到 0 就是量到 0。
Topics
Instance Properties
let audioFrameRate: Double?每秒收到的音訊段數(音訊版「fps」)。穩定 = 音訊流順;掉低/歸零 = 音訊丟/斷。視訊軌道為
nil。 來源:SDK 收端數 audio callback 次數 / 秒(自算;音訊無「幀」概念,數「段」)。let audioLevel: Float?收端音量。反映對方是否在出聲;與視訊配合分辨「音視訊都停=斷線 / 只視訊停=攝影機問題」。視訊軌道為
nil。 來源:SDK 收端 PCM 算 RMS(自算)。let fps: Double?收端實測幀率。掉低 = 對方送不順/連線不穩。音訊軌道為
nil。 來源:SDK 收端數幀 / 秒(自算)。let framesReceived: UInt64收到幀數(含 16×16 mute 哨兵)。反映「連線層有沒有在收東西」。 來源:VP8 在 handleVideoRawDataReceived 函式入口計數(哨兵判定在 L272、故入口計數天然含哨兵); ⚠️ H264 的哨兵判定在解碼後 sink(handleVideoEncodedDataReceived 內的解碼 closure), 故 H264 的 framesReceived 須在解碼 closure 內計數(放函式頂會漏算未解碼幀,且與哨兵含括語意不符)。
let framesRendered: UInt64真正送到繪圖的幀數(不含哨兵——哨兵已被 SDK mute 邏輯攔在繪圖前)。 診斷:framesReceived 續增但 framesRendered 停 = 對方 mute;兩者皆停 = 斷線。 來源:track.handleReceived(pixelBuffer:) 入口計數(RemoteParticipant.handleVideoFrameReceived)。統計不特判哨兵。
let freezeCount: UInt64凍結次數。畫面卡住不動的量化;抓「一頓一頓」比 fps 平均值更直接。 來源:SDK 自算——相鄰幀間隔 > 1 秒(凍結門檻)時 freezeCount++。
let height: Int?let totalFreezesDuration: Double總凍結時長(秒)。 來源:SDK 自算——凍結門檻超出時累計間隔進 duration。
let width: Int?收端解出的畫面寬/高。突變 16×16 = 對方 mute 哨兵;歸零/跳變 = 解碼流中斷。 音訊軌道為
nil;視訊軌道在第一幀解出前也是nil。 來源:複用 Track.dimensions(收端 RemoteVideoTrack 已在更新)。