更新记录
2.0.1(2022-01-26) 下载此版本
修复ios插件云打包报错
2.0.0(2022-01-21) 下载此版本
安卓更新至官方最新版 增加IOS支持 目前安卓 IOS WEB已经可以全面互通
1.0.1(2021-05-08) 下载此版本
第一版发布
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 11.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:支持 | 适用版本区间:9 - 15 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
插件简介
APP视频/直播、文件下载省流量&加速神器
P2P技术使观看相同内容的用户之间可以相互分享数据,不仅能有效降低视频/直播的带宽成本,还可以提升用户的播放体验,降低卡顿、二次缓存的发生率。本SDK传输能力基于WebRTC Datachannel,可以与CDNBye的Web端插件互联互通,大大提高了P2P网络中的节点数量,打破了浏览器与移动端APP的隔阂,实现了真正意义上的全平台流媒体加速。只需要几行代码即可快速集成到现有项目中,配置自由度高,支持任何播放器。
提示
IOS版底层正在更新2.0版,uniapp ios插件待底层更新完成后发布
该插件的优势如下:
- 可与CDNBye Web端和IOS端SDK互联互通
- 支持基于HLS流媒体协议(m3u8)的直播和点播场景
- 支持基于MPEG-DASH流媒体协议的直播和点播场景
- 支持加密HLS传输和防盗链技术
- 支持MP4点播场景
- 支持文件下载
- 支持文件缓存从而避免重复下载
- 支持任何播放器
- 通过预加载形式实现P2P加速,完全不影响用户的播放体验
- 高可配置化,用户可以根据特定的使用环境调整各个参数
- 通过有效的调度策略来保证用户的播放体验以及p2p分享率
- Tracker服务器根据访问IP的ISP、地域和NAT类型等进行智能调度
Demo
下载原生版测试 demo.apk
使用方法
第一步:引入模块
//引入cdnbye原生模块
var cdnbye = uni.requireNativePlugin("cdnbye-p2p");
//引入全局事件模块
var globalEvent = uni.requireNativePlugin('globalEvent');
第二步:初始化插件
简单使用 只需要传入p2ptoken 在cdnbye官网注册获取的token 参考如何获取token
cdnbye.init({p2ptoken:'你在cdnbye官网获取的token'},(res)=>{
console.log('init',res);
});
高级使用可传递如下参数
{
p2ptoken:'你在cdnbye官网获取的token'
announce:"https://tracker.cdnbye.com/v1", // tracker服务器地址
wsSignalerAddr:"wss://signal.cdnbye.com", // 信令服务器地址
downloadTimeout:30000, // HTTP下载ts文件超时时间毫秒
dcDownloadTimeout:6000, // datachannel下载二进制数据的最大超时时间
diskCacheLimit:1024*1024*1024, // 点播模式下P2P在磁盘缓存的最大数据量(设为0可以禁用磁盘缓存)
memoryCacheCountLimit:30, // P2P在内存缓存的最大数据量,用ts文件个数表示
httpHeaders:null, // 设置请求ts和m3u8时的HTTP请求头
waitForPeer:false, // 优先尝试从对等端下载前几片数据,可以提高P2P比例,但可能会增加起播延时
waitForPeerTimeout:4500, // waitForPeer的超时时间,超时后恢复从http下载
httpLoadTime:2000, // P2P下载超时后留给HTTP下载的时间
}
第三步:注册事件监听
会收到如下事件:
连接tracker服务器状态
http下载流量
p2p下载流量
p2p上传流量
连接的节点信息
globalEvent.addEventListener('statistics', function(e) {
console.log('statistics:'+JSON.stringify(e));
});
第四步:将原始播放地址转换成P2P播放地址,并赋值给播放器
- videoId参数可不填,将默认使用去除查询参数的url
- 如果传入videoId参数请保证每个视频地址的ID唯一
this.videourl=cdnbye.getP2PUrl({"url":this.videourl,"videoId":'如果传入此参数请保证每个视频地址的ID唯一'}); console.log('转换后的P2P播放地址',this.videourl);
API接口
1.初始化
cdnbye.init({ p2ptoken:'你在cdnbye官网获取的token' announce:"https://tracker.cdnbye.com/v1", // tracker服务器地址 wsSignalerAddr:"wss://signal.cdnbye.com", // 信令服务器地址 downloadTimeout:30000, // HTTP下载ts文件超时时间毫秒 dcDownloadTimeout:6000, // datachannel下载二进制数据的最大超时时间 diskCacheLimit:1024*1024*1024, // 点播模式下P2P在磁盘缓存的最大数据量(设为0可以禁用磁盘缓存) memoryCacheCountLimit:30, // P2P在内存缓存的最大数据量,用ts文件个数表示 httpHeaders:null, // 设置请求ts和m3u8时的HTTP请求头 waitForPeer:false, // 优先尝试从对等端下载前几片数据,可以提高P2P比例,但可能会增加起播延时 waitForPeerTimeout:4500, // waitForPeer的超时时间,超时后恢复从http下载 httpLoadTime:2000, // P2P下载超时后留给HTTP下载的时间 },(res)=>{ console.log('init',res); });
2.注册事件监听及统计信息
globalEvent.addEventListener('statistics', function(e) { console.log('statistics:'+JSON.stringify(e)); });
3.转换为P2P播放地址
let p2pVideourl=cdnbye.getP2PUrl({"url":"https://wowza.peer5.com/live/smil:bbb_abr.smil/chunklist_b591000.m3u8","videoId":'b591000'});
##完整实例代码
```javascript
//引入cdnbye原生模块
var cdnbye = uni.requireNativePlugin("cdnbye-p2p");
//引入全局事件模块
var globalEvent = uni.requireNativePlugin('globalEvent');
export default {
data() {
return {
//原始播放地址:'https://wowza.peer5.com/live/smil:bbb_abr.smil/chunklist_b591000.m3u8'
videourl: 'https://wowza.peer5.com/live/smil:bbb_abr.smil/chunklist_b591000.m3u8'
}
},
onLoad() {
/*
初始化话cdnbye插件
简单使用 只需要传入p2ptoken
在cdnbye官网注册获取的token 参考[如何获取token](http://www.cdnbye.com/cn/views/bindings.html#%E7%BB%91%E5%AE%9A-app-id-%E5%B9%B6%E8%8E%B7%E5%8F%96token)
高级使用可传递参数
{
p2ptoken:'你在cdnbye官网获取的token'
announce:"https://tracker.cdnbye.com/v1", // tracker服务器地址
wsSignalerAddr:"wss://signal.cdnbye.com", // 信令服务器地址
downloadTimeout:30000, // HTTP下载ts文件超时时间毫秒
dcDownloadTimeout:6000, // datachannel下载二进制数据的最大超时时间
diskCacheLimit:1024*1024*1024, // 点播模式下P2P在磁盘缓存的最大数据量(设为0可以禁用磁盘缓存)
memoryCacheCountLimit:30, // P2P在内存缓存的最大数据量,用ts文件个数表示
httpHeaders:null, // 设置请求ts和m3u8时的HTTP请求头
waitForPeer:false, // 优先尝试从对等端下载前几片数据,可以提高P2P比例,但可能会增加起播延时
waitForPeerTimeout:4500 // waitForPeer的超时时间,超时后恢复从http下载
httpLoadTime:2000, // P2P下载超时后留给HTTP下载的时间
}
*/
cdnbye.init({p2ptoken:'你在cdnbye官网获取的token'},(res)=>{
console.log('init',res);
});
/*
监听cdnbye
会返回
连接tracker服务器是否成功
http下载流量
p2p下载流量
p2p上传流量
连接的节点信息
*/
globalEvent.addEventListener('statistics', function(e) {
console.log('statistics:'+JSON.stringify(e));
});
},
methods: {
p2p(){
/**
* 转换原始播放地址为P2P播放地址
* videoId不填,将默认使用去除查询参数的url
* 将获得的P2P播放地址传递给播放器即可
*/
this.videourl=cdnbye.getP2PUrl({"url":this.videourl,"videoId":'如果传入此参数请保证每个视频地址的ID唯一'});
console.log('p2pVideoUrl',this.videourl);
},
}
}
官网
http://www.cdnbye.com/