腾讯云X-P2P接入说明_音视频解决方案_同尘科技

X-P2P 2年前 (2023-12-28) 浏览 343

介绍

腾讯云 H5-P2P HLS 直播点播解决方案,可帮助用户直接使用经过大规模验证的直播流媒体分发服务。用户可通过 SDK 中简洁的接口快速同自有应用集成,实现 H5 P2P 直播功能。
接入原理:将播放器的 ts 请求导向 p2p sdk, sdk 内部会调度使用 p2p 网络下载或者直接从 ts url 下载, 然后返回播放器。

SDK 名称 XP2P H5 端 HLS SDK
版本号 V1.6.37
SDK 介绍 为直播、点播、下载等场景的内容分发网络提供 P2P 点到点对等网络内容共享加速
开发者 腾讯云计算(北京)有限责任公司
个人信息处理规则 XP2P SDK 隐私保护协议
下载 SDK 单击下载 H5 HLS SDK 压缩包

运行条件

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

WEB RTCwebsocketservice 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 文档针对常见的播放器, 我们已经进行了接入, 可以根据详细文档对接接入 hls.js接入 video.js(vhs)接入 service worker(iOS)接入TCPlayer,通过 xp2pConfig 开启接入其他播放器

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

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

直播 HLS CORS 配置

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

配置要求

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

配置含义(参考 MDN)

OPTIONS request

https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request

Access-Control-Allow-Methods

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods

Access-Control-Allow-Headers

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers

Access-Control-Request-Headers

https://developer.mozilla.org/en-US/docs/Web/HTTP/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

对音视频的解决方案有疑惑?想了解解决方案收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案

- 0人点赞 -

发表点评 (0条)

not found

暂无评论,你要说点什么吗?