常见问题

产品 / 插件
平台 / 框架

如何处理推流常见问题?

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

平台 / 框架:iOS / Android / macOS / Windows / Web

更新时间:2021-12-21 15:24


调用 “enableTrafficControl” 方法开启流控后,网络质量比较差时,为什么仅主路流会触发流控策略?

目前 Android、iOS、macOS 和 Windows 平台 SDK 的 enableTrafficControl 方法中没有 “channel” 参数,默认只对主流生效。当存在同时推两路流的情况时,辅流无法使用流控。

小程序如何直推 CDN?

调用 startPublishingStream 方法,将 “publishOption” 中的参数 “sourceType” 设置为 “CDN” 即可获取到 CDN 推流地址,用该地址进行推流即可。

const { url } = await zg.startPublishingStream(data.pushStreamID,{sourceType:"CDN"})

Web 平台通过 “createStream” 方法创建了流,并已给 video 对象的 “srcObject” 赋值,为什么 video 对象没有画面?

可以通过如下两种方式处理:

  • 需要给 video 对象设置 “autoplay” 属性才会自动播放。
  • 可以给 video 对象设置 “controls” 属性,用户再通过手动方式点击播放控件来进行播放。

“autoplay” 属性在 iOS 的 Safari 浏览器无效,需要使用第二种方式处理。

Web 平台如何推纯音频的流?

SDK 内部默认推音视频,如果想要推纯音频流,则调用 createStream 方法时,需要将 camera 对象的属性 “video” 设为 "false"。

let localStream = await zg.createStream({
        camera: {
            video: false,//不推视频
            audio: true,
       }
  });

Web 平台调用 createStream 方法创建流,参数 “audioInput” 和 “videoInput” 可以传空串吗?

  • audioInput:音频输入设备,不传则为默认设备,选填。
  • videoInput:视频输入设备,不传则为默认设备,选填。

“audioInput” 和 “videoInput” 参数不传(整个参数都不用携带)则 SDK 会使用默认的设备,若传空串则会导致获取不到设备,可以写成 audioInput: undefinedvideoInput:undefined

Web 平台创建流时出现 “devices detect error: NotReadableError Could not start video source” 错误?

请参考如下方式处理:

  1. 浏览器没有获取媒体设备的权限,请检查是否允许该页面获取媒体设备信息。
  2. 媒体设备被占用,如摄像头被占用,请检查是否有其他程序正在使用摄像头设备。

Web 平台报错 “https or localhost required”,是否必须要求 “https”?

  • 基于浏览器安全策略对隐私性的要求,Web 端调用摄像头强制要求 “https”,此安全策略是浏览器的要求,SDK 必须遵守。
  • 可以使用 “localhost” 先集成测试,后续上线仍然需要 “https” 环境。

Web 平台屏幕分享,如何将系统声音和麦克风声音分享出去?

Web 端屏幕分享可以选择分享的目标窗口,不同平台、不同选择会有不同的表现:

Windows系统:

  • 分享整个桌面,能够将系统的声音推出去。
  • 分享浏览器标签页,只能将标签页的声音推出去。
  • 分享其他应用窗口,不能将应用的声音推出去。
  • 屏幕分享不能采集麦克风的声音,需要SDK推第二路流来推麦克风采集的声音。

Mac系统:
无法将系统的声音推出去,只能推视频数据。

调用 “enablePublishDirectToCDN” 直推 CDN,停止推流后,是否需要再将 “enablePublishDirectToCDN” 重新设置成 “false”?

是需要的,建议成对调用该接口,在每次停止推流后重新设置成 “false”。

小程序推流时,如何设置横屏?

  1. 在配置文件里面设置:"pageOrientation": "auto"。
  2. 取消手机的锁屏,小程序横屏推流的时候就会自动切换。
  3. 页面在横竖屏切换时,会重新布局,需要用户自行做布局适配。

使用外部采集时,是否支持推送携带透明通道的 PNG 图片?

外部采集支持推送携带透明通道的图片,但是使用 SDK 渲染(包括本地预览和拉流观看)时,图片的透明部分将显示为黑色。原因如下:

  • SDK 目前不支持渲染透明通道。
  • 当从 CDN 拉流时,其他播放器也不支持透明通道。

推流是否支持设置密钥,需要使用对应密钥才能拉流?

Express SDK 1.19.0 及之后的版本,支持该功能。推流端使用 “setPublishStreamEncryptionKey” 设置推流密钥,拉流端需要使用 “setPlayStreamDecryptionKey” 设置对应密钥才能拉流成功。

仅在 ZEGO 连麦低延时服务器支持该功能,不支持 CDN。

Web 平台如何设置预览和拉流的镜像?

开发者可以通过给预览和拉流的 “video” 标签,添加 css 样式,如 transform: scale(-1, 1);