更新时间:2024-11-15 GMT+08:00

降级处理

降级场景

降级说明

使用LLL SDK进行直播拉流时,可能会遇到播放失败等问题,可以考虑使用其他协议播放。

触发条件

  • 浏览器环境不支持webrtc特性,可以通过checkSystemRequirements接口来判断。
  • 服务端请求、建链均失败。
  • 媒体起播播放超时,且解码帧数为0时,会进入降级流程。
  • 未开启断流重试时,播放过程中出现断流,也会进入降级流程。

降级方式

  • 自动降级

    低时延直播SDK默认是开启自动降级的,当触发自动降级时,SDK会自动尝试从低时延直播降级到FLV或者HLS协议,例如,低时延直播地址:

    webrtc://domain/appname/streamname?arg1=v1

    会根据设备的支持情况,自动尝试降级到FLV或者HLS协议地址,url中携带的参数会拼接到降级后的url中,如:

    https://domain/appname/streamname.flv?vhost=domain&arg1=v1
    或
    https://domain/appname/streamname.m3u8?vhost=domain&arg1=v1

    如果需要关闭自动降级,可以通过接口setParameter设置AUTO_DOWNGRADE值来修改,示例如下:

    HWLLSPlayer.setParameter('AUTO_DOWNGRADE', false) // true表示开启自动降级播放,false表示关闭自动降级播放,默认开启
  • 指定降级

    通过HWLLSClient中的startPlay接口,指定options里面参数downgradeUrl的flv或hls地址,可以实现在异常时降级播放。如果hlsUrl和flvUrl播放地址设置一个,会降级至指定地址;如果两个播放地址都设置,则会先走HLS降级,如果HLS不支持或者HLS拉流失败,则会走FLV降级。注意iOS设备不支持FLV播放。

    const client = HWLLSPlayer.createClient()
    client.startPlay(url, {
        ...
        downgradeUrl: {
            hlsUrl: // hls的播放地址
            flvUrl: // flv的播放地址
        }
        ...
    })

降级回调

降级播放后,会有回调事件。

const client = HWLLSPlayer.createClient()
client.on('player-changed', (mediaFormat) => {
    // mediaFormat: hls、flv
})

代码示例

LLL SDK需解压至“sdk/”目录。

两种降级方式的示例代码,如下所示: