接入 video.js(vhs)

最近更新时间:2025-11-28 15:33:53

我的收藏
此文档对接了 video.js http-streaming 模块,简称 vhs。

对接准备

请参见 接入说明
注意:
请注意当前 SDK 不支持多实例。

对接示例

<video id="my_video_2" class="video-js" controls preload="auto" width="640" height="268">
<source src="https://test-streams.mux.dev/x36xhzz/url_0/193039199_mp4_h264_aac_hd_7.m3u8">
</video>
<button onclick="startP2P">创建p2p SDK</button>
<button onclick="destroyP2P">销毁p2p SDK</button>
var videoId = 'my_video_2';
var player = videojs(videoId, {}, function () {
startP2P(player);
});

function startP2P(player) {
// 获取videojs内置的vhs插件
var vhs = window.player.tech().vhs;
if (vhs && HLSP2P.isSupported() && !window.hlsp2p) {
// 创建SDK实例
const hlsp2p = HLSP2P.createCommon({
videoId: videoId + '_html5_api', // 特别注意是<video>的id, 对于videojs来说, 传入的id拼接 _html5_api
videoType: 'VOD', // 根据实际情况填写, 见API
url: '这里要替换为实际的m3u8 url',
domain: '这里要根据邮件填写',
xp2pAppId: '这里要根据邮件填写',
xp2pAppKey: '这里需要根据邮件填写',
cloudAppId: 需要替换为您在腾讯云的AppId
});
window.hlsp2p = hlsp2p;

// 监听SDK播放失败事件
hlsp2p.on(HLSP2P.Events.Rollback, () => {
// 需销毁SDK
hlsp2p.destroy();
});

// 将vhs绑定到p2p SDK, 从此vhs的下载的ts都会经由p2p SDK
const result = hlsp2p.attachVhsPlayer(vhs);
if (result) {
console.log('vhs绑定p2p SDK成功');
} else {
console.log('vhs绑定p2p SDK失败');
}
}
}

// 注意,
// 1. 当关闭播放器的时候, 需要同步关闭P2P SDK!
// 2. 当更换视频的时候, 需要销毁SDK并重新初始化SDK
function destroyP2P() {
if (window.hlsp2p) {
window.hlsp2p.destroy();
window.hlsp2p = null;
}
}

/**
* 关闭播放器同步关闭P2P SDK!
*/
function closePlayer() {
player.dispose();
destroyP2P();
}

对接注意事项(重要)

1. 当关闭播放器的时候,需要同步销毁 P2P SDK。
2. 当更换视频播放的时候,需要销毁 SDK 并重新初始化 SDK。