2 快速集成

接入之前需要在 Polyv 官网 中注册完毕,并开通云点播服务。

1. Gradle 配置

1、在 Projectbuild.gradle 文件中添加 maven仓库

allprojects {
    repositories {
        google()
        //阿里云的镜像库
        maven {url "http://maven.aliyun.com/nexus/content/groups/public/"}
        maven {url 'http://maven.aliyun.com/nexus/content/repositories/releases/'}
        mavenCentral()
        //阿里云效关于central的镜像
        maven{
            url 'https://maven.aliyun.com/repository/public'
        }
        //阿里云效仓库,必须添加
        maven {
            credentials {
                username '609cc5623a10edbf36da9615'
                password 'EbkbzTNHRJ=P'
            }
            url 'https://packages.aliyun.com/maven/repository/2102846-release-8EVsoM/'
        }
    }
}

2、在 appbuild.gradle 文件中添加 ndk 声明

android {
    ...
    defaultConfig {
        ...
        ndk {
            abiFilters 'arm64-v8a', 'armeabi-v7a', 'armeabi', 'x86_64', 'x86'
        }
    }
    ...
}

abiFilters 可以按实际情况筛选,建议配置为 arm64-v8a、armeabi-v7a、x86不要仅使用 armeabi,仅使用armeabi可能会在部分机型上出现音画不同步、跳秒播放等异常情况。

3、在 appbuild.gradle 文件中添加依赖:

implementation 'com.android.support:support-annotations:27.1.1'
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:design:27.1.1'
implementation 'com.android.support:multidex:1.0.3'

implementation 'net.polyv.android:polyvPlayer:2.22.1'//SDK核心包
implementation 'net.polyv.android:polyvDownload:2.22.1'//SDK下载功能
implementation 'net.polyv.android:polyvUpload:2.22.1'//SDK上传功能
implementation 'net.polyv.android:polyvSub:2.22.1'//弹幕、截图功能中使用

implementation 'de.hdodenhof:circleimageview:2.2.0'//圆形imageview,音频封面图使用
implementation 'com.github.bumptech.glide:glide:4.7.1'//demo中的ppt图片加载使用
implementation "com.daimajia.swipelayout:library:1.2.0@aar"//demo中下载列表使用

// 投屏SDK自点播2.15.0起不再维护,相关实现已经转移到Demo,详细请查看Wiki-7.视频投屏
// 投屏sdk
implementation files("libs/wx-commonlib-1.0.1.aar")
implementation files("libs/wx-dlnasdk-1.1.5.aar")
implementation files("libs/wx-dlnasender-1.1.5.aar")
implementation files("libs/wx-jettylib-1.0.1.aar")

SDK 核心包是视频播放必须要使用的包,其他依赖可以按照实际需求导入。若引入库过多导致超过64k方法数限制,可参考 Demo 解决方案。

2 配置 AndroidManifest.xml

1、在应用程序的 AndroidManifest.xml 文件中添加相应的权限:

<!-- 基础权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_LOGS" />
<!-- WRITE_EXTERNAL_STORAGE属于android6.0运行时权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- Android 10 起需要精确定位才能获取wifi详细信息  -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

注1:2.18.0以前版本,如需适配Android 11,即targetSdkVersion>=30,需要关闭指针标记功能(Android官方关于指针标记的说明),参考以下代码修改AndroidManifest.xml以关闭指针标记。

  <application 
    android:allowNativeHeapPointerTagging="false">
    ...
  </application>

3. 初始化 SDK

3.1 获取 SDK 加密串

SDK加密串在官网 云点播-设置-API接口 里面可见。更多说明见 初始化-设置SDK。

注意保利威后台提供的 SDK加密串 只是一种固定的加密方式,仅做演示使用。 对于设置SDK加密串,开发者应当使用自己的加密方式,具体可见正式使用解决方案

3.2 初始化SDK

注意:在集成2.16.5.1及之后的版本,需要在获取用户隐私授权的前提下,在适当的时机做httpdns启动。以demo中为例:在PolyvMainActivity 中调用 PolyvSDKClient.getInstance().enableHttpDns()方法来启动httpdns。

PolyvSDKClient.getInstance().enableHttpDns(true);

在应用程序启动的 Application 的 onCreate() 方法中对 SDK 进行初始化。

//获取 PolyvSDKClient实例
PolyvSDKClient client = PolyvSDKClient.getInstance();
//设置SDK加密串
client.settingsWithConfigString("你的SDK加密串", "加密密钥", "加密向量");
//初始化SDK设置
client.initSetting(getApplicationContext());
//设置学员唯一标识
client.setViewerId("学员唯一标识");
//设置下载保存目录
PolyvSDKClient.getInstance().setDownloadDir("下载视频保存的目录");

4. 视频播放

视频的操作依赖于 VID,VID是视频的唯一识别标志。视频在后台上传成功后会自动生成VID 。

PolyvVideoView 是视频播放器的主类。在布局文件中声明并初始化完成后,通过 videoView.setVid(VID) 就可以实现视频的自动播放。

<com.easefun.polyvsdk.video.PolyvVideoView
	android:id="@+id/polyv_video_view"
	android:layout_width="match_parent"
	android:layout_height="match_parent"/>
PolyvVideoView videoView = findViewById(R.id.polyv_video_view);
videoView.setVid(vid);

5. 视频下载

下载的视频统一保存到 PolyvSDKClient.getInstance().setDownloadDir(File)设置的目录中。若没有设置将会无法下载保存。视频下载会根据VID、码率进行下载。PolyvDownloaderManager 是对视频下载操作的封装类,可对此进行视频下载的基本操作。

// 设置下载队列总数,多少个视频能同时下载。(默认是1,设置负数和0是没有限制)
PolyvDownloaderManager.setDownloadQueueCount(1);
//获取downloader
PolyvDownloader downloader = PolyvDownloaderManager.getPolyvDownloader(vid, bitrate);
//开始下载
downloader.start(getApplicationContext);

getPolyvDownloader() 方法会将下载视频任务保存到 Map 中,保证下载任务的唯一。该方法返回一个 PolyvDownloader 实例,是视频下载的具体实现类,可启动和关闭具体的下载任务。

Last updated