本文介绍如何使用 Web 拉流 SDK(VePlayer)配置主备线路,该功能适用于已配置多个拉流源或多 CDN 加速路径的系统,当主流出现连接异常或播放失败时,通过自动切换保障可用性。
适用版本
本文档适用于最新版本的 Web 拉流 SDK,版本信息请参考发布历史,历史版本请参考历史文档。
前提条件
已完成 SDK 集成。
配置说明
VePlayer 支持配置主备流降级。当主流出现异常时,播放器会自动切换到备用流。此功能可通过以下配置来实现:
fallbackUrls
:设置主流异常时备用的流地址列表。maxFallbackRound
:设置最大切换次数,防止无限重试。
VePlayer 主备流降级功能仅支持相同格式的拉流地址降级。
配置示例
以下为主备流自动降级的配置示例,涵盖两种常见使用场景:
- 单地址拉流的主备切换:适用于仅有一个清晰度的播放需求,通过配置备用流地址,在主流异常时保障播放不中断。
- 多清晰度拉流的主备切换:适用于支持多清晰度选择的直播场景,为每个清晰度配置主备流地址,确保不同清晰度下的播放都有备份方案。
场景一:单地址拉流的主备切换
当仅使用单一的播放地址时,可以设置主流地址和一个或多个备用流地址,以实现主备切换。代码示例如下所示。
VePlayer.createLivePlayer({
width: 640,
height: 360,
url: 'https://pulldomain/appname/mainstream.m3u8',
fallbackUrls: ['https://pulldomain/appname/backupstream.m3u8'],
maxFallbackRound: 1,
logger: {
appId: '5****8',
},
});
import { createLivePlayer, register } from '@volcengine/veplayer';
import { hls } from '@volcengine/veplayer-plugin';
import '@volcengine/veplayer/style'
register([hls]);
createLivePlayer({
width: 640,
height: 360,
url: 'https://pulldomain/appname/mainstream.m3u8',
fallbackUrls: ['https://pulldomain/appname/backupstream.m3u8'],
maxFallbackRound: 1,
logger: {
appId: '5****8',
},
});
场景二:多清晰度流地址的主备切换
当使用多种清晰度的流时,可以为每个清晰度配置多个流地址,并设置对应的主备流地址。代码示例如下所示。
VePlayer.createLivePlayer({
height: 360,
defaultDefinition: 'ld',
maxFallbackRound: 1,
playlist: [
{
definitions: [
{
url: 'https://pulldomain/appname/mainstream_hd.m3u8',
fallbackUrls: ['https://pulldomain/appname/backupstream_hd.m3u8'],
definition: 'hd',
text: { en: 'hd', 'zh-cn': '超清' },
},
{
url: 'https://pulldomain/appname/mainstream_sd.m3u8',
definition: 'sd',
fallbackUrls: ['https://pulldomain/appname/backupstream_sd.m3u8'],
text: { en: 'sd', 'zh-cn': '高清' },
},
{
url: 'https://pulldomain/appname/mainstream_ld.m3u8',
definition: 'ld',
fallbackUrls: ['https://pulldomain/appname/backupstream_ld.m3u8'],
text: { en: 'ld', 'zh-cn': '标清' },
},
],
},
],
logger: {
appId: '5****8',
},
});
import { createLivePlayer, register } from '@volcengine/veplayer';
import { hls } from '@volcengine/veplayer-plugin';
import '@volcengine/veplayer/style'
register([hls]);
createLivePlayer({
height: 360,
defaultDefinition: 'ld',
maxFallbackRound: 1,
playlist: [
{
definitions: [
{
url: 'https://pulldomain/appname/mainstream_hd.m3u8',
fallbackUrls: ['https://pulldomain/appname/backupstream_hd.m3u8'],
definition: 'hd',
text: { en: 'hd', 'zh-cn': '超清' },
},
{
url: 'https://pulldomain/appname/mainstream_sd.m3u8',
definition: 'sd',
fallbackUrls: ['https://pulldomain/appname/backupstream_sd.m3u8'],
text: { en: 'sd', 'zh-cn': '高清' },
},
{
url: 'https://pulldomain/appname/mainstream_ld.m3u8',
definition: 'ld',
fallbackUrls: ['https://pulldomain/appname/backupstream_ld.m3u8'],
text: { en: 'ld', 'zh-cn': '标清' },
},
],
},
],
logger: {
appId: '5****8',
},
});