- What's New
- Service Overview
-
Billing
- Billing Items
- Basic Service Billing
- Value-added Service Billing
- Billing Modes
- Changing the Billing Option
- Bills
- Arrears
- Billing Termination
-
Billing FAQs
-
Common Cases
- What Do I Need to Pay?
- Do I Need to Buy the CDN Service Before Using Live?
- How Do I Change the Billing Option?
- Do I Need to Delete Resources If I Don't Want to Use Live Any More?
- How Do I View the Usage and Expenditure of Pay-per-Use Live Resources?
- Is Downstream Traffic or Upstream Traffic Billed?
- Will I Be Billed for URL Validation?
- How Is Transcoding Billed?
- Does the Daily Peak Bandwidth Mean the Upstream Bandwidth or Downstream Bandwidth?
- Why Is a Recording Fee Deducted on the First Day of Each Month?
- Arrears
-
Common Cases
- Cloud Live
-
Media Live
- Overview
- Scenarios
- Functions
- Product Advantages
- Constraints
- Getting Started
-
Console Operations
- Prerequisites
- Functions
- Permissions Management
- Domain Name Management
- Channels
- Live Transcoding
- Service Monitoring
- Cloud Resource Authorization
- Tools
- Best Practices
-
Cloud Live API Reference
- Before You Start
- API Overview
- Calling APIs
- Examples
-
Domain Name Management
- Creating a Domain Name
- Deleting a Domain Name
- Modifying a Domain Name
- Querying a Domain Name
- Mapping Domain Names
- Deleting a Domain Name Mapping
- Configuring the Domain Name IPv6 Function
- Querying IP Address Information
- Modifying the Streaming Domain Name Delay
- Querying the Streaming Domain Name Delay
- Modifying the HLS Configuration of a Domain Name
- Querying HLS Configurations of Domain Names
- Modifying Origin Pull Settings
- Querying Origin Pull Settings
- Notification Management
-
Authentication Management
- Configuring a Referer Validation ACL
- Deleting a Referer Validation ACL
- Querying Referer Validation ACLs
- Querying IP Address ACLs
- Modifying an IP Address ACL
- Generating a Signed URL
- Querying Supported Areas of a Streaming Domain Name
- Modifying Supported Areas of a Streaming Domain Name
- Querying the URL Validation Configuration of a Specified Domain Name
- Modifying the URL Validation Configuration of a Specified Domain Name
- Deleting the URL Validation Configuration of a Specified Domain Name
- Snapshot Management
- Recording Management
- Recording Callback Management
- HTTPS Certificate Management
- OBS Bucket Management
- Transcoding Template Management
- Stream Management
-
Statistics Analysis
- Querying Peak Bandwidth
- Querying Total Traffic
- Querying HTTP Status Codes for Pulling Live Streams
- Querying the Duration of Transcoded Outputs
- Querying Recording Channels
- Querying the Number of Snapshots
- Querying Upstream Bandwidth
- Querying the Number of Stream Channels
- Querying the Historical Stream List
- Querying the Playback Profile
- Querying the Distribution of Live Streaming Metrics by Region
- Stream Analytics
- Appendix
- Change History
-
Media Live API Reference
- Before You Start
- API Overview
- Calling APIs
- Examples
-
OTT Channel Management
- Creating an OTT Channel
- Querying Channel Information
- Deleting Channel Information
- Modifying Channel Packaging Information
- Modifying Channel Input Stream Information
- Modifying Channel Recording Information
- Modifying General Channel Information
- Changing the Channel Status
- Modifying Channel Transcoding Template Information
- Appendix
- Change History
- Cloud Live Server SDK Reference
- Low Latency Live Client SDK Reference
- Troubleshooting
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:
- See Automatic Downgrade.
- See Specified Downgrade.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.