更新记录

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

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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/

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

作者未提供license.md

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问