全部产品

PCDN SDK Android版手册

更新时间:2020-11-06 11:00:07

本文为您介绍Android SDK使用说明和操作步骤。

概述

PCDN支持点播和直播的P2P加速服务,采用独立进程的方式运行,即使崩溃也不影响APP主进程的使用,请根据自身需求配置使用点播、大文件下载和直播服务。

系统版本要求

Android2.3及以上(API>=9)

SDK集成步骤

  1. 在工程中,创建libs文件夹,将所需的aar开发包拷贝到文件中。

    在工程的bulid.gradle中,添加对aar开发的引用。

    repositories {
    
        flatDir {
            dirs 'libs'
        }
    }
    dependencies {
        compile(name: 'pcdn-phone-1.0.5', ext: 'aar')
    }
    defaultConfig {
         ........
         ndk {
         // SDK提供如下支持的 SO 库构架,您可以根据自己应用实际支持的情况来设置
         abiFilters 'armeabi','armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
            }
        }
  2. 配置AndroidManifest.xml

    配置权限

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

    配置Service

    <!-- 配置对应服务Service  PcdnVodService:点播/下载,PcdnLiveService:直播-->
     <service android:name="com.edge.pcdn.PcdnVodService"
                android:process=":PcdnVodService"/>
     <service android:name="com.edge.pcdn.PcdnLiveService"
                android:process=":PcdnLiveService"/>
  3. SDK使用示例

    推荐在Application.OnCreate()中启动PCDN服务,一般不需要Stop。在播放之前使用PCDNAddress()接口去转换播放地址开始播放。PCDNManager负责启动PCDN服务,停止服务,加速地址转换,暂停PCDN服务,恢复PCDN服务,获取版本。

    启动PCDN服务

    public class MyApplication extends android.app.Application {
    
    	@Override
    	public void onCreate() {
    		super.onCreate();
    		PcdnManager.start(this,PcdnType.VOD, 
    		"申请的token",null,null,null);
    	}
    }

    阿里云账号各端token查看方式:下单完成后,用户登录PCDN控制台,可以在设置模块查询到各终端token。

    获取PCDN服务地址

    //使用加速功能,必须通过SDK把地址转换成加速地址
     private void onPlay(){
          String url ="视频文件URL";
          //把视频文件地址转换成PCDN服务地址 http://127.0.0.1:8090/xxxxx
          url = PcdnManager.PCDNAddress(PcdnType.VOD,url);
          mediaPlayer.play(url);
      }

接口使用

启动PCDN服务

启动PCDN服务是一个异步过程(耗时大概在50ms),所以建议在APP启动之后立即启动PCDN服务,以保证在需要使用的时候已经做好加速准备。

方法

PcdnManager.start(Context context,String type,String token,String cacheDir,String pid,String ext)

参数说明

参数

类型

是否必须

说明

context

Context

建议使用Application 的Context对象。

type

String

需要启动的PCDN服务类型。取值:

  • PcdnType.VOD:点播。

  • PcdnType.DOWN:下载。

  • PcdnType.LIVE:直播。

token

String

阿里云分配的token

cacheDir

String

可为null,指定配置文件缓存目录的绝对路径,一般无需指定,默认采用Android/data/包名 /cache/目录,支持系统卸载自动清除。

pid

String

APP渠道编号,使用渠道编号,可通过云端对不同渠道的APP进行统计和控制,若不区分渠道可使用null。

ext

String

可为null,预留扩展参数。

返回值

无。

使用示例

PCDNManager.start(this,PCDNType.VOD,"your token", null,null,null);

停止PCDN服务

不建议调用此函数,PCDN服务没有任务的时候不会工作,在后台保持等待。

方法

PcdnManager.stop(String type)

参数说明

参数

类型

是否必须

说明

type

String

需要停止的PCDN服务类型。取值:

  • PcdnType.VOD:点播。

  • PcdnType.DOWN:下载。

  • PcdnType.LIVE:直播。

返回值

无。

使用示例

PcdnManager.stop(PCDNType.VOD)

地址转换

将普通视频文件URL转换为加速之后的URL,播放器采用加速之后的URL进行播放,若调用该接口时PCDN服务还没准备好,则会返回传入的视频文件URL,以保证不影响原播放体验。

方法1

