常见问题
- 如果业务上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)