本章节介绍了拉流 SDK 进阶功能的接入方式,支持的进阶功能包括但不限于使用主备流、截图。您可以根据实际业务需求,借助拉流 SDK 实现更复杂的功能。
真机调试:由于 SDK 使用了大量 HarmonyOS NEXT 系统的音视频接口,这些接口在仿真模拟器下可能会出现异常,推荐您使用真机进行代码调试。
本节为您详细介绍如何使用拉流 SDK 进阶功能的实现,包括但不限于使用主备流、截图。
主备流主要用于直播间容灾,通过配置主备两路直播流地址,在推流和分发环节使用主备流进行直播。播放器在接入时配置主备两路拉流地址,当主路地址拉流失败或者播放出错时,播放器会自动切换到备路地址进行播放。同样地,当备路地址播放出错时,播放器会切换回主路地址进行播放。主备地址可以来自同一直播服务商,也可以来自不同的直播服务商。
获取主流地址和备流地址,如果使用火山引擎视频直播服务,您可通过视频直播控制台的地址生成器,生成主备拉流地址。
配置主备流地址进行播放。代码示例如下所示。
// 配置主流地址 const playStreamMain = new VeLivePlayerStream(); playStreamMain.url = "https://pull.example.com/live/主.flv"; playStreamMain.format = VeLivePlayerFormat.VeLivePlayerFormatFLV; playStreamMain.resolution = VeLivePlayerResolution.VeLivePlayerResolutionOrigin; playStreamMain.streamType = VeLivePlayerStreamType.VeLivePlayerStreamTypeMain; // 流类型配置为主路 // 配置备流地址 const playStreamBackup = new VeLivePlayerStream() playStreamBackup.url = "https://pull.example.com/live/备.flv"; playStreamBackup.format = VeLivePlayerFormat.VeLivePlayerFormatFLV; playStreamBackup.resolution = VeLivePlayerResolution.VeLivePlayerResolutionOrigin; playStreamBackup.streamType = VeLivePlayerStreamType.VeLivePlayerStreamTypeBackup; // 流类型配置为备路 // 创建播放源 const streamData = new VeLivePlayerStreamData(); // 开启主备切换 streamData.enableMainBackupSwitch = true; // 添加主流 streamData.mainStreamList = [playStreamMain]; // 添加备流 streamData.backupStreamList = [playStreamBackup]; // 配置播放源 this.livePlayer?.setPlayStreamData(streamData); // 开始播放 this.livePlayer?.play();
当播放器内部发生主备切换时,会通过 VeLivePlayerObserver 的回调接口 onMainBackupSwitch
进行通知。代码示例如下所示。
onMainBackupSwitch(player: VeLivePlayer, streamType: VeLivePlayerStreamType, error: VeLivePlayerError): void { // 主备切换回调 }
截图功能允许您在播放器中截取当前直播画面并生成一张图片。
通过调用播放器的 snapshot
接口可以实现截图功能。截图仅在播放器播放成功后可以生效。代码示例如下所示。
int result = this.livePlayer?.snapshot();
截图成功后,会通过播放器 VeLivePlayerObserver 的回调接口 onSnapshotComplete
进行回调,同时将截取的图片数据传递给回调方法。代码示例如下所示。
onSnapshotComplete(player: VeLivePlayer, bitmap: image.PixelMap): void { // 截图成功回调,参数 bitmap 为截图的图片数据 }