你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
当调用 SDK 需要接收视频帧但没有传入的视频帧时,SDK 将检测到此问题并引发 createView 超时错误。
从 SDK 的角度来看,此错误是意料之外的。 此错误表示信号传输与媒体传输之间存在差异。
如何使用 SDK 进行检测
出现 create view timeout
问题时,createView
API 将引发错误。
错误 | 详细信息 |
---|---|
code | 408(请求超时) |
子代码 | 43203 |
message | 无法呈现流,超时 |
resultCategories | 意外 |
createView 超时失败的原因以及缓解此问题的方法
视频发送方的浏览器位于后台
当浏览器处于后台或用户锁定屏幕时,某些移动设备不会发送任何视频帧。
createView
API 检测到没有任何传入的视频帧,并将这种情况视为订阅失败,因此会引发 createView 超时错误。
由于目前 SDK 不支持通知接收方发送方的浏览器处于后台,因此无法提供详细信息。
应用程序可以实现自己的检测机制,并在发送方的浏览器返回到前台时通知通话中的参与者。
参与者可以再次订阅视频。
处理此 createView 超时错误的一个可行但不够巧妙的方法是持续重试调用 createView
API 直到成功。
视频发送方意外地退出了通话
某些用户可能会通过终止浏览器进程而不是挂断电话来结束通话。 在 40 秒超时结束之前,服务器不知道用户退出了通话。 参与者将保留在名单列表中,直到服务器在超时(40 秒)结束时将其删除。 如果其他参与者尝试订阅意外退出通话的用户的视频,由于未收到任何传入的视频帧,他们会收到错误。 没有提供进一步的详细信息。 即使没有从参与者那里收到回复,服务器也会将其保留在名单列表中,直到超时期限结束。
视频发送方存在网络问题
如果视频发送方在其他参与者订阅其视频时出现网络问题,则订阅可能会失败。 此错误对于视频接收方来说是意料之外的。 例如,如果发送方遇到临时网络断开连接,则其他参与者无法从发送方接收视频帧。
处理此 createView 超时错误的解决方法是,在发生此网络事件时,持续重试调用 createView
API,直到成功。
视频接收方存在网络问题
与发送方的网络问题类似,如果视频接收方存在网络问题,视频订阅可能会失败。
此问题可能是由于数据包丢失率高或临时网络连接错误导致的。
SDK 可以检测到网络连接断开,并触发 networkReconnect
UFD 事件。
但是,在 WebRTC 通话中,如果在大约 10-15 秒内没有来自对方的响应,则默认 STUN connectivity check
会触发断开连接事件。
这意味着,如果出现 networkReconnect
UFD,则接收方可能已经 15 秒没有收到数据包了。
如果接收方的连接存在网络问题,应用程序应在恢复 networkReconnect
UFD 后订阅视频。
对网络问题的控制可能有限。 因此,我们建议监视网络信息,并在用户界面显示有关信息。 还应考虑监视客户端媒体质量和网络状态,并根据需要对客户端进行必要的更改。 例如,当你注意到客户端的网络性能下降时,你可能会考虑自动关闭传入的视频流。