腾讯云 X-P2P 解决方案,可帮助用户直接使用经过大规模验证的直播、点播、文件分发服务,通过经商用验证的 P2P 服务大幅节省带宽成本,提供更优质的用户体验。开发者可通过 SDK 中简洁的接口快速同自有应用集成,实现 Android 设备上的 P2P 加速功能。
传统 CDN 加速服务中,客户端向 CDN 发送 HTTP 请求获取数据。在腾讯云 X-P2P 服务中,SDK 可以视为下载代理模块,客户端应用将 HTTP 请求发送至 SDK,SDK 从 CDN 或其他 P2P 节点获取数据,并将数据返回至上层应用。SDK 通过互相分享数据降低 CDN 流量,并通过 CDN 的参与,确保了下载的可靠性。
SDK 名称 | XP2P Android 端 SDK |
版本号 | V1.3.5 |
SDK 介绍 | 为直播、点播、下载等场景的内容分发网络提供P2P点到点对等网络内容共享加速 |
开发者 | 腾讯云计算(北京)有限责任公司 |
个人信息处理规则 | |
下载 SDK |
说明
SDK 支持多实例,即支持同时开启多个不同资源的直播 P2P。
支持的架构
当前 Android SDK 支持如下 ABI 架构:
armeabi-v7a
arm64-v8a
x86
x86_64
添加依赖
通过 bintray 获取最新的 gradle 组件包:
implementation 'com.tencent.qcloud:xnet:release-lastest'
混淆配置
由于 native 层代码需要反射调回 java,需要确保 SDK 内的代码都不被混淆,请在 proguard 中添加以下配置:
-keep public class com.tencent.qcloud.** {*;}
接入步骤
步骤1:初始化
在 App 启动时初始化
XP2PModule
,并随后初始化 P2P SDK。// 初始化appId等关键客户信息final String APP_ID = "$your_app_id";final String APP_KEY = "$your_app_key";final String APP_SECRET = "$your_app_secret";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 返回值ok可用于统计p2p成功与失败// 无论成功与失败,都可以使用XNet.proxyOf与XNet.proxyOf// 失败时,XNet.proxyOf是""// 成功时,XNet.proxyOf是127.0.0.1:16080/${domain}bool ok = XNet.create(this, APP_ID, APP_KEY, APP_SECRET);//开启调试日志(发布可关闭)XNet.enableDebug();}
步骤2:接入直播 Live
直播播放控制 P2P(start/stop),操作如下:
1. 启动直播 P2P:
// 例如:http://domain/path/to/resource.flv?params=xxx// 变成:http://{XNet.proxyOf(domain)}/path/to/resource.flv?params=xxx// 要改的仅仅是在://后插入XNET.proxyOfString codecID = "_h265";String streamID = url.substring(url.lastIndexOf(("/") + 1));streamID = streamID.substring(0, streamID.indexOf("."));String xResID = streamID + codecID;String param = "?xresid=" + xResID; //该参数标识P2P资源String p2pURl = url.replace("http://", XNet.proxyOf("live.p2p.com"));p2pURl += param;// 通过获取的url, 播放器直接执行请求mediaPlayer.setDataSource(context, Uri.parse(p2pUrl), headers);mediaPlayer.prepareAsync();// 相关资源随着http请求关闭直接释放,无需再做任何处理//注意:该http请求可能会返回302
2. 由于后台监听限制的问题,resume 的情况下需要调用 resume 接口。
// 返回值ok代表着是否恢复成功bool ok = XNet.resume();