接入说明

最近更新时间:2024-08-23 10:23:11

我的收藏

介绍

腾讯云 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 运行需要浏览器支持以下特性

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

接入前准备

准备账号

提交 X-P2P 开通申请 后, 再联系我们工程师创建账号和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