
# 降级处理
#### 降级场景
**降级说明**
使用LLL SDK进行直播拉流时，可能会遇到播放失败等问题，可以考虑使用其他协议播放。
**触发条件**
- 浏览器环境不支持webrtc特性，可以通过[checkSystemRequirements](https://support.huaweicloud.com/llsdk-live/live_19_0009.html#live_19_0009__section1668175819279)接口来判断。
- 服务端请求、建链均失败。
- 媒体起播播放超时，且解码帧数为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](https://support.huaweicloud.com/llsdk-live/live_19_0009.html#live_19_0009__section118717154316)设置AUTO_DOWNGRADE值来修改，示例如下：
  ```
  HWLLSPlayer.setParameter('AUTO_DOWNGRADE', false) // true表示开启自动降级播放，false表示关闭自动降级播放，默认开启
  ```
  
- **指定降级**
  通过[HWLLSClient](https://support.huaweicloud.com/llsdk-live/live_19_0010.html)中的[startPlay](https://support.huaweicloud.com/llsdk-live/live_19_0010.html#live_19_0010__section1668175819279)接口，指定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
})
```
#### 代码示例
![](https://support.huaweicloud.com/llsdk-live/public_sys-resources/note_3.0-zh-cn.png)
LLL SDK需解压至"sdk/"目录。
两种降级方式的示例代码，如下所示：
- 自动降级的代码示例，如[自动降级](https://support.huaweicloud.com/llsdk-live/live_19_0090.html)所示。

- 指定降级的代码示例，如[指定降级](https://support.huaweicloud.com/llsdk-live/live_19_0091.html)所示。
 
