常见问题

产品 / 插件
平台 / 框架

如何处理拉流常见问题?

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

平台 / 框架:Web

更新时间:2021-09-09 19:57


推流正常时,只有 Android 平台能使用微信浏览器正常拉流,iOS 平台无法拉流,但 “playQualityUpdate” 回调中有数据?

iOS 系统对微信浏览器有禁止自动播放的策略,不允许视频自动播放,需要用户手动点击 “video” 标签的播放按钮,触发 “video” 标签的播放动作。

<video id="vd_remote" playsinline controls>
</video>

如何实现从 CDN 拉流,拉流优先使用 “rtmp、hls、flv” 中哪一个地址?

  • 在登录房间前,用户需要通过 zegoExpressEngine.on('roomStreamUpdate', callBack:(roomID,updateType,streamList) => void),订阅房间内的流更新信息。
  • 当房间内有流新增时,将回调 “callBack”,可通过 “streamList” 拿到流更新列表,列表成员属性中包含了对应的 CDN 播放地址(flv、rtmp、hls)。拿到 CDN 地址后,不能通过 “startPlayingStream” 接口播放,需要借助 “flv.js” 、“video.js” 等插件。
  • 目前 Web 平台播放 rtmp 地址需要依赖于 flash 插件,如果浏览器不支持 flash 插件,则该浏览器就不能播放 rtmp 地址的流。
  • Safari 限制不能播放 flv 的流,只能播放 m3u8 或 rtmp 的流。
  • 各种拉流地址的延迟:rtmp、flv :2s ~ 5s,m3u8:5s ~2 0s。
<video id="vd_remote" playsinline controls>
</video>

如何获取 CDN 的拉流地址?

Web 平台获取 CDN 拉流地址的方式,考虑下列的实现方式:

  • 如果是通过 ZEGO 平台申请的 CDN,那么拉流端可以通过监听 “roomStreamUpdate” 回调,获取相关拉流地址。如果无法获取,请联系 ZEGO 技术支持。
  • 如果不是通过 ZEGO 平台申请的 CDN,但是需要通过拉流端监听 “roomStreamUpdate” 回调来获取相关拉流地址,请联系 ZEGO 技术支持;
  • 如果不使用 SDK 回调实现该功能,需要业务端通过业务服务器自行同步拉流地址;或者通过 ZEGO 房间的 IM 功能 发送拉流地址信息。

拉流时候报错:“Player already exist!” 是什么原因?

SDK 不支持重复拉取同一条流、渲染到不同的 view 上。如果尝试重复拉取一个正在播放中的流,就会报错。

使用 “https” 上线,但 SDK 返回的 flv 拉流地址是 “http” 的,无法兼容,如何解决?

请联系 ZEGO 技术支持,并提供该拉流域名的 “https” 证书,由技术支持配置证书后,即可使用 “https” 拉取 flv 地址。

从 CDN 拉流,使用 flv 格式播放,为什么暂停后、再播放会导致延迟累积呢?

Web 平台使用 flv 格式从 CDN 播放资源时,会自动进行缓存。暂停、重新播放时,会先从缓存数据继续播放,因此产生了延迟,暂停时间越久,产生的延迟越大。

使用 “uni-app” 框架,拉流的时候 “playerStateUpdate” 显示拉流成功,但是使用 “srcObject” 无法渲染出画面?

“uni-app” 框架未暴露 “srcObject” 属性,需要通过原生 JavaScript 进行拉流渲染。