接入说明

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

我的收藏

介绍

腾讯云 H5-P2P HLS 直播点播解决方案,可帮助用户直接使用经过大规模验证的直播流媒体分发服务。用户可通过 SDK 中简洁的接口快速同自有应用集成,实现 H5 P2P 直播功能。
接入原理:将播放器的 ts 请求导向 p2p SDK,SDK 内部会调度使用 p2p 网络下载或者直接从 ts URL 下载,然后返回播放器。
SDK 名称
XP2P H5 端 HLS SDK
版本号
V1.6.37
SDK 介绍
为直播、点播、下载等场景的内容分发网络提供 P2P 点到点对等网络内容共享加速
开发者
腾讯云计算(北京)有限责任公司
个人信息处理规则
下载 SDK
单击下载 H5 HLS SDK 压缩包

运行条件

SDK 运行需要浏览器支持以下特性

WebRTC
WebSocket
service worker(iOS)
浏览器版本要求
桌面
Chrome
55+
Firefox
65+
Safari
11+
Edge
16+
IE
不支持
浏览器版本要求
移动端
iOS Safari
支持 service worker 接入
iOS 微信
不支持
Android 微信
支持
说明:
其他浏览器和详细信息,您可 点击此处 测试浏览器是否支持以上特性。

接入前准备

准备账号

提交开通申请 后,再联系我们工程师创建账号和ID;您需要提供如下资料,我们创建完成后会邮件同步您相关接入资料。
您在腾讯云账号的 APPID(控制台查看路径:账号中心 > 账号信息 > 基本信息 > APPID)。

配置 CDN

对于直播 HLS 业务,需要您的 HLS 域名支持 ts range 请求,详细请参见 RANGE CORS 配置

接入中: 如何接入

接入的步骤为
1. 根据我们提供的参数,创建 SDK 实例。
2. 根据播放器接入指南对接。
3. SDK 生命周期管理。播放器销毁/更换 m3u8/SDK 错误时销毁 SDK 实例。
具体接口使用方式可以参见 API 文档
针对常见的播放器, 我们已经进行了接入, 可以根据详细文档对接。
接入TCPlayer,通过 xp2pConfig 开启

接入后: 对接入结果进行确认

启动是否正常
销毁是否正常
确认是否有 P2P 分享
您可以监听 SDK 的日志接口,获取相关日志。

直播 HLS CORS 配置

直播场景下,SDK 需要 CDN 对 ts 请求支持 range,因此除正常 CORS 配置外,ts 请求需要支持如下配置以支持 range 请求,如何配置可以咨询对应的 cdn 厂商。

配置要求

1. ts 的请求需要支持OPTIONS请求,并且返回的状态码是:2xx。
2. ts 的 OPTIONS 请求响应头中需要携带:
Access-Control-Allow-Headers:Range
Access-Control-Allow-Methods:GET,OPTIONS
3. ts 的请求支持 HTTP range 可以使用我们部署的页面来确认是否配置成功 在线HLS range支持测试工具,需要注意的是,如果您的 HLS 拉流域名限制了 Referer,则会测试报错,需要进一步单独测试。

配置含义(参考 MDN)

OPTIONS request
Access-Control-Allow-Methods
Access-Control-Allow-Headers
Access-Control-Request-Headers

FAQ

资源 ID 生成规则

资源 ID 用来唯一标识一个HLS视频, 通常由 m3u8 URL 生成。对于资源 ID 相同的视频,SDK 内部会进行 P2P 数据分享。因此为了避免串流,请务必确保具有完全相同 ts 文件的视频,才会生成相同的资源 ID。
说明:
如果您播放器播放的 m3u8 是多码率视频,那么可以直接使用多码率 m3u8 生成资源 ID,SDK 内部会通过 P2P 获取当前正在播放的码率。

主动传入

您可以通过设置参数channelId字段,主动为当前视频指定一个资源 ID。

默认生成

如果您没有传入channelId字段, SDK 会默认为每一个 URL 生成一个资源 ID,channelId 生成规则如下:
例如: https://a.b.com/p1/p2/p3.m3u8?m=1&n=2
(默认) 截取 host 和 path 部分生成 MD5, 即 资源 ID = MD5("a.b.com/p1/p2/p3.m3u8")
(可选, 默认为 true) 通过传入channelIdWithHost参数,可以包含 host 部分;即,资源 ID = MD5("a.b.com/p1/p2/p3.m3u8")
(可选, 默认为 false) 通过传入channelIdWithSearch参数,可以包含 search 部分;即,资源 ID = MD5("/p1/p2/p3.m3u8?m=1&n=2")
可以通过组合上述参数来生成适合的资源 ID。