PcdnManager.PCDNAddress(String type,String url)

参数说明

参数

类型

是否必须

说明

type

String

PCDN服务类型。取值:

  • PcdnType.VOD:点播。

  • PcdnType.DOWN:下载。

  • PcdnType.LIVE:直播。

url

String

需要加速的视频文件URL http://www.aliyun.com/a.mp4 --> http://127.0.0.1:8090/a.mp4。

返回值

String 若PCDN服务正常工作则返回加速之后的视频文件URL,若还在启动中或不可用等其他情况则返回原视频文件URL。

使用示例

String url = PcdnManager.PCDNAddress(PCDNType.VOD,"your url")**

方法2

String PcdnManager.PCDNAddress(String type ,String url,int rank,String ext)

参数说明

参数

类型

是否必须

说明

type

String

PCDN服务类型。取值:

  • PcdnType.VOD:点播。

  • PcdnType.DOWN:下载。

  • PcdnType.LIVE:直播。

url

String

需要加速的视频文件URL http://www.aliyun.com/a.mp4 --> http://127.0.0.1:8090/a.mp4。

rank

int

下载速度,默认不限速,默认值为0,限速单位KB/s。

ext

String

预留扩展,不需要可传 null。

返回值

String 若PCDN服务正常工作则返回加速之后的视频文件URL,若还在启动中或不可用等其他情况则返回原视频文件URL。

使用示例

String url = PcdnManager.PCDNAddress(PCDNType.VOD,"your url","your rank",null)

注:方法1默认不限速m3u8格式下载,相对路径列表经过地址转换后会返回可直接下载的全路径,不需要再去拼接。 例: 原始m3u8列表地址。

#EXT-X-KEY:METHOD=AES-128,URI="/mykey.key",IV=0x000000
#EXTINF:5.051444,
xxx/output0.ts
#EXTINF:5.005011,
xxx/output1.ts

pcdn下载后的m3u8地址。

#EXT-X-KEY:METHOD=AES-128,URI="http://cdn.xxx.com/mykey.key",IV=0x000000
#EXTINF:5.051444,
http://127.0.0.1:8908/pcdn/s/100/1/aHR0cDov/cdn.xxx.com/201701/a/xxx/output0.ts
#EXTINF:5.005011,
http://127.0.0.1:8908/pcdn/s/100/2/aHR0cDov/cdn.pcdnv.xxxx.net/201701/a/xxx/output1.ts

使用示例

String pcdnVersion = PcdnManager.getVersion(PCDNType.VOD);

获取信息

方法

PcdnManager.PCDNGet(String type,String key,String defaultValue)

参数说明

参数

类型

是否必须

说明

type

String

PCDN服务类型。取值:

  • PcdnType.VOD:点播。

  • PcdnType.DOWN:下载。

  • PcdnType.LIVE:直播。

key

String

version 获取PCDN 内核版本号max-upload-bandwidth 上行最大速率(单位:KB/s)total-download-from-cdn 从CDN网络下载流量,单位MBtotal-download-from-p2p 从P2P网络下载流量,单位MB total-upload-size 本次生命周内上传总流量,单位MB。

defaultValue

String

未获取到,返回的默认值。

返回值

String 获取到的信息。

使用示例

String pcdnVersion = PcdnManager.PCDNGet(PCDNType.VOD,"total-download-from-p2p","default");

设置信息

方法

PcdnManager.PCDNSet(String type,String keyValue)

参数说明

参数

类型

是否必须

说明

type

String

PCDN服务类型。取值:

  • PcdnType.VOD:点播。

  • PcdnType.DOWN:下载。

  • PcdnType.LIVE:直播。

keyValue

String

设置格式:"k1=v1&k2=v1",暂时只支持is,ss服务的域名的设置,其key值为pcdn-domain。

返回值

int 设置成功与否返回值,成功返回0。

使用示例

String pcdnVersion = PcdnManager.PCDNSet(PCDNType.VOD,String "pcdn-domain");

获取版本号

方法

PcdnManager.getVersion (String type)

参数说明

参数

类型

是否必须

说明

type

String

PCDN服务类型。取值:

  • PcdnType.VOD:点播。

  • PcdnType.DOWN:下载。

  • PcdnType.LIVE:直播。

返回值

String PCDN服务版本号。