
# 常见问题
- **如果业务上App只能使用http协议，是否能够集成使用华为低时延直播Web SDK ?**
  部分浏览器（chrome）可以集成使用，但不推荐。由于浏览器兼容性识别是根据浏览器暴露的WebRTC对象判断的，在非https协议下，对象可能不存在。
  
- **Firefox浏览器中无法使用华为低时延直播Web SDK？**
  Firefox浏览器使用之前需要安装H264的编解码插件。浏览器中输入**about:addons**，跳转到插件安装页面，查看H264插件是否安装完成，如未安装请在该页面更新安装。
  ![](https://support.huaweicloud.com/llsdk-live/zh-cn_image_0000001369316338.png)
  
- **集成华为低时延直播Web SDK后，无法正常使用，可能原因？**
  - 需要检查用户自定义的域名配置是否完成，如：推、拉流域名，权威机构签发的https证书等。
  
  - 推流端设置及推流是否正常。
  
  - 播放地址是否填写正确，如：appName、streamName等。
  
  - 网络连接是否正常、网络防火墙配置是否有限制，如：UDP端口（8000-8063）是否放通。
   
- **华为低时延直播Web SDK，支持哪些类型浏览器？**
  浏览器支持详情请参见[浏览器适配](https://support.huaweicloud.com/llsdk-live/live_19_0004.html)。
  
- **推流端推流成功后，华为低时延直播Web SDK拉流播放失败？**
  需要确认推流端的推流编码参数，是否为H264+无B帧。目前华为低时延直播Web SDK仅支持H264+无B帧的流，所以如果原始流为H265或者带B帧，则需要提前在租户Console上配置对应转码模板，开启转码服务，但这样会引入额外的转码延迟，并且会产生转码费用。建议推流端尽量推H264+不包含B帧的流，可以通过调整推流端软件（如OBS）的视频编码参数去除B 帧。如果使用OBS推流，可以通过设置，关闭B帧。如下图所示：
  ![](https://support.huaweicloud.com/llsdk-live/zh-cn_image_0000001369795982.png)
  
- **华为低时延直播Web SDK，播放报错：NotAllowedError:xxx？**
  由于浏览器自动播放安全策略的限制，浏览器直接拉起App并启动播放会返回该错误，在应用层需要根据该错误码，引导用户通过手动触发页面UI控件，并调用[replay](https://support.huaweicloud.com/llsdk-live/live_19_0010.html#live_19_0010__section9151146145913)接口恢复播放。
  
- **开启认证策略，该如何获取token信息** **？**
  认证策略不开启不影响功能正常使用，也不影响打点和日志上传的能力。
  认证策略开启可以保证打点数据和日志上传数据的安全性。
  如果当前需要认证策略能力，请[提交工单](https://console.huaweicloud.com/ticket/#/ticketindex/createIndex)，联系技术支持获取appid和token。
  
- **如何填写拉流配置参数？**
  调用startPlay开始拉流，其中参数options的字段elementId必填，如下所示：
  - elementId：容器的ID，用来承载展示适配画面的容器，一般传入div标签的id。
  
  
  其他一些字段均为可选，比如：
  - objectFit：渲染模式，有三种可选值，contain、cover和fill。
  
  - muted：表示是否静音播放。
   
- **如何处理音频受限？**
  音频受限是音频自动播放导致的，常见场景为，在一个界面未做任何交互，就直接播放音频。可以通过监听Error事件来获取相关信息，详情请参考[最佳实践](https://support.huaweicloud.com/llsdk-live/live_19_0050.html)。
  ```
  client.on('Error', (error) => {
      if (error.errCode === 51000000) {
          // 音频受限，增加交互操作，调用replay接口
      }
  })
  ```
  
- **如何使用loading加载动画** **？**
  loading加载动画可以在起播、卡顿、网络质量差时展示加载的效果，可通过以下方法启用：
  ```
  HWLLSPlayer.setParameter('LOADING_CONFIG', {
      netQualityLoading: true, // 根据网络质量展示loading
      netQualityLoadingThreshold: 5, // 展示loading的阈值，默认为5
      frameStuckLoading: true, // 根据帧卡顿时长展示loading
      frameStuckThreshold: 10, // 帧卡顿时长阈值，单位为100ms，10表示1000ms
  })
  ```
  
- **如何使用海报（即视频播放封面）** **？**
  海报的设置是在startPlay接口的配置参数里，使用方法如下：
  ```
  const options = {
      ...
      poster: {
          url: // 海报链接
          mode: crop, // 海报填充模式，可选fill或crop
          startEnable: true, // 表示启动播放时是否展示海报，不过只能在非自动起播下生效
          pauseEnable: true, // 表示暂停播放时是否展示海报
      }
      ...
  }
  client.startPlay(streamUrl, options)
  ```
  
- **如何获取统计信息** **？**
  详情请参考[客户端时间回调](https://support.huaweicloud.com/llsdk-live/live_19_0011.html#live_19_0011__section16679151457)。
  需要先开启流信息统计，如下所示：
  ```
  client.streamStatistic(true, 1)
  ```
  再通过监听事件回调获取统计信息，如下所示：
  ```
  client.on('media-statistic', (statisticInfo) => {
      const audioStatisticInfo = statisticInfo.audio
      const videoStatisticInfo = statisticInfo.video
  })
  ```
  
- **如何处理画面黑屏** **？**
  当画面黑屏时，先检查推流是否有问题，主要包括：
  - 视频编码格式是否为H264。
  
  - 视频是否包含B帧。
  
  - 是否只推了音频，没有包含视频。
  
  
  如果确认推流没问题，可以使用FLV拉流查看视频是否正常。如果FLV正常，请[提交工单](https://console.huaweicloud.com/ticket/#/ticketindex/createIndex)处理。
  还有种情况是播放过程中出现黑屏，处理方式一般如下所示：
  - 画面黑屏后，检查音频是否正常。如果音频正常，再检查下推流端是否正常。
  
  - 音视频如果都没有，则可能是网络问题导致的断流。可在网络恢复时，重新调用开始播放接口，或使用断流重试功能。
   
- **如何使用断流重试** **？**
  如需使用断流重试功能，可在断流时自动重试拉流，优化用户体验。
  一般开启方式如下所示：
  ```
  client.enableStreamStateDetection(
      true, // 流检测开关
      3, // 检测间隔，单位秒
      {
          enable: true, // 重试开关
          retryInterval: 30, // 重试间隔，单位：秒
          retryTimes: 30, // 重试次数
      }
  )
  ```
  
- **如何处理兼容性问题** **？**
  某些设备的浏览器可能不支持WebRTC协议拉流，该场景下，可以采取降级播放策略。
  
- **全屏操作等常规功能不生效** **？**
  检查Client在使用过程中是否有保证为单例，调用Client的方法时，使用的Client是对的。如果使用vue等开发框架，建议Client实例不要设为响应式数据。
  
- **低端手机播放超高清视频，可能体验差**
  部分低端手机（如P20 Android9）在播放4K分辨率及8M以上码率的超高清直播流时，可能会因为性能问题，出现黑屏。
  
- **如何使用降级播放功能** **？**
  有两种降级方式，自动降级和指定降级，详见[最佳实践](https://support.huaweicloud.com/llsdk-live/live_19_0084.html)。
  - 自动降级：SDK默认行为，在不支持WebRTC协议拉流时，自动降级为HLS或FLV。
  
  - 指定降级：在startPlay接口的配置参数里，指定降级地址，如下所示：
    ```
    const options = {
        ...
        downgradeUrl: {
            hlsUrl: // hls播放地址
            flvUrl: // flv播放地址
        }
        ...
    }
    client.startPlay(streamUrl, options)
    ```
    
   
- **视频被浏览器劫持导致UI页面展示异常等** **问题如何解决？**
  现象：浏览器可能劫持网页中的video播放器，对其添加一些UI等，使其展示效果不符合预期。如：劫持并创建新播放图层覆盖，导致自定义UI无法展示；object-fit设置不生效；暂停时出现广告播放等。
  解决方案：暂无自行解决方案，需浏览器厂商提供相应的配置方案。
  
- **视频初始化完成，未开始播放时黑屏或画面比例错误** **？**
  原因：视频非自动播放时，初始化完成后由浏览器决定展示的画面，可能会存在浏览器不展示或浏览器展示画面体验不佳的情况。
  解决方案：配置海报，指定非自动起播时展示的封面图片，详见[startPlay](https://support.huaweicloud.com/llsdk-live/live_19_0010.html#live_19_0010__section1668175819279)中的poster配置项。
  
 
