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