Updated on 2024-11-15 GMT+08:00

Downgrade

Scenarios

About downgrade

When the Low Latency Live (LLL) SDK is used to pull livestreams, the playback may fail. In this case, you can use other protocols for playback.

Trigger conditions

  • The browser environment does not support WebRTC. You can call the checkSystemRequirements API to check this.
  • The server request and link setup fail.
  • The playback start times out and there is no decoded frame.
  • Stream interruption occurs during playback and retry upon stream interruption is not enabled.

Methods

  • Automatic downgrade

    By default, automatic downgrade is enabled for the LLL SDK. When automatic downgrade is triggered, the SDK automatically attempts to downgrade from LLL to FLV or HLS. The following example is an LLL URL:

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

    The URL is automatically converted to an FLV or HLS URL that the device supports. The parameters in the original URL are combined to the converted URL after the downgrade. Example:

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

    To disable automatic downgrade, call the setParameter API to set the value of AUTO_DOWNGRADE. Example:

    HWLLSPlayer.setParameter('AUTO_DOWNGRADE', false) // true (automatic downgrade enabled, by default) and false (automatic downgrade disabled)
  • Specified downgrade

    Call the startPlay API in HWLLSClient to specify the FLV URL or HLS URL of downgradeUrl in options to use the URL for playback when a downgrade occurs. If either hlsUrl or flvUrl is specified, the specified URL will be used. If both of them are specified, hlsUrl will be used first and then flvUrl. If the HLS is not supported or the HLS stream pull fails, the FLV URL will be used for playback after downgrade. Note that iOS devices do not support FLV playback.

    const client = HWLLSPlayer.createClient()
    client.startPlay(url, {
        ...
        downgradeUrl: {
            hlsUrl: // HLS URL.
            flvUrl: // FLV URL.
        }
        ...
    })

Downgrade Callbacks

When a downgrade is triggered, a callback will be initiated.

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

Sample Code

The LLL SDK needs to be decompressed to the sdk/ directory.

Sample code of the two downgrade methods: