API 文档

最近更新时间:2023-09-27 15:04:31

我的收藏

QVBP2P

QVBP2P 是 sdk lib 名称, 可以访问到一些常量和生成 qvbp2p 实例, 如下qvbp2p表示 sdk 实例

QVBP2P.create(config: Config): QVBP2P

创建 SDK 的实例
注意:
创建实例前请销毁上一个实例

参数

type Config = {
tencentCloudAppId: number; // 必填, 腾讯云AppId
bizId: string; // 必填, 邮件给出
xp2pAppId: string; // 必填, 邮件给出
xp2pPackage: string; // 必填, 邮件给出
xp2pPlayDomain: string; // 必填, 拉流域名, 邮件给出或按需填写
xp2pAppKey: string; // 必填, 邮件给出
authMode: 'none' | 'local' | 'remote'; // 必填, 鉴权模式. 请根据如下表格自行选择
localSecKey?: string; // 可选, 邮件给出
debug?: boolean; // debug开关
}
authMode 参数含义
'none':使用原有的拉流鉴权参数, 因为 SDK 运行中可能会多次重新拉流,因此使用此选项请注意您的鉴权过期时间。鉴权过期后会导致 P2P 拉流失败; 如果您的拉流域名没有防盗链,也需使用此项配置
'local':使用腾讯云的鉴权. 此选项需要您设置 localSecKey字段, 值为 xp2pPlayDomain 域名对应的鉴权 key (控制台-云直播-域名管理-访问控制-Key鉴权);SDK 内部会使用这个 key 实时生成防盗链地址
'remote':远程鉴权, 使用 XP2P 的鉴权方式, 需要您传入 xp2pAppKey, 并且由我们来配置域名的鉴权

返回值

QVBP2P // sdk 实例

常量

QVBP2P.version: string

查看当前 sdk 版本

QVBP2P.ComEvents: ComEvents

SDK 会抛出的事件,客户端需监听处理

定义

const ComEvents = {
STATE_CHANGE: 'tp2pStateChange', // 目前sdk仅抛出了这一个事件, 客户需要监听这个事件,并处理对应的消息,消息码见 QVBP2P.ComCode
}

QVBP2P.ComCodes: ComCode

QVBP2P.ComEvents.STATE_CHANGE 事件对对应多种消息, 通过此处的消息码区分处理

定义

const ComCode = {
ROLLBACK: -2, // sdk回退
RECEIVE_BUFFER: 1, // 接收flv数据chunk
END_OF_STREAM: 3, // 流结束
STREAM_NOT_FOUND: 4, // 启动时拉流404
};
回退说明: 当 sdk 拉流失败,播放长时间卡顿等异常情况时候,会抛出此事件,客户播放器此时需要使用原有方式重新尝试拉流,不使用 P2P
QVBP2P.ComCodesQVBP2P.ComEvents 用法见示例

方法

QVBP2P.isSupported(): boolean

静态方法, 判断当前浏览器是否支持 sdk

返回值

boolean true 表示支持 sdk

例子

if (QVBP2P.isSupported()) {
// 支持sdk,可以使用
}

qvbp2p.listen(event: P2PEvent, callback: P2PCallback): void

实例方法, 向 sdk 注册监听的事件

参数

type P2PEvent = QVBP2P.ComEvents.STATE_CHANGE;
type P2PCallback = (event: QVBP2P.ComEvents.STATE_CHANGE, data: CallbackData) => void;

type ReceiveBufferCallbackData = {
code: ComCodes.RECEIVE_BUFFER, // 接收数据
payload: ArrayBuffer; // flv chunk数据
}

type RollbackCallbackData = {
code: ComCodes.ROLLBACK
rollbackReason: string;
};

type CallbackData = ReceiveBufferCallbackData | RollbackCallbackData;

例子

请参考 接入 flv.js

qvbp2p.setMediaElement(videoElement: HTMLVideoElement): void

实例方法,给 sdk 传入当前的 videoElement,sdk 使用 videoElement 进行事件监控,buffer 查询请在loadSource()调用前设置

例子

const videoEl = document.getElementById('your-video-id')
qvbp2p.setMediaElement(videoEl);

qvbp2p.loadSource(loadConfig: LoadConfig): void

实例方法, 开始启动 sdk 拉流功能
注意:
此方法不能重复调用, 只能调用一次

参数

type LoadConfig = {
src: string; // 原始flv流的url. sdk会进行解析, 然后拼出sdk内部使用的url进行拉流
xresid?: string; // 可选, 如果不同拉流域名会使用相同的流id, 则可以自行设置不同xresid, 避免P2P串流
}

例子

qvbp2p.loadSource({
src: 'https://xxxx.xxx.xxx/live/teststrea.flv?xxxx'
})

qvbp2p.destroy()

实例方法, 中断拉流, 销毁 sdk(不能重复调用)。销毁后的 sdk 也不能继续使用,需要重新创建 sdk 实例

语法

qvbp2p.destroy();