腾讯云 X-P2P 解决方案,可帮助用户直接使用经过大规模验证的直播、点播、文件分发服务,通过经商用验证的 P2P 服务大幅节省带宽成本,提供更优质的用户体验。开发者可通过 SDK 中简洁的接口快速同自有应用集成,实现 iOS 设备上的 P2P 加速功能。
传统 CDN 加速服务中,客户端向 CDN 发送 HTTP 请求获取数据。在腾讯云 X-P2P 服务中,SDK 可以视为下载代理模块,客户端应用将 HTTP 请求发送至 SDK,SDK 从 CDN 或其他 P2P 节点获取数据,并将数据返回至上层应用。SDK 通过互相分享数据降低 CDN 流量,并通过 CDN 的参与,确保了下载的可靠性。
说明:SDK 支持多实例,即支持同时开启多个直播 P2P。
当前 iOS SDK 支持如下 ABI 架构:
platform :ios, '9.0'
target 'RTMPiOSDemo' do #这里需要修改成自己的target工程
use_frameworks!
pod 'xnet', :git => 'https://github.com/tencentyun/xnet-ios-sdk.git', :tag => "release-lastest"
end
pod install
如果您是更新版本请执行:pod update
open RTMPiOSDemo.xcworkspace #您需要打开自己的xcworkspace
xnet.framework
。Xode -> General -> "Framework, Libraries, and Embedded Content"
添加 xnet.framework
。腾讯云对接人员会提供 iOS 项目的 Bundle identifier,并索取 App ID
、App Key
、App Secret Key
,如以下形式:
Bundle identifier:com.qcloud.helloworld
NSString *appID = @"your_appID";
NSString *key = @"your_key";
NSString *secret = @"your_secret";
TencentXP2P.zip
文件得到 TencentXP2P.framework
,并在项目中引用。XP2PModule
,并随后初始化 P2P SDK。// Example: 程序的入口AppDelegate.m
#import "AppDelegate.h"
#import <TencentXP2P/TencentXP2P.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// do something other...
//下面的接口调用可以开启SDK log的打印,不调用该接口,log打印默认不开启
[XNet enableDebug]
NSString *appID = @"your app id";
NSString *key = @"your app key";
NSString *secret = @"your app secret";
bool ok = [XNet initWith:appID appKey:key appSecretKey:secret];
return YES;
}
- (void)onLogPrint:(NSString*)msg {
//这里能够收到SDK输出的日志
}
@end
- (int)startPlay:(NSString*)url
{
// 将resource之前的 域名/路径 内容替换为 [XP2PModule host] 即可,例如
// 原先是,http://example.cdn.com/live/streamid.flv?token=xxx
// 转换成,http://127.0.0.1:16080/live.p2p.com/example.cdn.com/live/streamid.flv?token=xxx
NSString* p2pUrl = [url stringByReplacingOccurrencesOfString:@"http://" withString:
[XNet proxyOf:@"live.p2p.com"]];
NSString *codecID = @"_h265";
NSString *stremaid = [[url lastPathComponent] stringByDeletingPathExtension];
NSString *xresid = [NSString stringWithFormat:@"%@_%@", stremaid, codecID];
NSString* param = [NSString stringWithFormat:@"?xresid=%@", xresid];
p2pUrl = [p2pUrl stringByAppendingString:param];
// 直接播放此url即可
[_player startPlay:p2pUrl];
return EXIT_SUCCESS;
}
卸载一个频道。
- (int)stopPlay
{
// 播放器链接断开以后 SDK内部会自动释放频道相关的资源, 直接关闭播放器即可
[_player stopPlay];
return EXIT_SUCCESS;
}
bool ok = [XNet resume];
以上是一个播放器使用 P2P 的基本调用,完成上述调用后您就可以使用 P2P 为播放器提供服务了,但一个更加完善的客户端还需要做以下工作:
这些设置您需要以 HTTP 请求的方式告知 SDK 代理服务,调用 API 请参见 API 说明。
资料图 “引导新能源汽车产业有序发展,推动建立新能源汽车全国统一市场,提高产...
案例背景 天弘基金作为国内总规模最大的公募基金,阿里云MaxCompute为我们构建了...
还是容器里编译比较快。提供一份在容器里成功编译出来 impalad 的日志。 docker ...
2018年是开源软件历史上最精彩的一年,2个IPO加上5个并购,开源技术到达新的高度...
维护一个规模适中且价格合理的存储架构是一个持续的过程。为了更有效地利用存储...
前提: 数据样本符合标准正态分布,正态分布的核心是中心极限定理即:如果一个事...
您可以通过OSS API的 GetBucketLocation 接口获取存储空间(Bucket)所属的地域...
由于业务需要开发了微信域名检测,运营小伙伴反应链接多了,一个一个检测很麻烦...
随着2019年即将结束,许多企业高管正在为未来一年制定计划。如果企业正在考虑是...
1. 接口描述 接口请求域名: tke.tencentcloudapi.com 。 创建托管集群外网访问...