我可以使用TokBox OTSubscriberKitNetworkStatsDelegate来计算带宽

时间:2016-03-04 18:54:56

标签: ios objective-c webrtc opentok tokbox

我正在使用TokBox构建视频会议应用。我想告诉用户流的表现如何。我注意到OTSubscriberKitNetworkStatsDelegate可以让您查看订阅者丢失了多少音频和视频数据包。不清楚的是,这表明您的连接或他们的健康状况。我假设我可以使用此委托来查看我自己的丢弃数据包(作为发布者和订阅者)。这是计算TokBox的某种带宽指示器的方法吗?

更新 很棒的答案也很快!令人印象深刻的OpenTok社区。只是为了完成这里,OTNetworkTest很棒,实际上使用OTSubscriberKitNetworkStatsDelegate来计算我怀疑的流的质量。唯一的问题是,它设计为在您开始会话之前运行。我需要一个可以作为现有会话的一部分运行的测试;所以,我将删除计算部分并创建一个使用您自己的订阅者数据的类的版本。感谢所有帮助人员。

2 个答案:

答案 0 :(得分:2)

实际上有几种方法。

天真的灵魂

粗略但简单地计算帧的大小并将其乘以帧速率(真实的,未指定的),之后加上声音的kbps。你应该得到非常准确的实际带宽图片。 对于帧速率计算,请阅读Dynamic frame rate controls

OpenTok方法(合法的)

我敢打赌,良好的用户体验解决方案不是要表明一切都不好,而是要调整流质量,仅在完全失败的情况下指示错误(就像Skype一样)。看看这个:

  

从我们的2.7.0移动SDK版本开始,您可以启动发布商   具有每个确定的视频分辨率和每秒帧数(fps)。   在使用API​​之前,您应该了解以下内容:

     
      
  1. 虽然高清视频起初听起来是个好主意,但从实际出发   从某种程度上说,您可能遇到设备CPU负载低至的问题   中程设备。您也可能受到用户的限制   可用带宽。最后,您的用户可能会收取数据费用   高。
  2.   
  3. 可在设备上使用。这些参数的实际经验值将根据具体设备而变化。你的选择   可以看作是你的分辨率和帧率的最大值   愿意发表。
  4.   
  5. 根据用户的数据包丢失,CPU利用率和网络带宽/比特率等各种参数自动调整。宁   我们建议您自己动态地尝试这样做   选择有意义的价值并允许OpenTok处理罚款   调谐。

  6.   
  7. 带宽,将您的发布商视频类型属性设置为“屏幕”,而不是默认的“相机”值。

  8.   

取自here

所以,这是你应该做的: 首先实施<OTSubscriberKitNetworkStatsDelegate>协议。它有一个叫做的方法  - (void)subscriber:(OTSubscriberKit *)subscriber videoNetworkStatsUpdated:(OTSubscriberKitVideoNetworkStats *)stats 您可以看到哪个对象传递给它OTSubscriberKitVideoNetworkStats。 接下来,您可以从此对象中提取三个属性:

  1. @property (readonly) uint64_t videoPacketsLost - 此订阅者丢失的估计视频数据包数量。
  2. @property (readonly) uint64_t videoPacketsReceived - 此订阅者收到的视频数据包数。
  3. @property (readonly) uint64_t videoBytesReceived - 此订阅者收到的视频字节数。
  4. @property (readonly) double timestamp - 收集这些统计数据时的时间戳(自Unix纪元以来的毫秒数)。
  5. 因此,请随意使用这些值并为您的应用实施最佳解决方案。

    此外,他们还发表了一篇专门讨论管理电话会议不同带宽的文章。 Check it out

    UPD:

    在我写答案时@JaideepShah提到了一个惊人的例子。仔细阅读this example的解释。有一个表格表明我在上面提到的正确值的正确分辨率。

答案 1 :(得分:1)

这将是您与TokBox平台/云的网络连接的健康。

https://github.com/opentok/opentok-network-test处的代码向您展示了如何计算音频和视频比特率,这可以用作指标。

您正在计算订阅者统计信息,而不是发布商统计信息。