更新时间:2024-12-06 GMT+08:00

常见问题

  • 如果业务上App只能使用http协议,是否能够集成使用华为低时延直播Web SDK ?

    部分浏览器(chrome)可以集成使用,但不推荐。由于浏览器兼容性识别是根据浏览器暴露的WebRTC对象判断的,在非https协议下,对象可能不存在。

  • Firefox浏览器中无法使用华为低时延直播Web SDK?

    Firefox浏览器使用之前需要安装H264的编解码插件。浏览器中输入about:addons,跳转到插件安装页面,查看H264插件是否安装完成,如未安装请在该页面更新安装。

  • 集成华为低时延直播Web SDK后,无法正常使用,可能原因?
    • 需要检查用户自定义的域名配置是否完成,如:推、拉流域名,权威机构签发的https证书等。
    • 推流端设置及推流是否正常。
    • 播放地址是否填写正确,如:appName、streamName等。
    • 网络连接是否正常、网络防火墙配置是否有限制,如:UDP端口(8000-8063)是否放通。
  • 华为低时延直播Web SDK,支持哪些类型浏览器?

    浏览器支持详情请参见浏览器适配

  • 推流端推流成功后,华为低时延直播Web SDK拉流播放失败?

    需要确认推流端的推流编码参数,是否为H264+无B帧。目前华为低时延直播Web SDK仅支持H264+无B帧的流,所以如果原始流为H265或者带B帧,则需要提前在租户Console上配置对应转码模板,开启转码服务,但这样会引入额外的转码延迟,并且会产生转码费用。建议推流端尽量推H264+不包含B帧的流,可以通过调整推流端软件(如OBS)的视频编码参数去除B 帧。如果使用OBS推流,可以通过设置,关闭B帧。如下图所示:

  • 华为低时延直播Web SDK,播放报错:NotAllowedError:xxx?

    由于浏览器自动播放安全策略的限制,浏览器直接拉起App并启动播放会返回该错误,在应用层需要根据该错误码,引导用户通过手动触发页面UI控件,并调用replay接口恢复播放。

  • 开启认证策略,该如何获取token信息

    认证策略不开启不影响功能正常使用,也不影响打点和日志上传的能力。

    认证策略开启可以保证打点数据和日志上传数据的安全性。

    如果当前需要认证策略能力,请提交工单,联系技术支持获取appid和token。

  • 如何填写拉流配置参数?

    调用startPlay开始拉流,其中参数options的字段elementId必填,如下所示:

    • elementId:容器的ID,用来承载展示适配画面的容器,一般传入div标签的id。

    其他一些字段均为可选,比如:

    • objectFit:渲染模式,有三种可选值,contain、cover和fill。
    • muted:表示是否静音播放。
  • 如何处理音频受限?

    音频受限是音频自动播放导致的,常见场景为,在一个界面未做任何交互,就直接播放音频。可以通过监听Error事件来获取相关信息,详情请参考最佳实践

    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)
  • 如何获取统计信息

    详情请参考客户端时间回调

    需要先开启流信息统计,如下所示:

    client.streamStatistic(true, 1)

    再通过监听事件回调获取统计信息,如下所示:

    client.on('media-statistic', (statisticInfo) => {
        const audioStatisticInfo = statisticInfo.audio
        const videoStatisticInfo = statisticInfo.video
    })
  • 如何处理画面黑屏

    当画面黑屏时,先检查推流是否有问题,主要包括:

    • 视频编码格式是否为H264。
    • 视频是否包含B帧。
    • 是否只推了音频,没有包含视频。

    如果确认推流没问题,可以使用FLV拉流查看视频是否正常。如果FLV正常,请提交工单处理。

    还有种情况是播放过程中出现黑屏,处理方式一般如下所示:

    • 画面黑屏后,检查音频是否正常。如果音频正常,再检查下推流端是否正常。
    • 音视频如果都没有,则可能是网络问题导致的断流。可在网络恢复时,重新调用开始播放接口,或使用断流重试功能。
  • 如何使用断流重试

    如需使用断流重试功能,可在断流时自动重试拉流,优化用户体验。

    一般开启方式如下所示:

    client.enableStreamStateDetection(
        true, // 流检测开关
        3, // 检测间隔,单位秒
        {
            enable: true, // 重试开关
            retryInterval: 30, // 重试间隔,单位:秒
            retryTimes: 30, // 重试次数
        }
    )
  • 如何处理兼容性问题

    某些设备的浏览器可能不支持WebRTC协议拉流,该场景下,可以采取降级播放策略。

  • 全屏操作等常规功能不生效

    检查Client在使用过程中是否有保证为单例,调用Client的方法时,使用的Client是对的。如果是用vue等开发框架,建议Client实例不要设为响应式数据。

  • 低端手机播放超高清视频,可能体验差

    部分低端手机(如P20 Android9)在播放4K分辨率及8M以上码率的超高清直播流时,可能会因为性能问题,出现黑屏。

  • 如何使用降级播放功能

    有两种降级方式,自动降级和指定降级,详见最佳实践

    • 自动降级:SDK默认行为,在不支持WebRTC协议拉流时,自动降级为HLS或FLV。
    • 指定降级:在startPlay接口的配置参数里,指定降级地址,如下所示:
      const options = {
          ...
          downgradeUrl: {
              hlsUrl: // hls播放地址
              flvUrl: // flv播放地址
          }
          ...
      }
      
      client.startPlay(streamUrl, options)