WebRTC SDK iOS RTCIceCandidatePairStats
我正在尝试使用WebRTC iOS SDK记录RTCIceCandidatePairStats。我可以访问RTCLegacyStatsReport。是否有人知道如何在iOS上获取此信息:WebRTC SDK iOS RTCIceCandidatePairStats,ios,webrtc,Ios,Webrtc,我正在尝试使用WebRTC iOS SDK记录RTCIceCandidatePairStats。我可以访问RTCLegacyStatsReport。是否有人知道如何在iOS上获取此信息: 是的,就是这些。不知道为什么它们被称为RTCLeage,可能是因为RTC不再使用它们了 不管怎样,这些都是正确的统计数据。他们将为您提供所需的所有信息(比特率/帧大小/cpu%/等) 只是为了理智起见,使用 - (void)statsForTrack:(nullable RTCMediaStreamTrack
是的,就是这些。不知道为什么它们被称为RTCLeage,可能是因为RTC不再使用它们了 不管怎样,这些都是正确的统计数据。他们将为您提供所需的所有信息(比特率/帧大小/cpu%/等) 只是为了理智起见,使用
- (void)statsForTrack:(nullable RTCMediaStreamTrack *)mediaStreamTrack
statsOutputLevel:(RTCStatsOutputLevel)statsOutputLevel
completionHandler:(nullable void (^)(NSArray<RTCLegacyStatsReport *> *stats))completionHandler;
为了给我们提供准确的服务质量是的,就是这些。不知道为什么它们被称为RTCLeage,可能是因为RTC不再使用它们了
yea John was right and we use the same for WebRTC stats you can use standard or debug stats level based on your requirement.
\\ here connection is your - RTCPeerConnection
\\ track is your current video track
\\
\\ a small example of how we are using it
func updateStats() {
for stream in streams.values {
guard stream.videoTracks.first!.isEnabled else { continue }
let track = stream.videoTracks.first!
connection.stats(for: track, statsOutputLevel: RTCStatsOutputLevel.standard) { [weak self] reports in
guard let self = self else { return }
guard reports.count == 3 else { return }
guard reports[2].reportId.hasSuffix("_recv") else { return }
let data = reports[2].values
guard let trackId = data["googTrackId"] else { return }
self.streamStats[trackId]?.previousStats = nil
let stats = StreamStats(data: data, previousStats: self.streamStats[trackId])
self.delegate?.client(client: self, statsUpdated: stats, forTrackId: trackId)
self.streamStats[trackId] = stats
}
}
}
不管怎样,这些都是正确的统计数据。他们将为您提供所需的所有信息(比特率/帧大小/cpu%/等)
只是为了理智起见,使用
- (void)statsForTrack:(nullable RTCMediaStreamTrack *)mediaStreamTrack
statsOutputLevel:(RTCStatsOutputLevel)statsOutputLevel
completionHandler:(nullable void (^)(NSArray<RTCLegacyStatsReport *> *stats))completionHandler;
为我们提供准确的QOS,这是我们正在使用的功能。我被要求跟踪可用的BoingByrate。也许它在iOS上有不同的名称?这就是我们正在使用的函数。我被要求跟踪可用的BoingByrate。也许它在iOS上有不同的名字?
yea John was right and we use the same for WebRTC stats you can use standard or debug stats level based on your requirement.
\\ here connection is your - RTCPeerConnection
\\ track is your current video track
\\
\\ a small example of how we are using it
func updateStats() {
for stream in streams.values {
guard stream.videoTracks.first!.isEnabled else { continue }
let track = stream.videoTracks.first!
connection.stats(for: track, statsOutputLevel: RTCStatsOutputLevel.standard) { [weak self] reports in
guard let self = self else { return }
guard reports.count == 3 else { return }
guard reports[2].reportId.hasSuffix("_recv") else { return }
let data = reports[2].values
guard let trackId = data["googTrackId"] else { return }
self.streamStats[trackId]?.previousStats = nil
let stats = StreamStats(data: data, previousStats: self.streamStats[trackId])
self.delegate?.client(client: self, statsUpdated: stats, forTrackId: trackId)
self.streamStats[trackId] = stats
}
}
}