P2P配置 
P2pEngine 
实例化P2pEngine,获得一个全局单例:
javascript
//初始化
function initP2p (token:string,configOptions:ConfigOptions|null=null):void参数说明: 
| 参数 | 类型 | 是否必须 | 说明 | 
|---|---|---|---|
| token | string | 是 | CDNBye分配的token。 | 
| config | ConfigOptions | 否 | 自定义配置。 | 
获取P2P地址或者切换源 
当播放或切换到新的播放地址时,只需要将新的播放地址传给插件,从而获取新的本地播放地址:
javascript
function  getP2pUrl(url : string, videoId:string|null=null, mimeType:string|null=null) : string参数说明: 
| 参数 | 类型 | 是否必须 | 说明 | 
|---|---|---|---|
| url | string | 是 | 未经过转换的原始播放地址 | 
| videoId | string | 否 | 传入此参数将使用videoId构造channelId,其他端需要保持一致 | 
| mimeType | string | 否 | 传用于无".m3u8"或".mpd"后缀的url,传入字符串"m3u8"或"mpd" | 
P2pEngine API 
javascript
//当前插件的版本号。
function getP2pEngineVersion():string
//是否已与CDNBye后台建立连接。
function p2pIsConnected():boolean
//立即停止P2P加速并释放资源,一般只需要在退出APP的时候调用即可。SDK采用"懒释放"的策略,只有在重启p2p的时候才释放资源。对于性能较差的设备起播耗时可能比较明显,建议在视频播放之前提前调用 engine.stopP2p() 。
function stopP2p():void
//重启P2P加速服务,一般不需要调用。
function restartP2p():boolean
//获取对等连接的id。
function peerId():string
//动态设置请求ts和m3u8时的HTTP请求头。
function setHttpHeadersForHls(headers: Map<String, String>):void
//动态设置请求Dash文件时的HTTP请求头。仅安卓
function setHttpHeadersForDash(headers: Map<String, String>):void
//运行时动态关闭P2P,在播放下一个媒体文件时才生效。
function disableP2p():void
//运行时动态开启P2P,在播放下一个媒体文件时才生效。
function enableP2p():void
//停止P2P并关闭代理服务器。
function shutdownP2p():voidP2P 统计 
typescript
import { onP2pStats, StatsObject } from "@/uni_modules/cdnbye-swarmcloud";
onReady() {
    onP2pStats((stats: StatsObject) => {
        console.log(stats.serverConnected)
        console.log(stats.httpDownloaded)
        console.log(stats.p2pDownloaded)
        console.log(stats.p2pUploaded)
        console.log(stats.peers)
    })
}WARNING
下载和上传数据量的单位是 KB。
解决动态 m3u8 路径问题 
某些流媒体提供商的 m3u8 是动态生成的,不同节点的 m3u8 地址不一样,例如 example.com/clientId1/streamId.m3u8 和 example.com/clientId2/streamId.m3u8, 而本插件默认使用 m3u8 地址(去掉查询参数)作为 channelId。这时候就要构造一个共同的 chanelId,使实际观看同一直播/视频的节点处在相同频道中。构造 channelId 方法如下:
typescript
// 根据url构造videoId
const videoId = extractVideoIdFromUrl(originalUrl);     // extractVideoIdFromUrl 需要自己定义,可以抽取url中的视频ID作为结果返回
const url = getP2pUrl(originalUrl, videoId);WARNING
如果要与其他平台互通,则必须确保两者拥有相同的 token 和 channelId 。
设置 HTTP 请求头 
出于防盗链或者统计的需求,有些 HTTP 请求需要加上 referer 或者 User-Agent 等头信息,可以通过 httpHeadersForHls 进行设置:
typescript
import { ConfigOptions,initP2p,getP2pUrl,getP2pEngineVersion,p2pIsConnected,stopP2p, onP2pStats, StatsObject, setHttpHeadersForHls } from "@/uni_modules/cdnbye-swarmcloud";
const headers = new Map<string, string>();
headers.set('referer' ,'xxx');
headers.set('User-Agent' ,'xxx');
setHttpHeadersForHls(headers);
const url = getP2pUrl(originalUrl);