常见问题

产品 / 插件
平台 / 框架

如何处理拉流常见问题?

产品 / 插件:实时音视频 / 实时语音 / 畅直播

平台 / 框架:iOS / Android / Windows

更新时间:2021-09-26 18:17


双方连麦成功后,如果一方由于关机退出程序(或者杀进程)停止推流,拉流方需多久能收到流删除消息?

由于推流端异常退出,无法将此状态同步到服务器,服务器需要通过超时判断该流已停止。超时后(约 100s),如果 100s 内, 没有重启 app 并加入原房间,则服务端会下发流删除信息,拉流端将通过 “onRoomStreamUpdate” 回调收到对应的流删除通知,此时业务上应停止拉相应的流。

如何处理使用 OBS 推流,SDK 拉流时出现画面卡顿或音画不同步的问题?

问题描述

使用 OBS 推流,SDK 拉流时,出现了画面卡顿或音画不同步的现象。

问题原因

使用 OBS 推流时,推了带 B 帧的流。带 B 帧的流在直播场景下延迟很大,默认情况下,ZEGO Express SDK 不支持解码带 B 帧的流,所以出现了画面卡顿或音画不同步的现象。

解决方案

以下是 ZEGO 推荐的 3 种解决方案。

  1. 设置 OBS 不推 B 帧

在 OBS 中设置不推 B 帧:输出模式选 “高级 > Profile”, 选择 baseline 或者 SDK 用软解拉流。

若 OBS 为经典版本,在高级中设置 B 帧:“高级 > 配置文件”,选择 “baseline”。

如果在 OBS 中设置了不推 B 帧,拉流出现了一会儿模糊一会儿清晰的情况,请参考方案 3 进行处理。

  1. 设置 SDK 支持拉 B 帧

在 Express 拉流前调用接口 enableCheckPoc(false),requireHardwareDecoder(false) 则可以拉 B 帧的视频流。

  1. 出现一会儿模糊一会儿清晰的情况,可能是因为画面复杂码率编不过来导致的,有以下 3 种解决方式:
    • 提高码率
    • 提高 CPU 的使用率:输出模式选 “高级 > cpu使用预设”,比如改为 medium。使用越多,画面质量越好。
    • OBS 中设置 profile 为 main,同时拉流端要调整为支持 B 帧。

在需频繁切换房间的场景,拉流端画面渲染的速度比较慢,如何进行优化?

  1. 客户业务侧自行管理流 ID,登录房间同时进行拉流操作(顺序上应该先调用 “LoginRoom”,再直接调用 “startPlayingStream”)。
  2. 调用 “switchRoom” 切换房间(首次登录时调用 “loginRoom”,之后退出再登录可以直接使用 “switchRoom”)。

一个用户最多支持同时拉取几条流 ?

SDK 默认支持的并发拉流数量是 12 路(单个用户),如果单个用户有超过 12 路的并发拉流需求,请联系 ZEGO 技术支持。