QVBP2P
QVBP2P 是 sdk lib 名称, 可以访问到一些常量和生成 qvbp2p 实例, 如下
qvbp2p
表示 sdk 实例QVBP2P.create(config: Config): QVBP2P
创建 SDK 的实例
注意:
创建实例前请销毁上一个实例
参数
type Config = {tencentCloudAppId: number; // 必填, 腾讯云AppIdbizId: 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数据chunkEND_OF_STREAM: 3, // 流结束STREAM_NOT_FOUND: 4, // 启动时拉流404};
回退说明: 当 sdk 拉流失败,播放长时间卡顿等异常情况时候,会抛出此事件,客户播放器此时需要使用原有方式重新尝试拉流,不使用 P2P
QVBP2P.ComCodes
和
QVBP2P.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.ROLLBACKrollbackReason: string;};type CallbackData = ReceiveBufferCallbackData | RollbackCallbackData;
例子
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();