我们几个月来一直使用Tokbox平台,Javascript web-client以及Android phone client,其中会话和连接由Python server管理。虽然集成和启动在两端(客户端和服务器)都很顺利,但我们仍然遇到会话中音频和视频体验的问题。
会话总是routed,并且始终只在两个参与者之间,大量使用collaborative editor。
会话体验就像一个coin toss:我们永远不知道它会如何发展,而这正在成为一种商业威胁。
网络客户端:A / V资源
最常见的问题是获取音频和/或视频:在会话开始时,一个或另一个参与者可能在听到或看到另一个时遇到问题。分配新连接以建立新流并不能解决这个问题,也不会重新启动浏览器。
问题:检测可能的资源锁定的推荐方法是什么(例如,另一个应用程序是否会占用摄像头/麦克风)?
网络客户端:网络
带宽和数据包丢失是一项挑战,例如此inspector图表:
两个参与者的音频和视频都到处都是,虽然我们无法控制网络连接,但是网络客户端应该能够可靠地提供有用的信息。
问题:除了使用getStats()和实验navigator.connection
property进行持续连接监控之外,网络客户端如何监控网络连接?
预先通话测试
我们建议客户运行pre-call test并在我们的网站上实施它。但是,该测试的结果通常不反映会话中的连接。更糟糕的是,预呼叫测试可能会检测到低(无视频)带宽,而Skype工作正常。
问题:怎么会这样?
答案 0 :(得分:2)
我是TokBox开发团队的成员。我记得你报告了Python SDK的一个问题,谢谢你!
网络客户端:A / V资源
大多数采集问题都是由JS SDK检测到的,如果不是,那么我们真的很想听听它!请向TokBox支持报告复制步骤或受影响的会话ID(引用此StackOverflow问题):https://support.tokbox.com/hc/en-us/requests/new
大多数采集错误都显示为OT_HARDWARE_UNAVAILABLE
或OT_MEDIA_ERR_ABORTED
错误。您是否正在检测并向用户显示这些错误?还有一个特殊的OT_CHROME_MICROPHONE_ACQUISITION_ERROR
错误,这是因Chrome的已知问题,自Chrome 63以来一直在修复(请参阅https://bugs.chromium.org/p/webrtc/issues/detail?id=4799)。
网络客户端:网络
不幸的是,这是解决问题的难度之一。是的,Subscriber#getStats()
是我们可以使用的最佳工具,是本机RTCPeerConnection#getStats()
功能的包装器。遗憾的是,我们无法控制本机函数返回的值,如果您认为我们的SDK与RTCPeerConnection#getStats()
的值相比返回的值不正确,请告知我们!
确定问题是否可在所有浏览器中重现或仅在特定浏览器中重现是值得的。如果您有关于本地RTCPeerConnection#getStats()
功能不准确的详细数据,那么我们可以共同向浏览器供应商报告。
幸运的是我们刚刚发布了新的Publisher#getStats()功能,可以让你获得统计数据的发布者方面。这可以帮助您将连接问题的原因缩小到发布者或订阅者端。如果这有助于追踪这些问题,请告诉我们。
预先通话测试
同样,这些测试基于Subscriber#getStats()
,而RTCPeerConnection#getStats()
又基于Array
,其准确性不在我们手中,但我们喜欢任何复制步骤来修复错误在我们的客户端SDK中或向浏览器供应商报告错误。
只是要确认一下,当您说您在自己的网站中实施了预呼叫测试时,您是否使用了官方JavaScript网络测试模块? https://github.com/opentok/opentok-network-test-js这实际上是TokBox预调用测试所使用的内容。
答案 1 :(得分:0)
@Aiham,感谢您的回复,我一直在关注您链接到的新Publisher#getStats()(谢谢!),因此我们也可以为用户提供一些可见的网络状况会影响他们的通话质量(以及是谁造成的)。然而,即使我们处于routed会话,似乎发送的字节/数据包随着订户数量的增加而急剧增加。
我不希望Publisher#getStats()统计数据保持相当稳定,无论在路由会话中接收该流的订阅者数量是多少?我预计路由呼叫的性质意味着它被发送一次到OpenTok媒体服务器,统计数据将在那里结束。