介绍
腾讯云 H5-P2P HLS 直播点播解决方案,可帮助用户直接使用经过大规模验证的直播流媒体分发服务。用户可通过 SDK 中简洁的接口快速同自有应用集成,实现 H5 P2P 直播功能。
接入原理:将播放器的 ts 请求导向 p2p SDK,SDK 内部会调度使用 p2p 网络下载或者直接从 ts URL 下载,然后返回播放器。
SDK 名称 | XP2P H5 端 HLS SDK |
版本号 | V1.6.37 |
SDK 介绍 | 为直播、点播、下载等场景的内容分发网络提供 P2P 点到点对等网络内容共享加速 |
开发者 | 腾讯云计算(北京)有限责任公司 |
个人信息处理规则 | |
下载 SDK |
运行条件
SDK 运行需要浏览器支持以下特性
WebRTC
WebSocket
service worker(iOS)
浏览器版本要求 | 桌面 |
Chrome | 55+ |
Firefox | 65+ |
Safari | 11+ |
Edge | 16+ |
IE | 不支持 |
浏览器版本要求 | 移动端 |
iOS Safari | 支持 service worker 接入 |
iOS 微信 | 不支持 |
Android 微信 | 支持 |
说明:
接入前准备
准备账号
您在腾讯云账号的 APPID(控制台查看路径:账号中心 > 账号信息 > 基本信息 > APPID)。
配置 CDN
接入中: 如何接入
接入的步骤为
1. 根据我们提供的参数,创建 SDK 实例。
2. 根据播放器接入指南对接。
3. SDK 生命周期管理。播放器销毁/更换 m3u8/SDK 错误时销毁 SDK 实例。
针对常见的播放器, 我们已经进行了接入, 可以根据详细文档对接。
接入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。